gpt4 book ai didi

c# - 在负载均衡器后面运行的 Identity Server 4

转载 作者:行者123 更新时间:2023-11-30 12:56:02 25 4
gpt4 key购买 nike

我已经使用 Entity Framework 为我的项目设置了 Identity Server 4。我已经将服务配置为使用持久授权商店和签名证书。

services.AddIdentityServer()
.AddSigningCredential(Config.GetSigningCertificate())
.AddResourceOwnerValidator<ResourceOwnerPasswordValidator>()
.AddProfileService<ProfileService>()
.AddConfigurationStore(builder =>
builder.UseSqlServer(connectionString, options =>
options.MigrationsAssembly(migrationsAssembly)))
.AddOperationalStore(builder =>
builder.UseSqlServer(connectionString, options =>
options.MigrationsAssembly(migrationsAssembly)));

这是服务的配置。

问题是当我在负载均衡器后面运行我的服务器时,例如 2 个相同的实例处理所有请求,用户未登录的服务器无法解码 JWT token ,导致 401 未经授权的错误。

我假设 token 的签名方法或其加密是问题所在,但我找不到解决此问题的方法。

这是我的其余配置。

配置:

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = url,
// Authority = "http://localhost:5000",
AllowedScopes = { "WebAPI" },
RequireHttpsMetadata = false,
AutomaticAuthenticate = true,
AutomaticChallenge = true,

});

客户:

new Client
{
ClientId = "Angular2SPA",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword, // Resource Owner Password Credential grant.
AllowAccessTokensViaBrowser = true,
RequireClientSecret = false, // This client does not need a secret to request tokens from the token endpoint.
AccessTokenLifetime = 7200, // Lifetime of access token in seconds.
AllowedScopes = {
IdentityServerConstants.StandardScopes.OpenId, // For UserInfo endpoint.
IdentityServerConstants.StandardScopes.Profile,
"roles",
"WebAPI"
},
AllowOfflineAccess = true, // For refresh token.
AccessTokenType = AccessTokenType.Jwt

}

我还实现了自己的 IResourceOwnerPasswordValidator 和 IProfileService。

知道为什么会这样吗?

最佳答案

我有一个类似的问题,负载平衡 Identity Server 4 并且能够在 Startup.cs 的 ConfigureServices 中使用 .AddDataProtection() 共享 key 。

public void ConfigureServices(IServiceCollection services)
{
// Other service configurations

services.AddDataProtection();

// Additional service configurations
}

作为旁注,如果你走这条路,考虑使用扩展名加密这些 key (在你决定使用的任何媒体中).ProtectKeysWith*(有几个选项).参见 https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/introduction?view=aspnetcore-2.1了解更多信息

HTH

关于c# - 在负载均衡器后面运行的 Identity Server 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43916249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com