我在Linux容器的Docker中运行我的。net core 5应用程序,即Authentication Server
和API Gateway
。API GateWay
中的控制器类包含一个[Authorize]
属性来验证用户。尽管用户是有效的(例如注册并成功登录),API Gate无法允许用户访问API。这里是我的日志抱怨的一部分:
Failed to validate the token.Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Signature validation failed. Unable to match key:
kid: '6B7ACC520305BFDB4F7252DAEB2177CC091FAAE1'.
Exceptions caught:''.
我说的对吗,这是由于身份服务4生成的cookie;告警解释idsrv.session
和.netcore related cookies
共享失败。
这是因为根据我的观察,当我的微服务在IIS中运行。当用户成功登录时,认证服务器将生成上述两个cookie。上面提到的cookie是"共享的"在其他微服务中,部分原因是它们位于相同的本地主机,但端口号不同。
当我的应用程序迁移到Docker;认证服务器能够生成相关的cookie,其余的包含无法获得cookie。
作为结果,我猜,这是API网关无法授权有效用户的结果。
因此,我想知道我对授权的理解是正确的,以及我应该如何解决有效用户的问题。
https://stackoverflow.com/a/58877655/3312570错误码IDX10501
指向错误的承载令牌中间件。
尝试添加cookie。使用下面的代码。我猜,这是没有用的。
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();