Provider/Home B2C 领域发现

Provider/Home realm discovery in B2C

我们有一个 Azure AD B2C 实例,它配置了 2 个提供商:

我正在使用这个示例 SPA:https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp

该示例具有以下登录过程:

function login() {
  clientApplication.loginPopup(applicationConfig.b2cScopes).then(function (idToken) {
    clientApplication.acquireTokenSilent(applicationConfig.b2cScopes).then(function (accessToken) {
      updateUI();
    }, function (error) {
      clientApplication.acquireTokenPopup(applicationConfig.b2cScopes).then(function (accessToken) {
        updateUI();
      }, function (error) {
        logMessage("Error acquiring the popup:\n" + error);
      });
    })
  }, function (error) {
    logMessage("Error during login:\n" + error);
  });
}

这是应用程序中可能发生的情况:

  1. 用户按下登录按钮。将显示登录弹出窗口。
  2. 用户使用他的 AAD 帐户登录。
  3. 应用程序尝试以静默方式为当前 AAD 获取令牌 用户。这将失败并显示一个弹出窗口 window。
  4. 用户使用自定义 OIDC 帐户登录。

在这种情况下,AAD 用户已登录 (id_token),但 access_token 代表自定义 OIDC 用户。

我试过了

clientApplication.acquireTokenPopup(
  applicationConfig.b2cScopes,
  applicationConfig.authority,
  clientApplication.getUser(),
  { 'prompt': 'none' }
).then(...);

但没有奏效。它显示可供选择的提供商列表。

如何实现 acquireTokenPopup 将我重定向到没有主领域 discovery/provider 发现的 AAD?

尝试传入参数 "domain_hint" 并将值设置为您在 AAD 技术配置文件中为

提供的值