2017-11-22 23 views
0

IdentityServer4(カスタムユーザストア)とMvcクライアントアプリケーションを使って簡単な設定ができました。クライアントアプリケーションの一部のページが保護されています。たとえば、ユーザーが/ pageXを押すと、認証のためにIdentityServerにリダイレクトされます。これは、ユーザーが存在するときに正常に動作し、ログインしてリダイレクトされます。 登録されていない場合は、登録を求められ、電子メールでアクティベーションコードが取得されます。 それから彼は受信箱に行き、アクティベーションリンクをクリックし、再度ログインするように求められます。 これで、アクティベーションとログインの後に、彼が最初に尋ねた/ pageXにリダイレクトしたいと思います。 私の問題は - この時点では、何らかの形で/ pageXが含まれている有効なreturnUrlがなくなっています。IdentityServer4 - 登録後にリダイレクト

にreturnurl =%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3DmyClientIdt%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A5501%252Fsignin-oidc%26response_type%3Did_token%26scope:私は、簡単なログインの流れで働くにreturnurlを使用してみました%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を使用すると、相関エラーメッセージが表示されます。

どのように私は彼の元の要求/ pageXにユーザーを戻すことができますか?

答えて

0

returnUrl(質問でサンプリングされています)は、Authorize EndpointからLogin/Registerページへのリダイレクトの結果です。実際のreturnUrlを取得するには、IdentityServer Interaction Serviceを使用する必要があります。

var context = await _interaction.GetAuthorizationContextAsync(returnUrl); 

context.RedirectUriは、ユーザが起動した後にリダイレクトされる必要がある実際のURL(/ PageX)を保持します。

あなたは活性化リンクにクエリパラメータとしてcontext.RedirectUriを渡し、起動ページでそれを取得することができます。アクティベーションが完了すると、returnUrlにユーザーをリダイレクトできます。私は(問題のサンプリング)が長いにreturnurlを使用してみました何このdocs

+0

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

チェック。しかし、それは私に相関に関するいくつかのエラーを与える。私はreturnUrl = {clientapphost}/pageXを持っていますが、アイデンティティサーバーのコンテキストで/ pageXを取得する方法が見えません。 – Andrei

+0

@Andrei私はあなたの質問をカバーしようと私の答えを更新しました。 – naveddeshmukh

+0

私はcontext.RedirectUriの値をチェックしましたが、私に/ pageXを与えません。 します。http:// localhost:5501 /サインイン-oidc 私はクライアントアプリケーションのバックエンドポイントの話を推測であるそれは私のようなものを提供します。 – Andrei

関連する問題