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。