2018 年 5 月 31 日 由 Stian Thorgersen 撰写
在这篇文章中,您将看到如何在 OpenShift 上部署 Keycloak。您还将学习如何将基于 Node.js 的 REST 服务和 HTML5 应用程序部署到 OpenShift,并使用 Keycloak 来保护它们。
这里还有一个屏幕截图展示了这个示例:https://youtu.be/9zUWqbK3BqI
如果您还没有 OpenShift,一个好的起点是使用 MiniShift.
首先,使用 oc 在 OpenShift 中创建一个新项目,运行
oc new-project keycloak
接下来,将 Keycloak 模板导入 OpenShift,运行
oc replace --force -f "https://raw.githubusercontent.com/jboss-dockerfiles/keycloak"\ "/master/openshift-examples/keycloak-https.json"
现在打开 OpenShift 控制台,并打开 keycloak 项目。
点击“添加到项目”并“浏览目录”。在目录中,您应该找到 Keycloak。点击它。
点击信息页面上的“下一步”。在配置下,在“Keycloak 管理员用户名”和“Keycloak 管理员密码”字段中设置一个您能记住的用户名和密码。然后点击“创建”。点击“继续到项目概览”。
等待部署完成,然后点击应用程序的链接。您的浏览器会抱怨证书,因为它是一个自签名证书。忽略此错误并继续。点击“管理控制台”,然后使用您之前输入的用户名和密码登录。保持此选项卡打开,因为您以后会需要它。
您现在已将 Keycloak 部署到 OpenShift 上。
我们需要为我们将要保护的服务和应用程序创建客户端。
打开带有 Keycloak 管理控制台的选项卡。点击“客户端”并“创建”。对于“客户端 ID”,输入“service”并点击“保存”。在“访问类型”下,选择“bearer-only”并点击“保存”。
点击“客户端”并再次点击“创建”。对于“客户端 ID”,输入“app”并点击“保存”。对于“有效的重定向 URI”和“Web 来源”,输入“*”。在生产环境中,输入应用程序的正确 URL 至关重要,但由于这是一个演示,为了简便起见,我们将简单地允许所有 URL。在应用程序部署后,您可以轻松地将这些更新为应用程序的正确 URL。
保持 Keycloak 管理控制台选项卡打开,因为您以后会再次需要它。
返回带有 OpenShift 控制台的选项卡,再次点击“添加到项目”并“浏览目录”。这次点击“Node.js”。点击信息页面上的“下一步”,然后点击配置下的“高级选项”。
进行以下更改
点击“创建”,然后“继续到项目概览”。等待构建和部署完成,然后点击应用程序的链接。您应该看到“未找到!”。在 URL 中添加“/service/public”,您应该在 JSON 中看到“message: public”。
您现在已部署并保护了服务。保持此选项卡打开,因为您以后会需要它。
返回带有 OpenShift 控制台的选项卡,再次点击“添加到项目”并“浏览目录”。这次点击“PHP”。点击信息页面上的“下一步”,然后点击配置下的“高级选项”。
进行以下更改
点击“创建”,然后“继续到项目概览”。等待构建和部署完成,然后点击应用程序的链接。您应该已经登录。您现在可以通过点击“调用公共”调用不安全的端点,或点击“调用管理员”调用使用管理员角色保护的端点来调用服务。如果您点击“调用受保护”,它将失败,因为您登录的管理员用户没有用户角色。要能够调用此端点,请返回 Keycloak 管理控制台。创建一个名为“user”的 realm 角色。然后转到用户,找到您的管理员用户,并在角色映射中将用户角色添加到用户。
您现在已经部署并保护了应用程序,并了解了应用程序如何安全地调用您之前部署的服务。