Azure B2C自定义策略本地帐户KMSI无法让我登录

时间:2020-03-23 18:39:03

标签: azure single-sign-on azure-ad-b2c

我执行了example中的步骤-至此,所有步骤均按预期进行-然后我按照instructions启用了KMSI。

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

我已经三遍检查了本教程和示例中的更改,并且看不到任何区别(除了在example中我没有LoadURI和RecoveryURI。

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

请给我一些指导,可能有什么问题。谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

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

您应遵循Test your policy的步骤。

您可以在首次登录后关闭窗口。 然后执行步骤4、5和6:

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

enter image description here


更新:

您不需要替换SignUpOrSignin.xmlTrustFrameworkExtensions.xml。只需参考我的更改即可:

将以下代码段添加到TrustFrameworkExtensions.xml中的 BuildingBlocks 元素中。

<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

只需删除URL末尾的&prompt=login,然后在新窗口中访问它即可。