Azure MSAL - аутентификация не может реализовать запрос userinfo - PullRequest
0 голосов
/ 18 марта 2020

Я реализовал библиотеку msal в своем приложении angular, используя Implicit Flow . Я могу войти, используя рекламную учетную запись Microsoft, и у меня есть токен, необходимый для запросов аутентификации для использования API. Когда я декодирую токен, используя https://jwt.ms/, я вижу, что ключ aud имеет значение моего идентификатора клиентского приложения , как должен выглядеть URL для userinfo? Если я буду использовать эти конечные точки, которые описаны в документах, у меня была ошибка с неверным токеном: https://graph.microsoft.com/oidc/userinfo или https://graph.microsoft.com/v1.0/me/

{
"error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token validation failure. Invalid audience.",
    "innerError": {
        "request-id": "8177b64f-c899-48c3-aceb-xxxxxxxxx",
        "date": "2020-03-18T07:41:04"
    }
}

}

Я забыл поставить конфигурацию моего модуля.

...
MsalModule.forRoot({
                    auth: {
                        clientId: environment.CLIENT_ID,
                        redirectUri: environment.REDIRECT_URI,
                        postLogoutRedirectUri: environment.POST_LOGOUT_REDIRECT_URI,
                        authority: environment.AUTHORITY,
                    },
                    cache: {
                        cacheLocation: 'localStorage',
                        storeAuthStateInCookie: true,
                    }
                },
                {
                    popUp: false,
                    consentScopes: [
                        'user.read',
                        'openid',
                        'profile',
                    ],
                    unprotectedResources: [],
                    protectedResourceMap: [
                        ['https://graph.microsoft.com/v1.0/me', ['user.read']]
                    ]
                })
...

где: URL-адрес полномочий: Полномочия: 'https://login.microsoftonline.com/xxxxtenant_idxxxx' идентификатор клиента: идентификатор клиента регистрации приложения

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

решаемая. Проблема в указанной конечной точке. Когда я делаю запрос на граф из angular, перехватчик приложения обрабатывает эту конечную точку и использует область (user.read) для графа, и тогда будет назначен правильный токен. До этого я пытался скопировать токен после авторизации и вставить его в почтальона. Так что да, токен был недействительным во всех .. Спасибо за вашу помощь.

0 голосов
/ 18 марта 2020

Если вы хотите вызвать Microsoft Graph API, вам нужно получить токен доступа с правильной (Microsoft graph api) аудиторией.

Когда вы получаете токен доступа, вы должны использовать https://graph.microsoft.com/User.Read или просто User.Read в качестве области действия. Вы можете проверить значения в app.module.ts

Также не забудьте добавить разрешение User.Read для вашего приложения на портале Azure. Регистрация приложений-> ваше приложение-> разрешения API-> добавить разрешение-> выбрать Microsoft Graph API-> делегированное разрешение-> проверить необходимые разрешения.

обновление:

enter image description here

Ссылка:

MSAL Angular для входа, выхода из системы, защиты маршрута и получения токена доступа для Microsoft Graph .

...