- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一项服务 (API),以履行资源服务器的 OAuth 角色。我们有一个实现隐式流程的 Angular 客户端应用程序。我们使用 GLUU 作为我们的 OpenID 提供者。客户端应用程序能够成功获得 id_token
(JWT) 来自授权服务器。但是,当它调用 API(将该 token 作为授权 header 中的不记名 token 传递)时,资源服务器无法尝试验证它。我得到一个JwkException
消息:enc (use) is currently not supported.
我正在配置 security.oauth2.resource.jwk.key-set-uri
在我的 application.yml
使用我的 GLUU 服务器提供的端点 ( https://[my-gluu-server-host]/oxauth/restv1/jwks )
资源服务器故障发生在这个方法:org.springframework.security.oauth2.provider.token.store.jwk.JwkSetConverter.createRsaJwkDefinition(Map<String, String>)
具体来说,它发生在以下 block 中,它从 /oxauth/restv1/jwks
解析文档终点:
// use
JwkDefinition.PublicKeyUse publicKeyUse = JwkDefinition.PublicKeyUse.fromValue(attributes.get(PUBLIC_KEY_USE));
if (!JwkDefinition.PublicKeyUse.SIG.equals(publicKeyUse)) {
throw new JwkException((publicKeyUse != null ? publicKeyUse.value() : "unknown") + " (" + PUBLIC_KEY_USE + ") is currently not supported.");
}
来自 GLUU 服务器的 jwks 文档包括以下内容:
{
"kid": "2f2963f5-2e69-448d-8d4b-a0c573a0ae12",
"kty": "RSA",
"use": "sig",
"alg": "RS256",
"exp": 1561073429125,
"n": "1i27yldjaqy1E43560by_mWC9weI9jilYGIHIYc_1nSM0QdVMg3OU-NVBfAcDZhw0ghJ4uZIyjnVVUBp-QqZfvQ9nMVPcYDb3Fycbag3jQ2zYJfU_lAVOoSQquq_Tk8pa4NlJWIbiEFCpkLlNZVZdP8950aZVJX5Z5AzZq6CognrnItuyjNxyA25r244dZyDiShvQ7AC3nX8u04AKTSu-bVBMuZEtJVb7wH3KDxUzgPSj-xZ2ddA9Af9I-GNKpIj5lM7KVun3GMKoVh_NsLVODAbBsJZpG_wKcN0IuHdtoJG3pCD95JmpaSUIlYbvnHH9y19tC45v5dHXUEyv1x8bw",
"e": "AQAB",
"x5c": [
"MIIDBDCCAeygAwIBAgIhALFTvUWtPFdT9hBmo/5AlANq9RBZggZYbYW/2adHb50XMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNVBAMMFm94QXV0aCBDQSBDZXJ0aWZpY2F0ZXMwHhcNMTgwNjIwMjMzMDE5WhcNMTkwNjIwMjMzMDI5WjAhMR8wHQYDVQQDDBZveEF1dGggQ0EgQ2VydGlmaWNhdGVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1i27yldjaqy1E43560by/mWC9weI9jilYGIHIYc/1nSM0QdVMg3OU+NVBfAcDZhw0ghJ4uZIyjnVVUBp+QqZfvQ9nMVPcYDb3Fycbag3jQ2zYJfU/lAVOoSQquq/Tk8pa4NlJWIbiEFCpkLlNZVZdP8950aZVJX5Z5AzZq6CognrnItuyjNxyA25r244dZyDiShvQ7AC3nX8u04AKTSu+bVBMuZEtJVb7wH3KDxUzgPSj+xZ2ddA9Af9I+GNKpIj5lM7KVun3GMKoVh/NsLVODAbBsJZpG/wKcN0IuHdtoJG3pCD95JmpaSUIlYbvnHH9y19tC45v5dHXUEyv1x8bwIDAQABoycwJTAjBgNVHSUEHDAaBggrBgEFBQcDAQYIKwYBBQUHAwIGBFUdJQAwDQYJKoZIhvcNAQELBQADggEBAGvDX4s66Vd6Ca7yVZrRwprICYfD2+UWHhXzWZ1cDxH0nM74tHlKn2F5j5M7lDkr9nNkMGwWRzdUpRSmqBW6b3E4Z4JeZqdlOp3GOwV+FK7R1SL0HY4XVUlBh2WJ+WjPubK9G7PUVhKqFYb7yHHPjZsvTtxxr11J0w3xnUvnBdTmPu4ByawpzhEMwWfREMhKFuTdB1eqg72he5C4cYJy48mAs/OJ25hmG58UDgTcT/qSnKsstsaTbhpnf0ky/TuoT05bjHg4yl8sOlJyPmorScj+PCHmfysrp5GKZ682jL/ffuZUSpv5pwVtzI5pG0Be0DbVmUUcMXWOie0uvGIEWI4="
]
}
和
{
"kid": "4e40e28f-3c23-4703-a4e5-256701729b9d",
"kty": "RSA",
"use": "enc",
"alg": "RS256",
"exp": 1561073429125,
"n": "rVyl3F36BIXhSNK2ed4BtuptJNc2VC-PbTBp1_EvzKdOZH6hoYAS7aOlZyzSGBJ653jH1omFwwB2m3bABrSrkJWwW2bw4z-20ZuuZTXkhjGTVJF971jXAz7WWu5x2JGNx_Y6xPeE1ikZD81JYKwSYFGJBKxW7P_H_CsmufPbXUty6LAt49BqJTOApP-pInmoJAwEwexoKwZ5lg9pid6bOFAQb_38yX4wlFJ5sIm9xi1zhvOJfLti2-T9Kfldi3hyTTLbt8p2nWZpNydWTlu4Eo6tixl5TdWY2izTNOooll5ix-Y0weV648jAz5nZ61HC0QZzP9phce7D4rVozz-1Qw",
"e": "AQAB",
"x5c": [
"MIIDBDCCAeygAwIBAgIhAI4ioYhsQvP+TfanCQ5cBFIMgWTgw1Zz6ZRdKXyaKtx8MA0GCSqGSIb3DQEBCwUAMCExHzAdBgNVBAMMFm94QXV0aCBDQSBDZXJ0aWZpY2F0ZXMwHhcNMTgwNjIwMjMzMDIwWhcNMTkwNjIwMjMzMDI5WjAhMR8wHQYDVQQDDBZveEF1dGggQ0EgQ2VydGlmaWNhdGVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArVyl3F36BIXhSNK2ed4BtuptJNc2VC+PbTBp1/EvzKdOZH6hoYAS7aOlZyzSGBJ653jH1omFwwB2m3bABrSrkJWwW2bw4z+20ZuuZTXkhjGTVJF971jXAz7WWu5x2JGNx/Y6xPeE1ikZD81JYKwSYFGJBKxW7P/H/CsmufPbXUty6LAt49BqJTOApP+pInmoJAwEwexoKwZ5lg9pid6bOFAQb/38yX4wlFJ5sIm9xi1zhvOJfLti2+T9Kfldi3hyTTLbt8p2nWZpNydWTlu4Eo6tixl5TdWY2izTNOooll5ix+Y0weV648jAz5nZ61HC0QZzP9phce7D4rVozz+1QwIDAQABoycwJTAjBgNVHSUEHDAaBggrBgEFBQcDAQYIKwYBBQUHAwIGBFUdJQAwDQYJKoZIhvcNAQELBQADggEBABhoycn6/mX07QTWcJ5G9neSjwur7iJxzcI2I3oXvewHQ+Hd5WI5YDh0zIBK5wAmaveUGWVTLHQayh1eOape0u+cHjaK1uoyB9j/PmRXgvVihpxG+oRHR6vWIb2BUzSNZ9zZLlDFhov3ZLeT4qtetj3Zp5WYd4mnTbmqZDHoXOu/ApXvIqCR0wnMZs90fK9ye/gImur2eLi145yyp2t1Q7HP6MqFhyX6lBXETyzJrgIxekJr0gOBrtAx4/DC8gODMsfDJI94QSso/l0EBp5Gmb1auwVT8g8B1yesOJmavcmnDADsqc3GjZTUt4DfDBl5sIulX4lcwEuYAyJV8BhgkNs="
]
}
所以我的问题是,为什么 org.springframework.security.oauth2.provider.token.store.jwk.JwkSetConverter
每当它看到用于签名的 key 以外的 key 时抛出异常?在我看来,集合中是否有加密 key 应该无关紧要。
可能我可以告诉 GLUU 不要包含这些 key ,但我似乎找不到任何支持这项工作的文档。
关于如何解决这个问题有什么想法吗?
最佳答案
在持久化中可以直接编辑jwks。您可以删除所有 enc
键,但这并不是真正好的遵循方法:
enc
key (如果关闭服务器上的自动 key 重新生成,您可以避免这种情况)。您可能想在 https://support.gluu.org 上提问
关于java - Spring Security OAuth 2 资源服务器 : converting jwks for jwt verification not supporting use==enc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121226/
首先,我使用'DefaultResourceRetriever',没有任何这样的配置: new DefaultResourceRetriever(1000, 1000); 然后我得到了以下异常 jav
我正在阅读 JWKS 并找到有关 key 轮换概念的信息 - https://developer.okta.com/docs/concepts/key-rotation/ 假设我在我的应用程序中使用
我正在尝试配置 Istio 身份验证策略来验证我们的 JWT。 我设置了策略并可以看到它生效了。但是它不允许任何东西连接。应用该策略时,如果我检查 istio-pilot 日志,我会发现它无法检索签名
我收到两个 JWT:一个 OpenID Connect ID token (id_token) 和一个访问 token (access_token)。 OpenID 的情况或多或少很清楚 - 我可以使
我正在 AWS Cognito 上验证访问 token 。我必须做的一件事是将 key 从 jwks.json(用户池的)转换为 rsa 公钥结构(取决于使用的 JWT API)。 所以 'n' 和
我正在使用 Firebase 对我的应用中的用户进行身份验证。 Firebase 生成一个 JWT token ,我需要在我的服务器上进行身份验证。我使用 tyk.io 来做这件事。 Tyk 支持这些
我使用 Azure AD 控制台配置 JWT token 。一切看起来都很好并且能够检索 token ,但我发现 JWKS_url ( https://login.microsoftonline.co
我使用 Azure AD 控制台配置 JWT token 。一切看起来都很好并且能够检索 token ,但我发现 JWKS_url ( https://login.microsoftonline.co
我正在使用 dgrijalva/jwt-go 和 lestrrat-go/jwx。 我试图实现的是使用 jwks 验证 wso2 jwt。 token (过期 token ): const token
我正在设计使用 IdentityServer4 来保护多个服务的原型(prototype),但需要注意的是,这些服务可能不会被迁移(在可预见的将来)以使用 ASP.NET Core 的 OWIN 中间
我正在我的 Keycloak 实例中配置一个外部身份提供者,并尝试让它使用外部 JWKS URL 验证 token 。使用从 JWKS 转换后的 PEM 工作正常,使用 URL 无效。 登录时 tok
按照文档 here和 there ,我设法设置了一个授权服务器,它发出用非对称 key 签名的 JWT 访问 token ,资源服务器使用公钥的本地副本在本地验证这些 token 。到目前为止一切顺利
我对使用 OIDC 的后端 api 授权流程有点困惑。 我已将 SPA 应用程序与其余后端 api react 。 我想允许应用程序客户端注册他们自己的 OIDC 提供商以进行登录/注册。 OpenI
我有一些 key ID 可用于验证 token ,但它是硬编码的,我不希望它是这样。我正在使用 jwks-rsa 库从 API 端点获取 key 并打开 token 以进行验证,但是获取是在 jwks
假设您使用 AWS,并且想使用 Cognito 使用基于 ID 的身份验证。 然后 aws 为您提供一个公钥,您可以使用它来验证 cognito 负载。 我们还假设您不想或不能使用任何像 jose 这
我通过包装并通过 Azure API 管理对其进行缓存来为下面的发现端点设置缓存。 https://openid-connect-eu.onelogin.com/oidc/.well-known/op
当使用 Amazon AWS Cognito Federated Identities 并在以下位置解析数据时: https://cognito-identity.amazonaws.com/.wel
我正在尝试实现一项服务 (API),以履行资源服务器的 OAuth 角色。我们有一个实现隐式流程的 Angular 客户端应用程序。我们使用 GLUU 作为我们的 OpenID 提供者。客户端应用程序
我有: 身份服务器 4, 具有 OpenId Connect 和混合流的 Mvc 应用 WebApi 应用 假设用户已经获得带有 id_token 和访问 token 的 cookie。然后他从 mv
我有: 身份服务器 4, 具有 OpenId Connect 和混合流的 Mvc 应用 WebApi 应用 假设用户已经获得带有 id_token 和访问 token 的 cookie。然后他从 mv
我是一名优秀的程序员,十分优秀!