搜索

第 5 章 配置主机名

download PDF

5.1. 服务器端点

红帽构建的 Keycloak 会公开不同的端点,以便与应用程序进行通信,并允许访问管理控制台。这些端点可以归类为三个主要组:

  • frontend
  • 后端
  • 管理控制台

每个组的基本 URL 对签发和验证令牌具有重要影响,关于如何为需要用户重定向到红帽构建的 Keycloak 的操作创建链接(例如,通过电子邮件链接重置密码)以及更重要的是,应用程序在从 realms/{realm-name}/.well-known/openid-configuration 中获取 OpenID Connect Discovery Document 操作时如何发现这些端点。

5.1.1. frontend

frontend 端点是指通过公共域访问,通常与通过前端通道进行的身份验证/授权流相关的。例如,当 SPA 想要验证其用户时,它会将他们重定向到 authorization_endpoint,以便用户可以通过前端通道使用浏览器进行身份验证。

默认情况下,如果没有设置主机名设置,这些端点的基本 URL 基于传入请求,因此 HTTP 方案、主机、端口和路径与请求相同。默认行为还直接影响到服务器如何发出令牌,因为签发者也基于设置为 frontend 端点的 URL。如果没有设置主机名设置,则令牌签发者也会基于传入请求,并在客户端使用不同的 URL 请求令牌时缺少一致性。

当部署到生产环境时,对于 frontend 端点和令牌签发者,您通常需要一个一致的 URL,无论请求是如何构建的。为了实现此一致性,您可以设置主机名或 hostname -url 选项。

大多数时候,应该足以设置 hostname 选项,以便仅更改前端 URL 的主机

bin/kc.[sh|bat] start --hostname=<host>

当使用 hostname 选项时,服务器将自动解析 HTTP 方案、端口和路径,以便:

  • 使用 HTTPS 方案,除非您设置了 hostname-strict- https =false
  • 如果设置了 proxy-headers 选项,代理将使用默认端口(例如: 80 和 443)。如果代理使用不同的端口,则需要通过 hostname-url 配置选项指定它

但是,如果您不仅要设置主机,同时希望设置方案、端口和路径,您可以设置 hostname-url 选项:

bin/kc.[sh|bat] start --hostname-url=<scheme>://<host>:<port>/<path>

这个选项为您提供了更大的灵活性,因为您可以通过单个选项设置 URL 的不同部分。请注意,主机名和 hostname-url 是互斥的。

注意

通过 主机名和 proxy-headers 配置选项,您只能影响静态资源 URL、重定向 URI、OIDC 已知的端点等。若要更改服务器实际侦听的端口,您需要使用 http/tls 配置选项(如 http-hosthttps-port 等等)。如需了解更多详细信息,请参阅配置 TLS 和所有 配置

5.1.2. 后端

后端端点是那些通过公共域或通过专用网络访问的端点。它们用于服务器和客户端之间的直接通信,而无需任何中间,但是普通 HTTP 请求。例如,在验证 SPA 后,希望通过向 token_endpoint 发送令牌请求来交换具有一组令牌的服务器发送的 代码

默认情况下,后端端点的 URL 也基于传入的请求。要覆盖此行为,请输入以下命令设置 hostname-strict-backchannel 配置选项:

bin/kc.[sh|bat] start --hostname=<value> --hostname-strict-backchannel=true

通过设置 hostname-strict-backchannel 选项,后端端点的 URL 将与 frontend 端点完全相同。

当所有连接到红帽构建的 Keycloak 的应用程序都通过公共 URL 进行通信时,请将 hostname-strict-backchannel 设置为 true。否则,将此参数保留为 false,以允许通过专用网络进行客户端-服务器通信。

5.1.3. 管理控制台

服务器使用特定 URL 公开管理控制台和静态资源。

默认情况下,管理控制台的 URL 也基于传入请求。但是,如果要使用特定 URL 限制对管理控制台的访问,您可以设置特定的主机或基本 URL。与设置 frontend URL 类似,您可以使用 hostname-adminhostname-admin-url 选项来实现这一目的。请注意,如果启用了 HTTPS (http-enabled 配置选项被设置为 false,这是生产模式的默认设置),红帽构建的 Keycloak 服务器会自动假设您要使用 HTTPS URL。然后,管理控制台会尝试通过 HTTPS 联系红帽构建的 Keycloak,HTTPS URL 也用于其配置的重定向/Web 原始 URL。不建议在生产环境中使用,但您可以使用 HTTP URL 作为 hostname-admin-url 来覆盖此行为。

大多数时候,设置 hostname-admin 选项应该只更改管理控制台 URL 的主机

bin/kc.[sh|bat] start --hostname-admin=<host>

但是,如果您不仅要设置主机,同时希望设置方案、端口和路径,您可以设置 hostname-admin-url 选项:

bin/kc.[sh|bat] start --hostname-admin-url=<scheme>://<host>:<port>/<path>

请注意,hostname-adminhostname-admin-url 是互斥的。

为减少受攻击面,红帽构建的 Keycloak 管理端点不应公开访问。因此,您可以使用反向代理来保护它们。有关使用反向代理公开的路径的更多信息 ,请参阅使用反向代理

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.