C# 在从Owin Api创建Oauth2 AccessToken之后,如何获取它?
如果出于某种审核原因,在创建C# 在从Owin Api创建Oauth2 AccessToken之后,如何获取它?,c#,asp.net,oauth-2.0,token,owin,C#,Asp.net,Oauth 2.0,Token,Owin,如果出于某种审核原因,在创建AccessToken后,我会被要求将其存储到Db中,那么是否存在返回AccessToken的Owin API类 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { //check user credentials .... context.Validated(ticket);
AccessToken
后,我会被要求将其存储到Db中,那么是否存在返回AccessToken
的Owin API类
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
//check user credentials
....
context.Validated(ticket);
//Where should I get the generated token?
}
}
我找到的唯一解决方法是在Global.Asax
中创建一个Http过滤器,读取输出流并从中获取令牌
是否有更优雅的方法直接从Owin Api获取它?当然可以,但您需要使用Microsoft.Owin.Security.OAuth 3.0而不是2.1版,然后在类OAuthorizationServerProvider中重写TokenEndpointResponse,如下代码所示
public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
{
var accessToken = context.AccessToken;
return Task.FromResult<object>(null);
}
公共覆盖任务TokenEndpointResponse(OAuthTokenEndpointResponseContext)
{
var accessToken=context.accessToken;
返回Task.FromResult(空);
}
注销时,我需要从我的web API中清除accessToken,请告诉我它将存储在哪里。关于如何更改访问令牌,有什么想法吗?context.AccessToken=“newToken”看不到,因为它没有setter。