从Owin Api创建后,你如何获得Oauth2 AccessToken?

sys*_*out 8 c# asp.net token oauth-2.0 owin

如果出于某些审计原因,我会被要求AccessToken在创建后存储到Db,是否有一个Owin API类返回AccessToken

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    //check user credentials
    ....
    context.Validated(ticket);
    //Where should I get the generated token?
    }
}
Run Code Online (Sandbox Code Playgroud)

我找到的唯一解决方法是创建一个Http过滤器,Global.Asax用于读取输出流并从那里获取令牌.

是否有更优雅的方式直接从Owin Api获取它?

Tai*_*deh 9

当然你可以,但你需要使用Microsoft.Owin.Security.OAuth版本3.0而不是2.1,然后在类OAuthAuthorizationServerProvider中覆盖TokenEndpointResponse作为下面的代码

public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
    {
        var accessToken = context.AccessToken;
        return Task.FromResult<object>(null);
    }
Run Code Online (Sandbox Code Playgroud)