【发布时间】:2021-06-04 19:24:30
【问题描述】:
我正在使用 IdentiyServer 向客户端发出 JWT 令牌,令牌包含角色声明和其他一些声明,这部分工作正常,我获得了具有所需声明的访问令牌。
在我的 Web API 应用程序中,我添加了以下代码来支持 JWT 身份验证:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.Authority = "http://localhost:5004";
IdentityModelEventSource.ShowPII = true;
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = false,
ValidateIssuerSigningKey = true,
IssuerSigningKey = "what is this ?"
};
问题是,假设黑客生成带有任何标头和正文的 JWT 令牌并声称他想要并对其进行签名,我的 Web api 应用程序如何验证签名?如何与 identityServer 和我的 Web api 应用程序共享 IssuerSigningKey?
IssuerSigningKey和identityServer中的ClientSecrets一样吗?
我浏览了 IdentityServer 文档,但找不到答案。
【问题讨论】:
-
这个要明确区分,身份服务器生成访问令牌用于认证,而jwt令牌将由应用程序生成,使用对称/非对称加密进行签名。 Google OAuth 不会生成 JWT,类似地,开放 id 服务器将生成访问令牌而不是授权令牌,即 JWT
-
请检查我编辑的回复,我尝试在其中添加代码,这将有助于asp.net web api C#,尽管我的工作主要是在python fast api中
标签: c# jwt identityserver4 webapi bearer-token