spookygames/flarum-ext-auth-keycloak

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

安装次数: 940

依赖项: 0

建议者: 0

安全: 0

星星: 17

关注者: 2

分支: 2

开放问题: 4

类型:flarum-extension

1.3.0.1 2023-06-21 21:29 UTC

README

Keycloak OAuth Flarum 扩展

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

安装

要安装,请使用composer

composer require spookygames/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。注意,对于版本小于20的Keycloak,“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”的用户显示名称驱动程序。