¿Cómo conectar una API personalizada usando OAuth2 propio en Microsoft Power Automate?

0

He intentado conectar Microsoft Power Automate a mi API. Mi API tiene un flujo de código OAuth2. Según Power Automate, el conector puede hacer una conexión a mi API. y ejecutar una prueba. Pero el problema es que Microsoft envía un token de portador que fue generado por ellos, y no el que les di a través de OAuth2, resultando en mi API dando un error 401 (token no válido) como se esperaba.

En la página del conector personalizado de Power Automate, en la pestaña de seguridad tengo lo siguiente:

Tipo de autenticación

OAuth2.0

Configuración de OAuth2.0

  • Proveedor de identidad: OAuth2 genérico
  • ID de cliente: SomeValue
  • ClientSecrect: SomeValue
  • URL de autorización: mydomain.com/auth/authorize
  • URL del token: mydomain.com/auth/token
  • Actualizar URL mydomain.com/auth/token
  • URL de redireccionamiento: microsoft-flow.com/redirect (no el real)

Cuando Microsoft realiza una solicitud POST a mydomain.com/auth/token, devuelvo el siguiente cuerpo:

{
access_token: "non JWT token", // simillar to a hash
refresh_token: "non JWT token",
expires_in: 3600
}

La solicitud anterior es la solicitud final que microsoft antes de aceptar como una conexión válida. El token que me envía microsoft es uno de JWT, no el que proporcioné.

He visto a algunos chicos usando la autenticación de Azure AD dentro de la aplicación, pero estaba tratando de implementar algo similar a otras plataformas (por ejemplo, Github, Spotify, etc.)

Entonces, mi pregunta, ¿es posible conectar Power Automate a una API personalizada con OAuth2? Si es así, ¿cómo hacerlo?

1

Es posible.

Además de la configuración de OAuth2.0 que enumeró, hay otra propiedad importante Scopeque se ha perdido.

Dado que su API está protegida en Azure AD, supongo que ha creado una aplicación de Azure AD para su API y ámbitos expuestos .

Después de eso, puede obtener el ID de la aplicación URI ( api://{clientId}) para su API.

Debe poner este valor en el "Ámbito" de Power Automate, así:

ingrese la descripción de la imagen aquí

Entonces este token de acceso será considerado válido por su API.

1
  • Tomaré esto en consideración. Gracias. De hecho, mi API tiene un inicio de sesión de Microsoft, pero usa un token personalizado para que sea accesible. Hice esto porque no sé si la API tendrá otros métodos de inicio de sesión. Si mi API se integrara con Microsoft, esta sería una práctica recomendada. Para mi problema específico publiqué la solución. Lucas Gomes 10 de enero a las 12:45
0

He realizado dos pasos para solucionar este problema.

Paso 1

Anteriormente, mi API devolvía el cuerpo con access_token, refresh_tokeny expires_in, pero luego agregué scopey token_type. Ejemplo:

{
  access_token: "2346ad27d7568ba9896f1b7da6b5991251debdf2",
  refresh_token: "4468e5deabf5e6d0740cd1a77df56f67093ec943",
  expires_in: 3600,
  scope: "none",
  token_type: "Bearer"
}

Paso 2

Elimine el conector personalizado y cree uno nuevo con los mismos parámetros. Cuando llegué a la sección "Prueba", Power automate finalmente pudo realizar la solicitud GET con éxito.

En mi caso, incluso si se actualizó la API, Power automate todavía estaba usando su token defectuoso, por lo que tuve que eliminar ese conector personalizado y crear uno nuevo.

Conclusión

Al actualizar la API y eliminar el antiguo conector personalizado, pude hacer que el conector funcionara.