我有使用 jwt 不记名身份验证的 web api。创建 jwt的实现 ( openiddict ) 使用当前 url 作为颁发者。
services
.AddOpenIddict()
.UseJsonWebTokens();
我将 jwt 身份验证处理程序配置为使用有效的颁发者。
services
.AddAuthentication()
.AddJwtBearer(options =>
{
options.Authority = "http://test/";
...
});
当我到达下面的站点时,http://test/
我获得了一个访问令牌,其中颁发者设置为http://test/
. 由于Authority
匹配发行者,请求将被验证。
当我到达下面的站点时,http://125.124.35.21/
我获得了一个访问令牌,其中颁发者设置为http://125.124.35.21/
. 由于Authority
与发行者不匹配,因此不会对请求进行身份验证。
我希望在这两种情况下都能够验证请求。
现在我看到根据jwt rfc,iss
声明是可选的。
我的问题是我是否可以ValidateIssuer
为此目的设置为 false,如果我这样做时会打开一个安全漏洞,是否有更推荐的替代方案?
services
.AddAuthentication()
.AddJwtBearer(options =>
{
options.Authority = "http://test/";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
...
}
});
使用哪个配置来解决.well-known/openid-configuration
?Authority
希望不是发行者,因为这意味着每个人都可以发行令牌并将其与我的 api 一起使用。