IdentityServer4 - 注册后重定向

时间:2017-11-22 16:29:57

标签: redirect authorization openid identityserver4

我使用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?

2 个答案:

答案 0 :(得分:0)

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

 var context = await _interaction.GetAuthorizationContextAsync(returnUrl);

context.RedirectUri 将保留实际网址(/ PageX),激活后需要重定向用户。

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

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

选中此docs

答案 1 :(得分:0)

基本上,可以通过不提供单击确认电子邮件的链接来避免这种情况,该链接将使用户进入其他浏览器选项卡。

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