El usuario o administrador no ha dado su consentimiento para usar la aplicación: envíe una request de autorización interactiva para este usuario y recurso

Estamos haciendo este proyecto de API web de CRM. El proyecto inicia session en la instancia en línea de Dynamics CRM y obtiene la list de counts.

El inicio de session parece estar sucediendo bien. Sin embargo, el listdo de counts muestra el siguiente error:

AADSTS65001: el usuario o administrador no ha dado su consentimiento para usar la aplicación con la identificación 'xxxx-xxxxx-xxxx-xxx'. Envíe una request de autorización interactiva para este usuario y recurso. ID de seguimiento: e3b360d6-39fb-4e61-87d9-26531f30fd7b Id. De correlación: 9b2cff0c-074e-44fe-a169-77c8061a7312 Indicación de date y hora: 2016-10-18 10: 12: 49Z

Los permissions están configurados correctamente :

Permisos de Azure

¿Cuál es el problema?

3 Solutions collect form web for “El usuario o administrador no ha dado su consentimiento para usar la aplicación: envíe una request de autorización interactiva para este usuario y recurso”

Un administrador debe dar su consentimiento a los permissions. Debe realizar una request de autorización a Azure AD que incluya el parámetro prompt=admin_consent .

Como en la documentation aquí , el parámetro prompt puede tener 3 valores: login, consent o admin_consent.

Por lo tanto, debe ir a una URL como https://login.microsoftonline.com/tenant-id/oauth2/authorize?client_id=app-client-id&networkingirect_uri=encoded-reply-url&response_type=code&prompt=admin_consent .

Reemplace el identificador de inquilino con el ID / nombre de dominio de inquilino de Azure AD o común si su aplicación es multicliente. Reemplace app-client-id con la ID de cliente de su aplicación. Reemplace la URL de respuesta codificada con una URL de respuesta codificada en la URL de su aplicación.

Una forma más fácil de build la URL que necesita es pasar por la authentication y simplemente tomar la URL en la barra de direcciones cuando llegue a Azure AD. Luego solo agrega &prompt=admin_consent a la URL.

EDITAR: con la última actualización del Portal de Azure, surgió la posibilidad de otorgar permissions directamente desde el portal.

Si va a Azure Active Directory en el nuevo portal, busque el logging de su aplicación allí y click Otorgar permissions debajo de la hoja de permissions requeridos.

Nuevo botón Permisos de concesión

Estaba obteniendo este error en una aplicación nativa usando ADAL. Había dado todos los permissions correctos, pero ya había recibido un token de un inicio de session anterior. Mi problema era que el token anterior era obsoleto y no contenía los reclamos actualizados. Para mí, la solución fue usar PromptBehavior.RefreshSession según el siguiente código.

  AuthenticationResult result = await authenticationContext.AcquireTokenAsync(resourceId, clientId, networkingirectURI, new PlatformParameters(PromptBehavior.RefreshSession, false)); 

Según MSDN , PromptBehavior.RefreshSession "vuelve a autorizar (a través de la visualización de la vista web) el uso del recurso, asegurándose de que el token de acceso resultante contenga notifications actualizadas. Si hay cookies de inicio de session de usuario disponibles, no se le solicitarán las cnetworkingenciales nuevamente y el inicio de session el dialog se cerrará automáticamente ".

Dar TODOS los permissions. Encontrará varios menus desplegables (como el que muestra en la captura de pantalla).

Cada elemento desplegable tendrá múltiples casillas de verificación que hacen reference a diferentes cnetworkingenciales. Comtesting cada uno y estás okey.

  • CRM 2011: establecer el valor del campo de moneda con javascript
  • ¿Cómo recuperar el idioma del usuario actual con javascript?
  • ¿Es posible quitar los caracteres especiales de los nombres de file en el package web?
  • Cómo recuperar loggings relacionados en SOAP basado en la relación N: N
  • Llame al código C # de Ribbon JScript CRM Online 2011
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.