在我的基于web api 2.2owin的应用程序中,我有一种情况,我需要手动解码承载令牌,但我不知道如何做到这一点。
这是我的初创公司.cs

public class Startup
{
    public static OAuthAuthorizationServerOptions OAuthServerOptions { get; private set; }
    public static UnityContainer IoC;
    public void Configuration(IAppBuilder app)
    {
        //Set Auth configuration
        ConfigureOAuth(app);

        ....and other stuff
    }

    public void ConfigureOAuth(IAppBuilder app)
    {
        OAuthServerOptions = new OAuthAuthorizationServerOptions()
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new AuthProvider(IoC.Resolve<IUserService>(), IoC.Resolve<IAppSettings>())
        };

        // Token Generation
        app.UseOAuthAuthorizationServer(OAuthServerOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
    }
}

在我的控制器中,我将承载令牌作为参数发送
[RoutePrefix("api/EP")]
public class EPController : MasterController
{
    [HttpGet]
    [AllowAnonymous]
    [Route("DC")]
    public async Task<HttpResponseMessage> GetDC(string token)
    {
        //Get the claim identity from the token here
        //Startup.OAuthServerOptions...

        //..and other stuff
    }
}

如何从作为参数传递的令牌中手动解码和获取声明?
注意:我知道我可以在头中发送令牌并使用[授权]和(claimsidentity)user.identity等,但问题是当令牌不在头中时如何读取它。

最佳答案

我创建了一个反序列化承载令牌的示例项目,这些令牌使用machineKeyDataProtector加密。
你可以看看源代码。
Bearer-Token-Deserializer

关于c# - 在C#中手动解码OAuth承载 token ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40800238/

10-13 08:02