azure-active-directory - Azure Active Directory 保持登录或记住我选项

标签 azure-active-directory remember-me

我们计划从当前基于自定义表单的身份验证迁移到 Azure Active Directory。在此过程中想知道以下是否可能(自定义表单例份验证在下面实现)。如何使用 Azure Active Directory 实现此目的?

目前公司网站有此功能,成员(member)可以选择保持登录。选择保持登录的人将获得 90 天的持久 cookie。成员(member)在该设备上再次访问成员(member)区时无需输入用户名和密码。

此外,“我的帐户/维护个人资料”等其他网站不提供保持登录功能,尽管它们都使用相同的凭据存储。但为了方便成员(member),如果他们已经登录网站并进入“我的帐户/维护个人资料”应用程序,他们的用户名将被预先填充。成员(member)仍需输入密码。

现在在新的范例中,网站和我的帐户/维护配置文件应用程序都将使用 AAD 进行身份验证,我们将如何实现上述功能,即

  • 有选择地为某些应用程序提供保持登录功能。该功能是可选的,选择点击此功能的成员(member) 90 天内无需在该设备上再次登录。
  • 如果成员已登录一项 Assets 并需要登录另一项 Assets ,请预先填充用户 ID。

最佳答案

Azure AD 在用户登录时创建的 session 实际上无法由用户控制。它对 session 长度、持久性等有相当静态的规则。很快,Azure AD 租户管理员将能够通过配置来控制其中一些方面。但这并不真正取决于用户。

话虽如此,您绝对可以实现您在应用程序中描述的体验。您必须在您自己的 UX(而不是 Azure AD 登录 UX)中询问用户是否想要“保持登录状态”。我会这样做:

  • 登录按钮旁边有一个复选框
  • 对 OpenID Connect 授权请求的 state 参数中的复选框值进行编码(OWIN - 使用 AuthenticationProperties)
  • 当 Azure AD 发回其 id_token 响应时,从 状态 解码复选框值(OWIN - OWIN 应该为您处理此问题)
  • 使用该值设置您的应用发出的 session Cookie 的长度/持久性(OWIN - 从 AuthenticationProperties 检索复选框值,如下所示:Is it possible to set an ASP.NET Owin security cookie's ExpireTimeSpan on a per-user basis?

对于其他范例,您可以通过在 OpenID Connect 授权请求上传递 login_hint 查询参数来预填充 Azure AD 登录页面。我让您来弄清楚如何跟踪用户的用户名。

关于azure-active-directory - Azure Active Directory 保持登录或记住我选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756130/

相关文章:

c# - MSAL 与 Microsoft.Owin.Security.OpenIdConnect 有何关系?

c# - Azure AD - 验证 token

azure - 如何将管理访问权限委派给我的订阅上的第二个 Azure AD 目录?

c# - Azure AD GraphServiceClient 无法针对用户设置 AdditionalData

grails - 如何在Grails Spring Security中设置自定义超时以记住我的cookie?

security - Silex/Symfony2 记住我身份验证用户界面 RedBean 包装器

odata - 使用 OData 过滤 guid (Microsoft Graph)

Spring 安全性:记住我 token 仅工作一次

java - 我可以使用 spring security 将完整的用户信息存储在 cookie 中吗?

php - 如何创建一个安全的 php 登录系统,允许 "keep me logged in"功能?