是否有具有多个命名 Oidc 客户端的示例 quarkus 项目来调用多个服务调用?
Posted
技术标签:
【中文标题】是否有具有多个命名 Oidc 客户端的示例 quarkus 项目来调用多个服务调用?【英文标题】:is there a smaple quarkus project with multiple named OidcClients to call multiple service calls? 【发布时间】:2021-11-21 20:24:56 【问题描述】:正在寻找具有多个 OidcClients 的示例 quarkus 响应式项目以进行多个服务调用?
例如:DemoProject 想要调用服务 A、B、C、D。 DemoProject 使用 keycloak 授权,授权类型为密码。 服务A有OidcClientA,服务B有OidcClientB,服务C有OidcClientC,服务D有OidcClientD。 我们如何才能简单地将 OidcClient 注入特定服务并自动获取特定令牌、授权标头到特定服务?
Quarkus 文档:https://quarkus.io/guides/security-openid-connect-client
【问题讨论】:
请不要将编辑用作 cmets,最好将信息作为评论发布或编辑您自己的问题并更新您所尝试的内容。 您是否尝试过非过滤方法?,检查是否有效 【参考方案1】:我找不到任何示例项目,但我认为您只需要在属性文件中配置命名客户端即可通过OidcClients
类访问它们。
Here你可以找到更多信息。
如果您要单独使用每个服务,我建议您在休息客户端前创建一个外观或服务来处理这种复杂性,或者为每个服务休息客户端创建一个过滤器
【讨论】:
【参考方案2】:这是完全可能的,实际上非常容易。 问题是没有正确记录;我必须进入 quarkus 源代码才能找到它。
在您的 application.properties 中,只需在 quarkus.oidc-client 之后添加您想要的客户端名称。
例如,在命名客户端之前:
quarkus.oidc-client.auth-server-url=<url>
会变成
quarkus.oidc-client.<client-name>.auth-server-url=<url>
然后在代码中,在注入Tokens或OidcClient的地方,添加@NamedOidcClient("")即可。
就是这样!
我稍后会发布一个工作的 git。
【讨论】:
以上是关于是否有具有多个命名 Oidc 客户端的示例 quarkus 项目来调用多个服务调用?的主要内容,如果未能解决你的问题,请参考以下文章
是否有基于 OIDC 的基于 IDaaS 的社交登录的标准模式?