ExtraData
クラスのプロパティを使用して、EndUserAuthorizationSuccessBase
追加のパラメーターをクライアントに送り返そうとしています。最初にユーザー名を送り返す必要がありましたが、AccessToken
. ここで、ユーザーがサインインしたままにするかどうかの選択を返信する必要があります (そのため、永続的な Cookie または 30 分で有効期限が切れる Cookie を作成します)。残念ながら、これを正しく機能させることができませんでした。何が起こるかというと、承認サーバーでトークンのエンドポイントを呼び出すと、メッセージのOutgoingWebResponse
エラーが示さinvalid token
れBody
ます。以下は私のコードです:
public ActionResult Login(String username, String password, String rememberMe, String keepMeSignedIn)
{
var request = Session[SESSION_KEY] as EndUserAuthorizationRequest;
if (request != null)
{
Guid siteId = Guid.Parse(request.ClientIdentifier);
Boolean isAuthenticated = this._identityProviderManager.Authenticate(siteId, "FA", username, password);
if (isAuthenticated)
{
var serviceHost = new AuthorizationServerHost();
var authorizationServer = new DotNetOpenAuth.OAuth2.AuthorizationServer(serviceHost);
var approvalMessage = authorizationServer.PrepareApproveAuthorizationRequest(request, username, request.Scope);
approvalMessage.ExtraData[GlobalConstants.Misc.KeepMeSignedIn] = Convert.ToString(keepMeSignedIn != null && keepMeSignedIn.Equals("on", StringComparison.InvariantCultureIgnoreCase));
return authorizationServer.Channel.PrepareResponse(approvalMessage).AsActionResult();
}
}
return View();
}
トークン エンドポイント
public ActionResult GetToken()
{
AuthorizationServerHost serverHost = new AuthorizationServerHost();
AuthorizationServer authorizationServer = new DotNetOpenAuth.OAuth2.AuthorizationServer(serverHost);
OutgoingWebResponse response = authorizationServer.HandleTokenRequest(Request);
ActionResult result = response.AsActionResult();
return result;
}
なぜそれが起こっているのですか?