【发布时间】:2018-11-28 22:41:10
【问题描述】:
在使用 IdentityServer4 时,如何修改令牌验证参数,以便不验证令牌颁发者或提供多个有效颁发者?
我尝试了以下方法,但这似乎不起作用:
public void ConfigureServices(IServiceCollection services)
{
// ... omitted
services.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(options =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ApiName = scopeName;
});
services.PostConfigure<JwtBearerOptions>("Bearer", options =>
{
// Option 1: turn off issuer validation at all
options.TokenValidationParameters.ValidateIssuer = false;
// Option 2 (preferable): Provide multiple valid issuers
options.TokenValidationParameters.ValidIssuers = new[]
{
"http://localhost:5000",
"http://127.0.0.1:5000",
};
});
// ... omitted
}
我需要这个的原因:受身份服务器保护的 API 可以在内部和外部访问。外部方使用与内部方不同的 URL 从身份服务器获取令牌,因此受保护的 API 应将内部和外部 URL 视为有效。
【问题讨论】:
-
这种方法适合您吗? stackoverflow.com/questions/51231697/…
-
@RuardvanElburg:很酷,非常感谢,这似乎是一种让我的场景工作的方法。但是,如果我的问题有解决方案,我仍然会感兴趣,其中最初用于生成令牌的发行者是持久存在的并且不会丢失在 JWT 令牌中。
-
@RuardvanElburg:测试一下我刚刚意识到这种方法不会真正起作用,因为正如它在另一种方法中所说的那样,所有租户都必须可以访问共享 URL。这意味着,我永远无法在受保护的 API 中使用只有内部 DNS 知道的权限。
标签: c# asp.net-core identityserver4