spookygames / flarum-ext-auth-keycloak
允许用户使用Keycloak登录/注册/登出。
1.3.0.1
2023-06-21 21:29 UTC
Requires
- flarum/core: ^1.3
- stevenmaguire/oauth2-keycloak: 4.0.0
This package is auto-updated.
Last update: 2024-09-30 10:55:51 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。
为了将Keycloak角色映射到Flarum组,您必须从userinfo端点使角色可见。为此,向您的客户端添加一个映射器。
在“领域设置”标签页中,找到OpenId Connect工作流程使用的密钥(默认为RS256)。同时复制算法和公钥。
扩展设置
最后,扩展设置将是
- 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”的用户显示名称驱动程序。



