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”,然后点击 “保存”。
再次点击 “客户端”,然后点击 “创建”。在 “客户端 ID” 中输入 app,然后点击 “保存”。在 “有效的重定向 URI” 和 “Web 来源” 中输入 *。在生产环境中,非常重要的是输入应用程序的正确 URL,但由于这是一个演示,我们为了简单起见,将允许所有 URL。在应用程序部署后,你可以轻松地将这些更新为应用程序的正确 URL。
保持 Keycloak 管理控制台选项卡打开,稍后会再次用到它。
回到 OpenShift 控制台的选项卡,再次点击 “添加到项目”,然后点击 “浏览目录”。这次点击 “Node.js”。在信息页面点击 “下一步”,然后点击 “配置” 下的 “高级选项”。
进行以下更改
点击 “创建”,然后点击 “继续到项目概览”。等待构建和部署完成,然后点击应用程序的链接。你应该看到 “Not found!”。在 URL 中添加 “/service/public”,你应该看到 JSON 格式的 “message: public”。
你现在已经部署并保护了服务。保持此选项卡打开,稍后也需要用到它。
回到 OpenShift 控制台的选项卡,再次点击 “添加到项目”,然后点击 “浏览目录”。这次点击 “PHP”。在信息页面点击 “下一步”,然后点击 “配置” 下的 “高级选项”。
进行以下更改
点击 “创建”,然后点击 “继续到项目概览”。等待构建和部署完成,然后点击应用程序的链接。你应该已经登录了。你现在可以通过点击 “调用 Public” 来调用未受保护的端点,或者点击 “调用 Admin” 来调用受 admin 角色保护的端点。 如果你点击 “调用 Secured”,它将失败,因为你登录的 admin 用户没有 user 角色。为了也能够调用这个端点,请返回到 Keycloak 管理控制台。创建一个名为 user 的 realm 角色。然后转到用户,找到你的 admin 用户,并在角色映射下,将 user 角色添加到该用户。
你现在已经部署并保护了应用程序,并且了解了应用程序如何安全地调用你之前部署的服务。