5.10. 静态租户配置解析
当您在 application.properties 文件中设置多个租户配置时,您只需要指定租户标识符的解析方式。要配置租户标识符的解析,请使用以下选项之一:
这些租户解析选项会按照列出的顺序尝试,直到租户 id 被解决为止。如果租户 id 仍然未解析(null),则会选择默认(未命名)租户配置。
5.10.1. 使用 TenantResolver解析 复制链接链接已复制到粘贴板!
以下 application.properties 示例演示了如何使用 TenantResolver 方法解析名为 a 和 b 的两个租户的租户标识符:
您可以从 quarkus.oidc.TenantResolver 返回 a 或 b 的租户 ID:
在本例中,最后一个请求路径片段的值是一个租户 id,但如果需要,您可以实施更复杂的租户标识符解析逻辑。
5.10.2. 默认解析 复制链接链接已复制到粘贴板!
租户标识符的默认解析基于惯例,身份验证请求必须在请求路径的最后片段中包含租户标识符。
以下 application.properties 示例演示了如何配置名为 google 和 github 的两个租户:
在提供的示例中,两个租户都将 OIDC web-app 应用程序配置为使用授权代码流来验证用户,并在身份验证后生成会话 Cookie。在 Google 或 GitHub 验证当前用户后,用户将返回到经过身份验证的用户的 /signed-in 区域,如 JAX-RS 端点上的安全资源路径。
最后,要完成默认租户解析,请设置以下配置属性:
quarkus.http.auth.permission.login.paths=/google,/github quarkus.http.auth.permission.login.policy=authenticated
quarkus.http.auth.permission.login.paths=/google,/github
quarkus.http.auth.permission.login.policy=authenticated
如果端点在 http://localhost:8080 上运行,您也可以为用户提供登录到 http://localhost:8080/google 或 http://localhost:8080/github 的 UI 选项,而无需添加特定的 /google 或 /github JAX-RS 资源路径。身份验证完成后,租户标识符也会记录在会话 Cookie 名称中。因此,经过身份验证的用户可以访问安全应用程序区域,而无需将 google 或 github 路径值包含在安全 URL 中。
默认解析也可以用于 Bearer 令牌身份验证。仍然可能不太实际,因为租户标识符必须始终设置为最后一个路径片段值。
5.10.3. 使用注解解析 复制链接链接已复制到粘贴板!
您可以使用 io.quarkus.oidc.Tenant 注解来解析租户标识符,作为使用 io.quarkus.oidc.TenantResolver 的替代选择。
必须禁用主动 HTTP 身份验证(quarkus.http.auth.proactive=false)才能使它正常工作。如需更多信息,请参阅 主动身份验证 指南。
假设应用程序支持两个 OIDC 租户( hr 和 default 租户),所有带 @Tenant ("hr") 的资源方法和类都通过使用 quarkus.oidc.hr.auth-server-url 配置的 OIDC 供应商进行身份验证。相反,所有其他类和方法仍然通过使用默认 OIDC 供应商进行身份验证。
- 1
io.quarkus.oidc.Tenant注解必须放在资源类或资源方法上。