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

Azure AD B2C - Unable to call MS Graph API or Azure AD Grap API

我有一个带有 2 个自定义策略的 azure ad b2c,一个用于统一登录 in/up 页面,另一个用于密码重置。

当我创建帐户并登录时,我无法从 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);
      } 

图表 API 仅供 Azure AD "normal" 用户和应用程序访问。含义 - none 的 B2C 用户,也称为 local 将使用图表 API。

如果您需要在 B2C 上使用图表 API,您唯一的机会是使用应用程序身份注册到 B2C 租户的 "normal" Azure AD 部分 - more info and detailed description here.

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