相关疑难解决方法(0)

会话超时后,Azure AD B2C注销

情况

我有一个使用Azure AD B2C作为其身份验证的Web应用程序。我们正在使用OWIN OpenIdConnect来处理此过程。会话超时设置为15分钟(web.config中和AzureADB2C登录策略中的sessionState),并且在策略级别的策略中启用了SSO。该会话设置为滚动。OWIN CookieAuthentication也使用15m的滑动到期时间。

Web应用程序分为多个部分(虚拟文件夹),但是都共享同一个Azure AD B2C实例。但是,每个人在AD中都有自己的应用程序注册。(这些基本上是国家/地区,因此我们有www.site.com/nl和www.site.com/de)。这是为了确保登录时也能正确定向到您所在的国家/地区。使我们能够将一个国家链接到另一个AD实例(如果需要)。

问题

当用户登录该应用程序,然后随后在其会话中注销时,登录过程将正常运行而不会出现问题,并且在尝试再次登录时,要求他/她再次登录。没关系,而且符合预期。

但是,当用户登录并让他/她的会话到期时,我们会显示一个弹出窗口,询问您是要继续(链接到登录页面)还是退出(链接到注销页面)。在这两种情况下,用户都不需要提供他/她的凭据,这也不是我们所希望的行为(这意味着如果有人将其帐户保持打开状态并且发生超时,那么任何人都仍可以登录而无需提供凭据)

养护

  1. 如果用户在会话超时后访问注销页面,则将调用https://login.microsoftonline.com/myazuread.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1_mypolicyname&post_logout_redirect_uri=https%3a%2f%2fwww.site.com%2fbe&x-client-SKU=ID_NET&x-client-ver=1.0.40306.1554与用户在会话期间注销时完全相同的URL 。但是,在此调用中,我在Azure端看到了2种不同的行为。

A)当会话未到期时,此呼叫将先进入,https://login.microsoftonline.com/my-azure-ad-guid/oauth2/logout然后再重定向到我的重定向uri。

B)当会话过期时,此调用将直接重定向到我的重定向uri,而不会在情况A下跳过uri。

  1. 情况A和情况B之间存在1个cookie差异,x-ms-cpim-sso:myazuread.onmicrosoft.com/b2c_1_mypolicyname它仅在情况A中存在,这使我相信这会导致不同的行为。但是,这是login.microsoftonline.com域上的Microsoft cookie,因此我对此没有控制或影响。

  2. 当会话超时后初始化登录时,我看到呼叫通过包含与我的任何应用程序都不匹配的clientid传递:https://login.microsoftonline.com/myazuread.onmicrosoft.com/oauth2/authorize?client_id=bb2a2e3a-c5e7-4f0a-88e0-8e01fd3fc1f4&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fte%2fmyazuread.onmicrosoft.com%2foauth2%2fauthresp&response_type=id_token&scope=email+openid&response_mode=query&nonce=nonce&nux=1&nca=1&domain_hint=myazuread.onmicrosoft.com&mkt=en-US&lc=1033&state=StateProperties这为我提出了一个问题,该应用程序是什么,为什么在我的身份验证流程中使用它,导致我的用户无法使用需要重新认证?

问题:如何确保用户在每次会话超时后都需要进行身份验证?

session azure azure-active-directory azure-ad-b2c

4
推荐指数
1
解决办法
2400
查看次数