15.2. HawtIO 中的通用 OpenID Connect 身份验证
HawtIO 4 可以与现有 OpenID Connect 供应商(如 Keycloak、Microsoft Entra ID、Auth0, …)一起使用,并使用这些库来填充任务:
- Apache HTTP 客户端 4 将来自 HawtIO 服务器的 HTTP 通信实施到 OpenID Connect 供应商(例如,检索有关令牌签名验证的公钥的信息)。
- Nimbus JOSE + JWT 库,以操作和验证 OpenID Connect / OAuth2 访问令牌。
这些库包含在 HawtIO Server WAR 中,这意味着不需要安装/部署任何其他库(就像 Keycloak 特定的配置一样)。为了配置带有外部 OpenID Connect 提供商的 HawtIO,我们需要提供一个配置文件,并将 HawtIO 指向其位置。
指定 OIDC (OpenID Connect)配置的位置为 -Dhawtio.oidcConfig
,但没有指定,则会检查默认位置。默认值为:
-
对于 Karaf runtime,
${karaf.base}/etc/hawtio-oidc.properties
-
对于 Jetty runtime,
${jetty.home}/etc/hawtio-oidc.properties
-
对于 Tomcat 运行时,
${catalina.home}/conf/hawtio-oidc.properties
-
对于 JBoss/EAP/Wildfly 运行时,
${jboss.server.config.dir}/hawtio-oidc.properties
-
对于 Apache Artemis 运行时,
${artemis.instance.etc}/hawtio-oidc.properties
-
回退到
classpath:hawtio-oidc.properties
(用于嵌入式 HawtIO 用法)
与 Keycloak 特定的配置不同,只有一个 2.2.properties 文件来配置 OpenID Connect 配置的所有方面。
以下是模板:
此文件配置 HawtIO+OpenID Connect 的一些方面:
- OAuth2 - 配置授权服务器、客户端 ID 和几个 OpenID Connect 相关选项的位置
- JWKS - 从 jwks_uri 获取的公钥缓存时间,这是公开授权服务器使用的公钥的端点。
- JWT 令牌配置 - 有关声明(JSON Web Token 中的字段)的信息,其中包含与经过身份验证的用户关联的角色。我们还允许将授权服务器中定义的角色映射到应用程序(HawtIO 服务器和 Jolokia)使用的角色。
- HTTP 配置 - 服务器端的 HTTP 客户端用于连接授权服务器(用于获取 OpenID Connect 元数据和公开的公钥)。
这个示例配置可根据特定的需求进行调整,但它在与容器化 Keycloak 一起使用时也可以按原样工作。(请参阅以下)。