IdentityServer4 - 注册后重定向

问题描述 投票:2回答:2

我有一个简单的设置与IdentityServer4(自定义用户存储)和Mvc客户端应用程序。客户端应用程序中的某些页面受到保护。因此,例如当用户点击/ pageX时,他会被重定向到IdentityServer进行身份验证。这在用户存在时工作正常,他只需登录并重定向。如果他没有注册,他会被要求注册并通过电子邮件获得激活码。然后他进入收件箱,点击激活链接并被邀请再次登录。现在,在激活和登录后,我想将他重定向到他最初询问的/ pageX。我的问题是 - 在这一点上,我不再有一个有效的returnUrl,其中包含/ pageX编码。我尝试使用在简单登录流程中工作的returnUrl:

RETURNURL =%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3DmyClientIdt%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A5501%252Fsignin-OIDC%26response_type%3Did_token%26scope%3Dopenid%2520profile%26response_mode%3Dform_post%26nonce%3D636469643044666440.MmZlNzFlMWYtZThhMS00ZjFlLTgyYjYtMDU5NjRmODBhZmNkMzk1MzJiZWItODY2Yy00NzYwLWE4YjQtOGU5YWU5Y2IxMDJk%26state %3DCfDJ8IK-YquShZdNsC5l0tQGkLIvU-_O1FbdO5RV9KrOZ9hCTixBZc-YeVLkKB2mvHkV9U42U83N7RfFCHywKjdbGRGnpfqwgG08_ip1Pt2sAqfa_sPlwYOO7fSiKUbnk2IpA1BMWvfeXNwIeFB7AMv0q0Y2z7vjCTNWawwNS6m5EM3h9V0uCpHE-1H19VPhE0OQcXmmcaNViWbdmWE14VNTH8MYQaPfE90smHtRwYtbYaYhfj-g4ziXbhN6m_R6PYni1ApazIDUBOowEq6yV9ynF91SM82gohud4Ek3juozL-A4W_dTIBZnj1C5PMmUISWl9yw_UPOvTwsCskVH2OmavgI%26X-客户SKU%3DID_NET%26X-客户-VER%3D2.1.4.0)

但如果我在注册后使用此返回URL,则会收到关联错误消息。

任何想法如何将用户返回到他原来的requested / pageX?

redirect authorization openid identityserver4
2个回答
0
投票

returnUrl(在问题中采样)是从授权端点重定向到登录/注册页面的结果。您需要使用IdentityServer Interaction Service来检索实际的returnUrl。

 var context = await _interaction.GetAuthorizationContextAsync(returnUrl);

context.RedirectUri将保存实际的url(/ PageX),激活后需要重定向用户。

您可以将context.RedirectUri作为查询参数传递给激活链接,并在激活页面上检索它。激活完成后,您可以将用户重定向到returnUrl。

string activationLink = "<your activation url>?return=" + returnUrl;

检查这个docs


0
投票

基本上可以通过不提供点击确认电子邮件的链接来避免这种情况,该确认电子邮件将使用户登陆到不同的浏览器选项卡中。

而不是链接在电子邮件中提供n位代码,并让用户在已打开的浏览器选项卡中输入代码,您仍然可以访问returnUrl

© www.soinside.com 2019 - 2024. All rights reserved.