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를 수정하거나 사용자 이름/비밀번호로 로그인하도록 제안 할 수 있습니다. (동일한 ID에 대한 OpenID와 사용자 이름/비밀번호 인증을 모두 지원합니다)
내 로그인 상자는 모든 페이지에 있습니다. OpenID 제공 업체가 로그인 요청을 시작한 페이지로 다시 리디렉션하면 해당 페이지가 오류를 제대로 처리하지 못할 가능성이 있습니다.
AddCallbackArgument ** s ** –
그래, 고마워. 내 대답을 바로 잡았어. –
간단하지는 않습니다 : "콜백 인수는 IRelyingPartyAssociationStore가 OpenIdRelyingParty에 제공 될 때만 지원됩니다." – Perry