Azure AD B2C-无法调用MS Graph API或Azure AD Grap API

时间:2018-08-21 02:01:24

标签: azure azure-active-directory azure-ad-b2c msal msal.js

我有一个azure广告b2c,其中包含2个自定义策略,一个用于统一登录/登录页面,另一个用于重置密码。

我创建帐户并登录后,无法从https://graph.microsoft.com/v1.0/me获得成功的响应,并从中得到以下错误:

AADB2C90077: User does not have an existing session and request prompt parameter has a value of 'None'. Correlation ID: 6ec76033-f72e-405d-ba1a-04c7534a571e Timestamp: 2018-08-21 00:56:07Z |interaction_required

我使用以下代码(使用MSAL.js和axios)发出请求:

    const config = {
      tenant: 'tenant.onmicrosoft.com',
      clientId: 'app-id',
      signInSignUpPolicy: 'https://login.microsoftonline.com/tfp/my_tenant/policy/',
      passwordResetPolicy: 'https://login.microsoftonline.com/tfp/my_tenanat/my_pr_policy/',
      scopes: ['https://graph.microsoft.com/user.read'],
      redirectUri: 'http://theredirect.uri',
      cacheLocation: 'localStorage',
      graphUrl: 'https://graph.microsoft.com/v1.0',
    };

    /**
       * @returns {Promise<any>}
       */
      accessToken() {
        return new Promise(async (resolve, reject) => {
          try {
            const accessToken = await this.userAgent.acquireTokenSilent(config.scopes);
            resolve(accessToken);
          } catch (exception) {
            reject(exception);
            // this.userAgent.acquireTokenRedirect(config.scopes).then(resolve, reject);
          }
        });
      }

     /**
       * @param endpoint
       * @returns {AxiosPromise<any>}
       */
      async get(endpoint) {
        const accessToken = await this.accessToken();


        const requestConfig = {
          headers: { Authorization: 'Bearer ' + accessToken },
        };

        const url = config.graphUrl + "/" + endpoint;
        return axios.get(url, requestConfig);
      } 

1 个答案:

答案 0 :(得分:2)

Graph API仅适用于Azure AD“普通”用户和应用程序。含义-也没有一个B2C用户(也称为local)可以使用GraphAPI。

如果您需要在B2C上使用图API,则唯一的机会是为在B2C租户的“普通” Azure AD部分-more info and detailed description here中注册的应用程序使用应用程序标识。

请注意,Microsoft Graph不适用于B2C用户。