ool*_*ole 5 java jwt jwk quarkus smallrye
有没有办法允许来自多个来源的 JWT?
我有一个 REST API,只允许通过不记名令牌身份验证进行访问,而且我实际上只需要验证这些令牌,因此我并不真正需要 OIDC 带来的所有附加功能。
假设我将 Keycloak 设置为身份提供者。我会相应地配置 quarkous-oidc 。但现在我还想允许我在另一个服务中创建 JWT,用于服务到服务的通信。这不是身份提供者,但我只是使用 Smallrye-jwt 来创建一些“内部”令牌。
所以实际上我似乎更愿意使用 quarkus-smallrye-jwt,但我无法为多个租户配置它。
我认为合并 JWKS 中的密钥并将其提供给 quarkus-smallrye-jwt 最终会起作用。但也许有一个我没有看到的更优雅的解决方案。
使用 microprofile-jwt(smallrye-jwt),您可以选择使用JWKS(Json Web Key Set)作为您的mp.jwt.verify.publickey.location属性。这使您可以信任多个发行人发行的代币。但是,您将无法验证issuerjwt 令牌字段中的多个值,因为它仅支持单个值,或者为每个发行者定义不同的配置。
您可以手动创建 JWKS,组合来自身份验证提供程序的密钥信息并将其嵌入/安装到您的应用程序中,或者您可以实现一些动态生成它的端点(例如,它会定期调用 2 个 Keycloaks JWKS url 并组合生成的输出新JWKS)
如果您需要对验证进行更多控制,那么您需要创建自己的实现并将其与 MP JWT/Quarkus 集成。一种选择可能是JWTCallerPrincipalFactory为 Smallrye-jwt 提供自定义 - 请参阅有关自定义工厂的文档。在那里您可以读取任何自定义配置(例如my.app.jwt.issuers=trustedIssuer1,trustedIssuer2并自己处理验证,也许重用smallrye已经提供的类(JWTAuthContextInfo,JWTParser...)
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |