nikochian / flarum-ext-auth-keycloak
允许用户使用Keycloak登录/注册/登出。
1.0.0
2023-11-29 09:27 UTC
Requires
- flarum/core: ^1.3
- stevenmaguire/oauth2-keycloak: 4.0.0
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。
为了将Keycloak角色映射到Flarum组,您必须从userinfo端点使角色可见。为此,向您的客户端添加一个映射器。
在“域设置”标签页中,找到由OpenId Connect工作流程使用的密钥(默认为RS256)。同时复制算法以及公钥。
扩展设置
最终,扩展设置将如下所示:
- 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的用户显示名称驱动程序。