OpenIDプロバイダが別のURLに戻る場合は、認証要求を作成するときにOpenIdRelyingParty.CreateRequest(Identifier userSuppliedIdentifier, Realm realm, Uri returnToUrl)
メソッドを使用する必要があります。
しかし、通常、OpenIDプロバイダが、アプリケーション内でログインシーケンスを開始したURLにリダイレクトすることは望ましくありません。応答を適切に処理するためにOpenID認証を開始した時点に戻りたいとします。アプリケーションのロジックの残りからOpenIDレイヤーをカプセル化するのに役立ちます。ここで
は例です:
私のASP.NET MVCアプリケーションでは、私は、ログイン要求を処理Authenticate
アクションとUser
コントローラを持っています。
Authenticate
アクションチェックOpenIdRelyingParty.Response
。 null
の場合、アクションはRedirectToProvider
を呼び出します。プロバイダは同じアクションに戻り、Respons.Status
をチェックします。それがAuthenticationStatus.Authenticated
の場合、私はユーザがログイン順序を開始したページに戻るためにFormsAuthentication.RedirectFromLoginPage
(openid.Response.ClaimedIdentifier, true)
を使用します。
ただし、ステータスがAuthenticationStatus.Failed
または 'AuthenticationStatus.Canceled'の場合、この問題を解決するための手順をユーザーに提供できます。ミスタイプの場合はOpenIDを修正するか、代わりにユーザー名/パスワードを使用してログインするように提案することができます。 (私は同じアイデンティティのOpenIDとユーザー名/パスワードの両方の認証をサポートしています)
私のログインボックスはすべてのページにあります。 OpenIDプロバイダがログインリクエストを開始したページに私をリダイレクトした場合、そのページは適切にエラーを処理できなくなる可能性があります。
これはAddCallbackArgument ** s ** –
になります。ありがとうございます。私は私の答えを訂正しました。 –
それほど単純ではありません: "コールバック引数は、IRelyingPartyAssociationStoreがOpenIdRelyingPartyに提供されている場合にのみサポートされます。" – Perry