如何使用docker在本地运行keycloak&用Keycloak和Docker保护你的应用程序

2,413 阅读6分钟

嘿,伙计们!在上一篇博客中,我们讨论了keycloak服务和它的特点。所以我假设你已经了解了keycloak。在这篇博客中,我们将讨论如何使用docker在本地运行keycloak,并在三个步骤中确保一个应用程序的安全。让我们开始吧。

首先让我们简单地讨论一下_Keycloak_

Keycloak

Keycloak是一个开源的 身份和访问管理解决方案,针对现代应用和服务。它使应用程序和服务的安全变得很容易,几乎不需要代码,这意味着你只需要配置功能,不需要写代码。因此,它将节省开发时间。

Docker

Docker是一个软件平台,旨在通过使用容器使创建、部署和运行应用程序变得更容易。它允许开发者将一个应用程序与它所需要的所有部分打包在一个容器中,然后作为一个包运送出去。

步骤1:获取并运行Keycloak docker容器

使用 docker允许我们获得和运行容器,以执行广泛的软件包,所以一个非常流行的软件如 KeyCloak 也不例外。

访问Docker Hub,找到并下载docker镜像,包括无数的软件包的清单

打开终端,运行下面的命令,以检查你的docker安装。

$ docker version
Server: Docker Engine - Community
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8891c58
  Built:            Mon Dec 28 16:15:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

如果你得到一个像上面显示的信息,这意味着你的docker安装是OK的。然后你就可以继续获得 钥匙环作为docker镜像,输入下面的命令。

$ docker pull jboss/keycloak:12.0.4

前面的命令将下载12.0.4版本的 Keycloak的镜像,所以现在你可以在你的本地机器上运行它。

$ docker run --name myKeyCloak -p 8089:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -d jboss/keycloak:12.0.4

如果一切顺利,你可以通过输入以下命令看到运行中的容器。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
b5ea3759f75b   jboss/keycloak          "/opt/jboss/tools/do…"   9 seconds ago   Up 9 seconds   8443/tcp, 0.0.0.0:8089->8080/tcp   myKeyCloak

然后你就可以通过打开浏览器并输入 Keycloak实例,打开一个浏览器,输入以下网址http://localhost:8089

Keycloak主页

第2步:在Keycloak上配置境界和用户

一旦_Keycloak_ 容器 ,我们就可以访问该平台了,下一步是配置该平台以管理我们应用程序的认证和授权要求。为了做到这一点,你需要点击管理控制台,用运行容器时提供的凭证(在我们的例子中是用户和密码admin)登录。成功登录后,我们将被重定向到主仪表板,那里显示的是默认的 主境界 显示。

境界

境界是Keycloak中的一个概念,指的是一个负责定义安全策略域的对象,应用于用户及其证书、角色和组。在Keycloak中一个用户只属于一个境界,登录Keycloak的用户将登录到该用户的境界。

默认的主境界页面

创建一个应用程序_境界_

  • 使用你的管理员账户凭证进入你的_Keycloak_安装管理页面(http://localhost:8089/auth/admin/)
  • 进入主控下拉菜单(左上角区域),点击_"添加境界 "_按钮,如下图所示。

添加境界按钮

  • 为你将用于管理应用程序安全的_境界_提供一个名称(请记住,境界_名称是区分大小写的)。在我们的例子中,我们将使用_my-demo-app这个名字。

添加境界表格

  • 在点击了 创建按钮,新的_境界_将被创建,并显示刚创建的_境界__(my-demo-app_)的主页面。

我的演示应用程序主页面

为该应用程序创建一个用户

创建_境界_后,我们需要在刚刚创建的_my-demo-app__境界_内创建一个用户。

  • 转到刚刚创建的My- demo-app _境界_主页面。
  • 点击左侧菜单上的_Users_按钮,看到一个空的用户列表。这很好,因为我们刚刚创建了境界,默认情况下它是空的。
  • 接下来,点击放置在页面右上方的 "添加用户 " 按钮,如下图所示。

用户部分

  • 在表格中填写用户的信息。将_电子邮件验证_ 设置为 开启,这样当前用户就不需要这个验证。另外,如下所示,你可以配置几个动作,让用户在验证账户之前执行。一旦完成,点击保存 按钮,创建用户。

添加用户

  • 最后要做的是,在能够用该用户登录之前,先到凭证 处填写密码和密码确认字段,并在临时 字段旁边 选择关闭(这样我们就不会在第一次登录时被迫更新密码)。然后点击设置密码按钮。

凭证部分

最后,我们准备测试一下我们刚刚创建的用户是否有效,是否可以成功登录。所以,以管理员身份登录,在浏览器中输入以下网址:http://localhost:8089/auth/realms/my-demo-app/account/(这是_Keycloak_ 启用的网址,用于管理与my-demo-app相关的领域的访问)。点击 登录 (右上角) 并使用刚刚创建的用户账户的凭据。如果一切顺利,你应该看到下面的屏幕,右上角是用户的名字和姓氏。在这个页面上,用户可以管理该账户。

用户登录的主要部分

第3步:保护你的应用程序

你的服务器已经做好了一切准备 Keycloak服务器的一切准备就绪,允许你的应用程序对其进行登录,所以让我们继续创建一个客户端来处理应用程序的请求。

为你的应用程序创建一个客户端适配器

打开你的应用程序的管理控制台 Keycloak(http://localhost:8089/auth/admin),用你的管理证书登录。点击 客户端在左边的菜单上,点击 创建 按钮,位于客户表的顶部。然后填写下图所示的表格,并点击保存按钮。

客户端凭证形式

客户端ID指定用于令牌和URI的识别字符串。这对你的安装来说必须是唯一的 Keycloak这对你的安装来说必须是唯一的,并且必须引用到一个特定的应用程序。

钥匙环我们提供了一个样本应用程序,你可以用它来尝试你的服务器,而不需要自己编写一个假的应用程序。这个应用程序可以通过以下网址(https://www.keycloak.org/app/)访问,这个网址就是我们在 根网址 字段中输入的。

试用时间!

打开一个浏览器标签,输入样本应用程序的网址(https://www.keycloak.org/app/)。然后在表格中填写我们的Keycloak实例运行的网址(http://localhost:8089/auth),以及我们的境界和客户端的配置。 Keycloak。 如果你已经按照教程的要求,你的配置应该如下。

配置

在检查了一切都正确之后,点击保存按钮,你会看到一个 登录 按钮。点击它,你将被重新引导到 Keycloak登录页面。使用用户证书(用户名:my-demo-app-user和在步骤2中创建的密码),你将被重定向到应用程序和你的用户账户信息,这就是全部了

使用Keycloak成功登录

结论与未来工作

在这篇博客中,我们展示了如何轻松地创建自己的自定义身份和访问管理解决方案KeycloakDocker。 与正确配置的Keycloak 服务器一起工作, ,你可以摆脱所有这些模板代码来管理你自定义应用程序的认证和授权。

参考资料