【发布时间】:2020-01-10 16:42:31
【问题描述】:
在我的项目中,我使用身份服务器 OpenId Connect 进行授权。
Identity 的客户端之一是 MVC 类型。
为了可扩展性,我需要运行客户端的多个副本。
当客户端数量为1时(只有一个实例在运行),一切都很好。
客户端增加到2个时,部署后浏览需要授权的页面
- 重定向到身份服务器(如我所料)
- 登录成功后,Identity 在 Identity 服务器域中设置了 cookie(如我所料)
- 我预计重定向后,MVC客户端cookie设置在客户端域和用户授权,但抛出此异常:
异常:无法取消对 message.State 的保护。
未知位置
异常:处理远程登录时遇到错误。
MVC 客户端 OpenIdConnect 设置:
"OpenIdConnect": {
"ClientId": "mvc",
"Authority": "https://identity.usw1.kubesail.io/",
"ClientSecret": "REDACTED",
"ResponseType": "code",
"UsePkce": false,
"GetClaimsFromUserInfoEndpoint": true,
"SaveTokens": false,
"RequireHttpsMetadata": false,
"Scope": [ "openid", "profile" ],
}
MVC 客户端的身份服务器设置
new Client
{
ClientId = "mvc",
ClientName = "MVC Client",
AllowedGrantTypes = GrantTypes.CodeAndClientCredentials,
RequirePkce = false,
ClientSecrets = { new Secret("REDACTED".Sha256()) },
RedirectUris = { "http://mvc.c1.kubesail.io/signin-oidc" },
FrontChannelLogoutUri = "http://mvc.c1.kubesail.io/signout-oidc",
PostLogoutRedirectUris = { "http://mvc.c1.kubesail.io/signout-callback-oidc" },
RequireConsent = false,
AllowOfflineAccess = true,
AllowedScopes = { "openid", "profile" }
}
开发部署规范:
身份服务器 4
项目类型为 Asp.net core 3.1
在 Kubernetes 上部署
【问题讨论】:
-
您还发布了“ClientSecrets”变量的值。即使它可能会被编辑删除,请注意,如果这是一个真正的秘密,它现在已为公众所知,应该立即更改:)
标签: asp.net-core kubernetes identityserver4 openid-connect