如果服务器 URL 的主机名不完全合格,如何在 OpenAM 中创建 Web 策略代理?

How to create a web policy agent in OpenAM given that the server URL has a not fully qualified hostname?

问题: 如果运行 OpenAM 的服务器 URL 没有完全限定的主机名,如何在 OpenAM 中创建 Web 策略代理?

初始情况: 对于概念证明 (POC),我使用 docker 模拟服务器结构。我有一个 apache 网络服务器作为资源服务器(docker 容器),一个用于访问管理的 OpenAM docker 容器,以及在第三个容器中作为客户端的烧瓶网络应用程序 运行。我通过 GUI 配置了 OpenAM。 到目前为止,我的 Flask 应用程序可以使用指定的简单请求来验证、请求和检索访问令牌 here。 但是现在我也想保护apache资源服务器。 对于没有烧瓶的开始,只需在 apache 网络服务器上安装 OpenAM Web Policy Agent 并按照 this 官方 ForgeRock 指南在 OpenAM 中配置 Web Policy Agent 配置文件。

问题: 使用 GUI 在 OpenAM 中配置代理配置文件时,OpenAM 容器的域名 http://openam:8080/openam 不被接受为有效服务器 URL。

如果我改用例如http://openam.local:8080/openam错误不显示。

到目前为止我尝试了什么:

  1. 我添加了一个用作反向代理的 Nginx 容器,并使用它将容器的主机名更改为 <container>.local。现在我可以到达容器,例如通过 http://openam.local:8080/openamhttp://apache.local:8080。 但是,当我现在使用 http://openam.local:8080/openam 访问 OpenAM GUI 时,输入默认密码,然后按 Create Configuration,配置失败并显示以下消息:
  2. 无法解决 (1) 的问题我想我记得 Nginx 设置,而是尝试使用命令行配置代理配置文件 - 希望上述错误 Hostname of server URL is not fully qualified 仅限于图形用户界面。对于通过命令行进行的设置,存在简单的命令 ./ssoadm create-agent ... 作为描述 here。但是 ssoadm 已被弃用,取而代之的是 Amster,我无法弄清楚如何使用 Amster.
  3. 配置代理策略

这是 OpenAM 控制台/服务验证中的错误,它被跟踪为 OPENAM-16073

但是现在有一些 OpenAM 分支。我会鼓励那些人重命名他们的产品/项目,因为它很混乱。

当按照原始问题中的描述使用 docker 时,您可以使用 -h 标志简单地设置容器的主机名。

OpeanAM 示例:

docker run -h openam.example.com -p 8080:8080 --name openam openidentityplatform/openam

示例 Apache Web 服务器:

docker run -it --name apache_agent -p 80:80 -h example.com --shm-size 2G --link=openam  apache_agent

现在可以通过 http://openam.example.com:8080/openam 访问 OpenAM,通过 http://example.com.

访问 apache 服务器

OpenAM 配置运行没有错误,并且在配置 Web 策略代理时 URL 是完全合格的。

开始使用 OpenAM 的参考资料和最佳资源是来自 OpenAM git 存储库维基的 Quick-Start-Guide