nikochian/flarum-ext-auth-keycloak

允许用户使用Keycloak登录/注册/登出。

安装: 30

依赖: 0

建议者: 0

安全: 0

星星: 1

关注者: 1

分支: 0

开放问题: 0

类型:flarum-extension

1.0.0 2023-11-29 09:27 UTC

This package is not auto-updated.

Last update: 2024-10-03 08:45:37 UTC


README

Keycloak OAuth Flarum 扩展

允许用户使用Keycloak进行登录/登出。

安装

要安装,请使用composer

composer require nikochian/flarum-ext-auth-keycloak

使用

  • 通过Composer / Packagist安装扩展
  • 在Flarum的admin/extensions中启用扩展
  • 填写扩展的设置字段
  • 确保在admin/permissions中开启注册(原因在此

Keycloak配置

为Keycloak版本4.8.3-final编写,测试到21.1.1,以及Flarum 1.3.0。您的体验可能会有所不同。

在“客户端”标签页中,为您Flarum实例添加一个新的客户端(或使用现有的一个)。根URL应该是您Flarum实例的URL。

Add Keycloak client

为了将Keycloak角色映射到Flarum组,您必须从userinfo端点使角色可见。为此,向您的客户端添加一个映射器。

Create Keycloak mapper

Add role mapper to Keycloak client

在“域设置”标签页中,找到由OpenId Connect工作流程使用的密钥(默认为RS256)。同时复制算法以及公钥。

Find Keycloak keys

扩展设置

最终,扩展设置将如下所示:

  • Keycloak版本:您Keycloak实例的版本。
  • 服务器URL:到您Keycloak实例的URL,例如 https://keycloak.example.com/auth。注意Keycloak版本<20时,"auth"后没有斜杠。
  • 域:为您的Flarum创建的认证域。
  • 客户端ID:您上面创建的客户端名称。
  • 客户端密钥:如果您没有覆盖,则默认为客户端ID。
  • 加密算法:默认为RS256。
  • 加密密钥(或证书):您可以将按下Keycloak上的“公钥”按钮后显示的内容复制到这里。
  • 角色到组映射:一个以角色为键,组名为值的关联数组,以JSON格式。示例:{"ROLE_MEMBER":"Member","ROLE_MODERATOR":"Mods","ROLE_ADMIN":"Admin"}
  • 属性映射:一个以Keycloak属性为键,Flarum用户属性为值的关联数组,以JSON格式。可能用于其他扩展。不要忘记在Keycloak上设置客户端映射器!示例:{"moniker":"nickname","badges":"badges"}
  • 委托头像:如果启用,将使用Keycloak的“picture”属性来处理用户头像,而不是Flarum的默认行为。

故障排除

创建了一个与实际用户名不匹配的奇怪名称,如'tgtplwexeowwluxnqid4cjgw'(原始问题

Flarum仅允许与正则表达式 /[^a-z0-9-_]/i 匹配的用户名。每个“preferred_username”不匹配此表达式的Keycloak用户将被分配一个随机名称,以及一个合适的Flarum“昵称”。为了显示昵称而不是随机用户名,激活昵称扩展并使用名为nickname的用户显示名称驱动程序。