Microsoft 密码重置 - 包含重置后重定向 URI 的传递参数
Posted
技术标签:
【中文标题】Microsoft 密码重置 - 包含重置后重定向 URI 的传递参数【英文标题】:Microsoft Password Reset - Pass parameter that contains redirect URI for after reset 【发布时间】:2019-08-30 01:55:50 【问题描述】:我们使用 OAuth 2 和 Microsoft Azure Active Directory 进行单点登录。当用户注销时,我们将它们传递到以下 URL,我们可以在其中传递 post_logout_redirect_uri
查询参数:
https://login.microsoftonline.com/<tenant-id>/oauth2/logout?post_logout_redirect_uri=https%3A%2F%2Fexample.com%2F
当用户尝试登录我们的站点时,如果他们未通过身份验证,他们会被定向到 Microsoft 登录页面,我们也会在此处传递一个 redirect_uri
参数(以及一些其他不相关的查询参数)。
https://login.microsoftonline.com/<tenant-id>/oauth2/authorize?redirect_uri=https%3A%2F%2Fexample.com%2F
如果用户单击登录页面上的忘记密码链接,他们可以使用 Microsoft 的自助服务密码重置来重置他们的密码,然后他们会获得一个使用新密码登录的链接(如下所示)。点击该链接会将他们带回登录页面,在他们登录后,他们会被重定向回我们的网站。
但是,我们也发送了一个链接供用户直接访问密码重置页面:
https://passwordreset.microsoftonline.com
当用户点击此链接并重置其密码时,To sign in with your new password, click here.
链接不会显示。是否有任何方法可以在此 URL 中传递查询参数,类似于登录和注销端点,以显示该链接并重定向到为该参数传递的值?
我尝试使用redirect_uri
和post_reset_redirect_uri
无济于事,并且找不到任何相关文档。
【问题讨论】:
【参考方案1】:查看密码重置流程及其使用的所有查询字符串参数,我能够使用查询字符串参数ru
获取To sign in with your new password, click here.
的链接
您应该尝试的新链接
https://passwordreset.microsoftonline.com?ru=url encoded value for return url
例子:
https://passwordreset.microsoftonline.com?ru=https%3A%2F%2Flogin.microsoftonline.com%2F<tenant-id>%2Foauth2%2Fauthorize%3Fredirect_uri%3Dhttps%253A%252F%252Fexample.com%252F%26client_id%3DmyclientGUID%26response_type%3Did_token%26state%3D123456%26nonce%3DGUID
注意:我使用的 URL 编码值与我尝试登录我的站点时使用的 URL 和参数基本相同,即当您看到 Microsoft 登录页面作为常规的一部分时,从浏览器获取 URL登录网站。 (与密码重置无关)。然后为 nonce 提供了一个新的随机 GUID,并为状态参数提供了另一个随机值。
免责声明:我没有找到任何官方文档。它更多的是通过常规密码重置流程创建的 HTTP 请求。
【讨论】:
不幸的是,我的应用程序将无法生成所有适当的参数,因为我相信其中一些是 oauth 令牌和指示状态的参数等(我相信其中一些是生成的) Azure 本身)。我尝试仅将我的应用程序的 URL 作为ru
参数传递,但链接没有显示。
啊,我可以关闭 Azure 生成的参数,但它可以工作!生成链接的应用程序唯一需要知道的是租户 ID 和客户端 ID,它们是我可以通过属性文件提供给它的静态值。以上是关于Microsoft 密码重置 - 包含重置后重定向 URI 的传递参数的主要内容,如果未能解决你的问题,请参考以下文章