Oauth 2.0 jwt令牌、互操作dotnet核心和dotnet经典

Oauth 2.0 jwt令牌、互操作dotnet核心和dotnet经典,oauth-2.0,.net-core,jwt,owin,Oauth 2.0,.net Core,Jwt,Owin,遗憾的是,关于这些东西的文档很难获得 我有点左右为难,因为我现在有一个系统,它有一个新的基于dotnetcore的API,但我现在不能替换主系统或它的安全处理 在旧系统中,我们使用OWIN API的/token端点生成令牌(从那时起,它就没有被移植到dotnet core) 我们使用具有以下选项的OAuthAuthorizationServer: new OAuthAuthorizationServerOptions() { TokenEndpointPath = new PathStr

遗憾的是,关于这些东西的文档很难获得

我有点左右为难,因为我现在有一个系统,它有一个新的基于dotnetcore的API,但我现在不能替换主系统或它的安全处理

在旧系统中,我们使用OWIN API的/token端点生成令牌(从那时起,它就没有被移植到dotnet core)

我们使用具有以下选项的OAuthAuthorizationServer:

new OAuthAuthorizationServerOptions()
{
    TokenEndpointPath = new PathString("/token"),
    AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(5) + TimeSpan.FromSeconds(10),
    Provider = new AppOAuthAuthorizationServerProvider("OBB"),
    RefreshTokenProvider = new AppOAuthBearerRefreshProvider(),
}
机器配置具有validateionkey和decryptionkey,并设置为使用 validation=“HMACSHA384”decryption=“3DES”

这工作正常,使用web.config中的硬编码机器密钥进行签名。是的,我们将在2019年更换DotnetCore2.2,届时我们将把整个系统转移到合适的oauth服务器上

我现在需要在dotnetcore中使用该令牌。我认为通过使用Microsoft.AspNetCore.Authentication.JwtBearer,我拥有了正确的库,而且该令牌显然是一个JWT令牌。不过,我可能错了

我试图解码它,但我最终一无所获-所有调用返回无效的\u令牌

我通过以下方式设置服务:

services.AddAuthentication(o =>
{
    o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = false,
        ValidateAudience = false,
        ValidateActor = false,
        ValidateIssuerSigningKey = false,
        ValidateLifetime = false,
        ValidateTokenReplay = false,
        // Specify the key used to sign the token:
        //IssuerSigningKey = descryptionkey,
        //RequireSignedTokens = false,
    };
});
我做错了什么?我似乎找不到任何关于如何获得dotnet core中接受的dotnet“适当”发行的令牌的文档


我需要正确地验证该令牌,并提取其中的一个信息(id)。

我将JWT用于此配置,也许这会对您有所帮助

        services.AddAuthentication(options =>
                                   {
                                       options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                                       options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                                   }
                                  )
                .AddJwtBearer(options =>
                {
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateAudience = true,
                        ValidAudience = appSettings["JwtAudience"],
                        ValidateIssuer = true,
                        ValidIssuer = appSettings["JwtIssuer"],
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(appSettings["JwtSigningKey"]))
                    };
                });
此外,头密钥是授权,其值格式化为承载xxx,其中xxx是JWT