首页 > 解决方案 > Azure B2C 自定义策略本地帐户 KMSI 不让我保持登录状态

问题描述

我实施了示例中的步骤- 到目前为止,所有步骤都按预期工作 - 然后我按照说明启用 KMSI。

在测试 Identity Experience Framework->Custom Policies->B2C_1A_signup_signin ->Run 时,我可以在登录时打开复选框“让我保持登录”。但是,我关闭了这个窗口(或保持打开状态),运行再次自定义政策并要求我再次登录(“保持登录状态”显示未选中)。

我已经三次检查了教程和示例中的更改,但看不出有任何区别(除了示例中我没有 LoadURI 和 RecoveryURI。

我注意到我没有根据ContentDefinitions进行更改,只是按照启用KMSI中的说明进行操作,因为我认为这不是教程中的要求。

请给我一些指导什么可能是错的。谢谢您的帮助

标签: azuresingle-sign-onazure-ad-b2c

解决方案


您使用了错误的方法来测试 KMSI 功能。

如果您“再次运行自定义策略”,它总是会要求您重新输入您的凭据,这是设计使然。

您应该遵循测试您的策略的步骤。

首次登录后,您可以关闭窗口。然后按照步骤 4、5 和 6:

  1. 返回 Azure 门户。转到策略页面,然后选择复制以复制登录 URL。
  2. 在浏览器地址栏中,删除&prompt=login查询字符串参数,该参数会强制用户在该请求中输入其凭据。
  3. 在浏览器中,单击Go。现在 Azure AD B2C 将发出访问令牌,而不会提示您再次登录。

在此处输入图像描述


更新:

您不需要替换SignUpOrSignin.xmland TrustFrameworkExtensions.xml。只需参考我的更改:

将以下代码片段添加TrustFrameworkExtensions.xml.

<ContentDefinitions>
    <ContentDefinition Id="api.signuporsignin">
        <LoadUri>~/tenant/default/unified.cshtml</LoadUri>
        <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
        <DataUri>urn:com:microsoft:aad:b2c:elements:unifiedssp:1.1.0</DataUri>
        <Metadata>
          <Item Key="DisplayName">Signin and Signup</Item>
        </Metadata>
      </ContentDefinition>
  </ContentDefinitions>

然后将以下节点添加为元素的子节点。它必须紧跟在 之后<DefaultUserJourney ReferenceId="User journey Id" />

<UserJourneyBehaviors>
  <SingleSignOn Scope="Tenant" KeepAliveInDays="30" />
  <SessionExpiryType>Absolute</SessionExpiryType>
  <SessionExpiryInSeconds>1200</SessionExpiryInSeconds>
</UserJourneyBehaviors>

这些都是需要做出的改变。

您不需要&prompt=login在文件中删除。请看我上面的截图。复制登录 URL 后,将如下所示:

https://**.b2clogin.com/**.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_SignUpOrSignIn&client_id=**&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login

只需删除&prompt=loginURL 末尾的 并在新窗口中访问它。


推荐阅读