可悲的是,关于这些东西的文档很难获得。
我有点束手无策,因为我有一个系统现在可以获取新的基于dotnetcore的API,但是现在我不能替换主系统或它具有的安全性处理。
在旧系统中,我们使用OWIN API的/ token端点生成令牌(此令牌自那时以来未移植到dotnet核心)。
我们使用的OAuthAuthorizationServer具有以下选项:
new OAuthAuthorizationServerOptions()
{
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(5) + TimeSpan.FromSeconds(10),
Provider = new AppOAuthAuthorizationServerProvider("OBB"),
RefreshTokenProvider = new AppOAuthBearerRefreshProvider(),
}
计算机配置具有validationkey和decryptionkey,并设置为使用 验证=“ HMACSHA384”解密=“ 3DES”
这可以正常工作,并且正在使用web.config中的硬编码机器密钥进行签名。是的,当我们将整件东西移到适当的oauth服务器上时,要替换的东西-在2019年的dotnet core 2.2左右。
我现在需要在dotnet核心中使用该令牌。我认为我可以通过使用Microsoft.AspNetCore.Authentication.JwtBearer获得正确的库,并且令牌显然是JWT令牌。我可能是错的。
我试图对其进行解码,但最终却无济于事-所有调用都返回invalid_token。
我通过以下方式设置服务:
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核心中接受的dotnet“ proper”中发行的令牌的文档。
我需要正确地验证该令牌,并提取其中的一个信息(ID)。
答案 0 :(得分:0)
我在此配置下使用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"]))
};
});
此外,标头密钥是授权,其值格式为Bearer xxx,其中xxx是JWT。