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 配置的所有方面。

以下是模板:

# OpenID Connect configuration requred at client side

# URL of OpenID Connect Provider - the URL after which ".well-known/openid-configuration" can be appended for
# discovery purposes
provider = http://localhost:18080/realms/hawtio-demo
# OpenID client identifier
client_id = hawtio-client
# response mode according to https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html
response_mode = fragment
# scope to request when performing OpenID authentication. MUST include "openid" and required permissions
scope = openid email profile
# redirect URI after OpenID authentication - must also be configured at provider side
redirect_uri = http://localhost:8080/hawtio
# challenge method according to https://datatracker.ietf.org/doc/html/rfc7636
code_challenge_method = S256
# prompt hint according to https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest
prompt = login

# additional configuration for the server side

# if true, .well-known/openid-configuration will be fetched at server side. This is required
# for proper JWT access token validation
oidc.cacheConfig = true

# time in minutes to cache public keys from jwks_uri
jwks.cacheTime = 60

# a path for an array of roles found in JWT payload. Property placeholders can be used for parameterized parts
# of the path (like for Keycloak) - but only for properties from this particular file
# example for properly configured Entra ID token
#oidc.rolesPath = roles
# example for Keycloak with use-resource-role-mappings=true
#oidc.rolesPath = resource_access.${client_id}.roles
# example for Keycloak with use-resource-role-mappings=false
oidc.rolesPath = realm_access.roles

# properties for role mapping. Each property with "roleMapping." prefix is used to map an original role
# from JWT token (found at ${oidc.rolesPath}) to a role used by the application
roleMapping.admin = admin
roleMapping.user = user
roleMapping.viewer = viewer
roleMapping.manager = manager

# timeout for connection establishment (milliseconds)
http.connectionTimeout = 5000
# timeout for reading from established connection (milliseconds)
http.readTimeout = 10000
# HTTP proxy to use when connecting to OpenID Connect provider
#http.proxyURL = http://127.0.0.1:3128

# TLS configuration (system properties can be used, e.g., "${catalina.home}/conf/hawtio.jks")

#ssl.protocol = TLSv1.3
#ssl.truststore = src/test/resources/hawtio.jks
#ssl.truststorePassword = hawtio
#ssl.keystore = src/test/resources/hawtio.jks
#ssl.keystorePassword = hawtio
#ssl.keyAlias = openid connect test provider
#ssl.keyPassword = hawtio
Copy to Clipboard

此文件配置 HawtIO+OpenID Connect 的一些方面:

  • OAuth2 - 配置授权服务器、客户端 ID 和几个 OpenID Connect 相关选项的位置
  • JWKS - 从 jwks_uri 获取的公钥缓存时间,这是公开授权服务器使用的公钥的端点。
  • JWT 令牌配置 - 有关声明(JSON Web Token 中的字段)的信息,其中包含与经过身份验证的用户关联的角色。我们还允许将授权服务器中定义的角色映射到应用程序(HawtIO 服务器和 Jolokia)使用的角色。
  • HTTP 配置 - 服务器端的 HTTP 客户端用于连接授权服务器(用于获取 OpenID Connect 元数据和公开的公钥)。

这个示例配置可根据特定的需求进行调整,但它在与容器化 Keycloak 一起使用时也可以按原样工作。(请参阅以下)。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat