我们计划从当前基于自定义表单的身份验证迁移到 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/