Estoy tratando de solicitar un token de acceso del gráfico con el siguiente alcance AppRoleAssignment.ReadWrite.All . Le he otorgado a la API los alcances requeridos, por lo que esto no debería ser un problema.
const ccrRequest = { scopes: ["https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All"], } const accessToken = await cca.acquireTokenByClientCredential(ccrRequest) El cca es una aplicación de ConfidentialClientApplication y he verificado tres veces que mi configuración es correcta.
Cuando intento adquirir mi alcance, aparece el siguiente error:
1002012 - [2021-09-15 12:15:42Z]: AADSTS1002012: el valor proporcionado para el ámbito https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All perfil de openid offline_access no es válido. Los flujos de credenciales de cliente deben tener un valor de alcance con /.default con el sufijo del identificador de recursos (URI de ID de aplicación).\r\n'
Obviamente, el error me dice que use el alcance ./default (que realmente no sé por qué). Pero de acuerdo con la documentación, el alcance ./default debería darme todos los alcances de mi aplicación. Sin embargo, esto no sucede:
0:'https://graph.microsoft.com/.default' 1:'openid' 2:'profile' 3:'offline_access' Arriba, están los ámbitos que se proporcionan con mi token de acceso cuando solicito el ámbito https://graph.microsoft.com/.default . Naturalmente, esto no representa los permisos que le he otorgado a mi API en el portal.
Cuando ejecuto mi solicitud fetch() , aparece el siguiente error:
Privilegios insuficientes para completar la operación.
¿Hay algo fundamental sobre el flujo de ClientCredentials que me estoy perdiendo aquí?
Debe ir a la pestaña de permisos de la API del registro de la aplicación, agregar el permiso de la aplicación (no el permiso delegado) que necesita en la API de Microsoft Graph y luego ejecutar el consentimiento del administrador como administrador de la aplicación como mínimo. Luego, debería poder usar el alcance /.default y obtener el permiso necesario en el reclamo de roles del token de acceso.
Los ámbitos Openid, profile y offline_access no tienen sentido en un escenario de credenciales de cliente. No hay ningún usuario, por lo que los ámbitos openid y de perfil no hacen nada. El alcance offline_access no es necesario ya que no necesita un token de actualización. Tiene las credenciales y puede usarlas siempre que necesite un nuevo token.