【发布时间】:2018-12-20 11:16:43
【问题描述】:
是否可以从 asp.net-core 配置 JwtBearer,它可以获取验证用户是否被授权所需的签名密钥(在我的情况下为公钥)?
我有这样的事情:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
o.BackchannelHttpHandler = new HttpClientHandler();
o.MetadataAddress = "http://auth-server.local.com/api";
o.Authority = "http://localhost:5000";
o.Audience = "http://localhost:5001";
o.RequireHttpsMetadata = false;
o.TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKey = "here should be public key exposed by my auth api server"
ValidIssuer = "http://localhost:5000",
ValidAudience = "http://loclhost:5001"
};
})
;
但我的客户没有调用我的身份验证 api 来获取公钥。
【问题讨论】:
-
签名密钥是您的应用程序私钥。您使用它来签署 JWTtoken 并分发该令牌。当有人使用令牌调用您的应用程序时 - 应用程序检查令牌是否使用 IssuerSigningKey 中指定的值进行签名 - 也许详细说明您要完成的工作?
-
我有 AuthService 可以在用户通过身份验证后创建令牌。此令牌是使用 RSA 创建的。如果任何用户的呼叫请求,例如对 orders.service,这个请求必须是自动的。但我想避免调用身份验证服务器,所以如果我的身份验证服务器可以通过某种 api 公开公钥,order.service 可以自己验证令牌
-
嗯... -1 因为???
-
嘿@bielu000 只是想让你知道我有同样的问题,可悲的是,回复的人似乎不知道他们在说什么。现在我只是在设置 WebHostBuilder 之前调用 auth 服务,但如果 auth 服务需要新证书,我希望能够更改公钥。
标签: asp.net-core jwt