Как я могу вызвать B2 C Graph API из angular? - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь понять, как вызвать API графа, чтобы получить некоторую информацию о пользователе, используя msal- angular ("@ azure / msal- angular": "^ 0.1.4"). Мне не удалось найти рабочий пример / учебник для этого.

Я настроил Azure AD B2 C. Создан локальный поставщик учетных записей с именем пользователя в качестве ключа входа. Я создал поток регистрации / входа и зарегистрировал веб-приложение 'b2 c -app01'. Для разрешений API я дал приложению user.read разрешение.

У меня есть логин, работающий со следующей конфигурацией для msal

    MsalModule.forRoot({
      clientID: "00000000-0000-0000-0000-000000000000", // b2c-app01 in app registration
      authority: "https://b2c-app01.b2clogin.com/tfp/b2c-app01.onmicrosoft.com/B2C_1_SignInOrSignUp",
      validateAuthority: false,

Далее я пытаюсь получить доступ к графику API, следующий этому примеру https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-spa.

Тем не менее, я не могу передать вызов acquTokenSilent. Я передаю ['user.read'] для области видимости и получаю следующую ошибку

        this._user = this.authService.getUser();
        let tokenResponse = await this.authService.acquireTokenSilent(
            ['user.read'],
        );
        console.log(tokenResponse);

The scope 'user.read' provided in the request is not supported.

Я пытался использовать URL-адрес провайдера идентификации, возвращенный пользователю для полномочий свойство, но тогда я получаю ошибку CORS. Я даже не знаю, допустимо ли это, поэтому я больше не заглядывал в ошибку CORS

        this._user = this.authService.getUser();
        let tokenResponse = await this.authService.acquireTokenSilent(
            ['user.read'],
            this._user.identityProvider,
            this._user,
        );
        console.log(tokenResponse);

blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource..

Любые предложения относительно того, что я делаю неправильно или чего мне не хватает?

Редактировать:

ниже приведены разрешения API enter image description here

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

AAD B2 C регистрация приложений не может быть разрешена для Graph API. Исходя из того, что вы сказали, вы создали регистрацию приложения AAD в каталоге B2 C.

Это невозможно «Я создал поток регистрации / входа и зарегистрировал веб-приложение« b2 c -app01 ». Для разрешений API я дал приложению user.read разрешение ».

Вы упомянули AAD B2 C, но ваш образец JS предназначен для AAD. В случае использования AAD B2 C верните все необходимые данные в маркер пользователя. Для любого другого вызова Graph API, например, для запроса групп пользователей, вызовите свой собственный API, который аутентифицирует API Graph времени с использованием учетных данных клиента по сравнению с AAD App Reg в вашем клиенте B2 C.

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

Вы пытались добавить область действия User.Read к URL-адресу графика, т.е. https://graph.microsoft.com/User.Read? Просто удар в темноте ...

Сценарий использования приложения B2 C для вызова Microsoft Graph описан в этой статье:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/microsoft-graph-get-started?tabs=applications

Сценарий OAUTH, реализованный в этой статье, представляет собой поток client_credentials , также известный как учетная запись службы или демон. Я думаю, что основной вариант использования, который они рассматривают, заключается в использовании Azure DevOps для поддержки политик идентификации и аутентификации конвейера развертывания DevOps через Graph для автоматизации загрузки политик.

В идеале другие интерактивные пользовательские потоки могут поддерживается, например, от имени или неявное предоставление потоков.

...