OpenShift上的Keycloak

2018年5月31日,星期四,斯蒂安·托格森发布

在这篇文章中,您将看到如何在OpenShift上部署Keycloak。 您还将学习如何部署基于Node.js的REST服务和HTML5应用程序来OpenShift,并使用Keycloak保护这些服务。

还有一个截屏节目显示了这个例子https://youtu.be/9zUWqbK3BqI

如果您还没有OpenShift可用,那么开始的好地方就是使用迷你

部署Keycloak

首先,在OpenShift中创建一个新项目,使用oc运行:

oc新项目Keycloak

接下来要做的是通过运行将Keycloak模板导入到OpenShift中:

oc替换 -- force -f "https://raw.githubusercontent.com/jboss-dockerfiles/keycloak" \
"/master/openshift-示例/keycloak-https.json"

现在打开OpenShift控制台,打开keycloak项目。

单击添加到项目并浏览目录。 在目录中你应该找到Keycloak。 点击它。

在信息上单击下一步。 在 “配置” 下,设置可以在 “Keycloak管理员用户名” 和 “Keycloak管理员密码” 字段中记住的用户名和密码。 然后点击创建。 单击继续到项目概述。

等待部署完成,然后单击应用程序的链接。 您的浏览器会抱怨证书,因为它是自签名证书。 忽略这一点,继续。 单击管理控制台,然后使用之前输入的用户名和密码登录。 保持此选项卡打开,因为您稍后将需要它。

您现在已经将Keycloak部署到OpenShift上。

在Keycloak中配置客户端

我们需要为服务和我们将保护的应用程序创建客户端。

使用Keycloak管理控制台打开选项卡。 单击客户端并创建。 对于客户端ID,请输入服务,然后单击保存。 在访问类型下选择仅承载,然后单击保存。

单击客户端,然后再次创建。 对于客户端ID,请输入应用程序并单击保存。 对于有效的重定向uri和Web原始输入 *。 在生产环境中,为您的应用程序输入正确的URL非常重要,但是由于这是一个演示,因此我们将简单地允许所有URL。 部署应用程序后,您可以轻松地将这些url更新为正确的url。

将Keycloak管理控制台选项卡保持打开状态,稍后将再次需要它。

部署服务

使用OpenShift控制台返回选项卡,然后单击 “添加到项目并再次浏览目录”。 这次点击Node.js。 在信息上单击下一步,然后在配置下单击高级选项。

进行以下更改:

  • 名称: 服务
  • Git存储库URL: https://github.com/stianst/misc.git
  • 上下文目录: openshift/服务
  • 安全路由: 启用
  • TLS终止: 边缘
  • 不安全的流量: 重定向
  • 部署配置
    • KEYCLOAK_URL = https:// secure-keycloak-keycloak.192.168.42.52.nip.io/身份验证
将KEYCLOAK_URL的值替换为Keycloak的URL。 您可以通过使用Keycloak管理控制台返回选项卡来找到此选项 (将URL复制到并包括 “/auth”)。

单击创建,然后继续到项目概述。 等待构建和部署完成,然后单击应用程序的链接。 你应该看到 “没找到!”。 在url中添加 “/service/public”,您应该在JSON中看到 “message: public”。

您现在已经部署并保护了服务。 保持此选项卡打开以及以后需要时。

部署应用程序

使用OpenShift控制台返回选项卡,然后单击 “添加到项目并再次浏览目录”。 这次点击PHP。 在信息上单击下一步,然后在配置下单击高级选项。

进行以下更改:

  • 名称: app
  • Git存储库URL: https://github.com/stianst/misc.git
  • 上下文目录: openshift/应用
  • 安全路由: 启用
  • TLS终止: 边缘
  • 不安全的流量: 重定向
  • 部署配置
    • KEYCLOAK_URL = https:// secure-keycloak-keycloak.192.168.42.52.nip.io/身份验证
    • 服务网址 = https:// service-keycloak.192.168.42.240.nip.io/服务
将KEYCLOAK_URL的值替换为Keycloak的URL。 您可以通过使用Keycloak管理控制台返回选项卡来找到此选项 (将URL复制到并包括 “/auth”)。 另外,将SERVICE_URL的值替换为服务的URL。 您可以通过返回带有服务的选项卡 (将URL复制到并包括 “/service”) 来找到此选项。

单击创建,然后继续到项目概述。 等待构建和部署完成,然后单击应用程序的链接。 你应该已经登录了。 现在,您可以通过单击invoke Public来调用不安全的端点或调用Admin来调用受admin角色保护的端点来调用服务。 如果单击Invoke secred,它将失败,因为您登录的管理员用户没有用户角色。 为了能够调用此端点,请返回Keycloak管理控制台。 创建一个名为user的领域角色。 然后转到用户找到您的管理员用户,并在角色映射下将用户角色添加到用户。

现在,您已经部署并保护了应用程序,并了解了应用程序如何安全地调用以前部署的服务。