编程笔记

lifelong learning & practice makes perfect

SSO|Keycloak(一)实现认证/授权

部署Keycloak

使用dev模式启动,自定义配置可以放到conf下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
version: '3.9'
services:
keycloak:
image: quay.io/keycloak/keycloak:24.0.3
environment:
# KC_DB: mysql
# KC_DB_SCHEMA: keycloak
# KC_DB_USERNAME: kc
# KC_DB_PASSWORD: xxxxxx
# KC_DB_URL_HOST: xxx.xxx.xxx.xxx
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KC_PROXY: edge
KC_HOSTNAME_STRICT: false
KC_RUN_IN_CONTAINER: true
mem_limit: 500m
mem_reservation: 400m
command:
- start-dev
#- --optimized
container_name: keycloak
volumes:
- ./conf/:/opt/keycloak/conf
restart: always
ports:
- 8080:8080

认证/Authentication

Authentication 是确认身份的过程。在计算机安全领域,它通常涉及到确保用户或其他实体是他们自称的那个人,
这通常通过用户名和密码、生物识别方法或其他形式的身份凭证来完成。

在Keycloak中,认证过程涉及到创建一个realm和client,并配置身份验证流。以下是详细步骤:

1. 创建Realm

  1. 登录到Keycloak的Admin Console:

    • 打开浏览器,访问Keycloak的管理控制台,通常是http://<your-domain>:8080/auth/admin/
    • 使用管理员账户登录(在docker-compose文件中设置的用户名和密码)。
  2. 添加新的Realm:

    • 登录后,点击左上角的下拉菜单,选择”Add Realm”。
    • 输入Realm名称(例如my-realm),可以添加描述,点击创建。

2. 创建Client

  1. 导航到Clients:

    • 在新创建的Realm中,点击左侧菜单中的”Clients”。
  2. 创建新的Client:

    • 点击右上角的”Create”按钮。
    • 输入Client ID(例如my-client),选择Client Protocol(例如openid-connect)。
    • 点击保存。
  3. 配置Client:

    • 在创建后的Client页面,配置Client的详细信息:
      • Redirect URI: 设置允许的重定向URI(例如http://localhost:8080/*)。
      • Web Origins: 设置允许的Web Origins(例如http://localhost:8080)。
      • Access Type: 选择confidential(机密)或者public(公共),根据应用需求。

3. 配置身份验证流

  1. 导航到Authentication:

    • 在Realm设置中,点击左侧菜单中的”Authentication”。
  2. 配置浏览器认证流:

    • 在”Flows”标签下,找到”Browser”流。
    • 可以根据需求自定义各个步骤,如添加多因素认证(MFA),修改表单验证等。
  3. 配置注册流:

    • 在”Flows”标签下,找到”Registration”流。
    • 可以自定义用户注册过程,如添加验证码验证,邮箱验证等。

4. 配置用户和角色

  1. 创建用户:

    • 在Realm设置中,点击左侧菜单中的”Users”。
    • 点击右上角的”Add user”按钮。
    • 输入用户名和其他必要信息,点击保存。
    • 在用户详情页面,导航到”Credentials”标签,设置用户密码。
  2. 创建角色:

    • 在Realm设置中,点击左侧菜单中的”Roles”。
    • 点击右上角的”Add Role”按钮。
    • 输入角色名称(例如user),点击保存。
  3. 分配角色给用户:

    • 在用户详情页面,导航到”Role Mappings”标签。
    • 在”Available Roles”中选择要分配的角色并添加。

5. 测试认证

  1. 访问Client应用:

    • 打开浏览器,访问Client应用的登录页面(例如http://localhost:8080)。
    • 应该会被重定向到Keycloak的登录页面。
  2. 登录测试:

    • 使用之前创建的用户账户登录。
    • 如果配置正确,登录成功后会被重定向回Client应用。

结论

通过以上步骤,您已经在Keycloak中完成了基本的认证配置。Keycloak提供了强大的身份验证功能,可以根据需要进行高度定制。通过创建Realm、Client、用户和角色,并配置身份验证流,您可以确保用户身份的安全验证。如果需要更高级的功能,如多因素认证(MFA)或外部身份提供者集成(如LDAP、社交登录),Keycloak也提供了相应的支持。

授权/Authorization

Authorization 是确定一个已经过认证的用户或实体是否有权执行特定操作的过程。通常涉及到检查一个用户的权限,
以确定他们是否有权访问系统中的资源或执行请求的操作。Keycloak中支持多种授权策略,包括RBAC,ABAC,GBAC等等

RBAC

参考

欢迎关注我的其它发布渠道