php - 如何将 Keycloak 设置为 humhub 的身份验证提供程序

标签 php yii2 keycloak openid-connect humhub

我有一个运行 humhub 1.3.14 的本地 apache2 服务器。 我的目标是将位于我的 rancher 集群上的 Keycloak 设置为 humhub 的身份验证提供程序。

选择“keycloak OpenId Connect”后,用户成功重定向到 keycloak 服务器。用户通过身份验证后,keycloak 重定向回我的本地 humhub 服务器。 humhub 提示道: “无法验证 JWS:不安全的连接”。 为了验证 JWS,humhub 使用 yii2-authclient/src/OpenIdConnect.php ,它需要“spomky-labs/jose:~5.0.6”(已被放弃,但 yii2 仍然使用它)。

在 humhub/protected/vendor/yiisoft/yii2-authclient/src/OpenIdConnect.php 设置

$validateJws = false 

什么也不做。

humhub/protected/config/common.php:

return [
'params' => [
    'enablePjax' => false
],
'components' => [
    'urlManager' => [
        'showScriptName' => false,
        'enablePrettyUrl' => false,
    ],
'authClientCollection' => [
        'class' => 'yii\authclient\Collection',
    'clients' => [
        'keycloak' => [
        'class' => 'yii\authclient\OpenIdConnect',
        'issuerUrl' => 'https://xxxx/auth/realms/humhub',
        'clientId' => 'humhub',
        'clientSecret' => 'xxxxxxx',
        'name' => 'keycloak',
        'title' => 'Keycloak OpenID Connect',
        'tokenUrl' => 'https://xxxx/auth/realms/humhub/protocol/openid-connect/token',
        'authUrl' => 'https://xxxx/auth/realms/humhub/protocol/openid-connect/auth',
        'validateAuthState' => 'false',
        'validateJws' => 'false',

        ],
    ],
    ]
]

];

有人可以帮忙吗? 需要更多信息吗?

更新


“spomky-labs/jose”更新为“spomky-labs/jose:~6.1.0”后,humhub的响应更改为:

"Unable to verify JWS: The provided sector identifier URI is not valid: scheme must be one of the following: ["https"]."

更新


我也在运行 humhub 的本地 apache2 服务器上启用了 https。 由于与当前 humhub 版本 1.3.14 的兼容性问题,我还将 spomky-labs/jose 降级回版本 5.0.6。 之后,JWS 错误似乎已修复,但出现了新错误:

enter image description here

这是否是由于 JWS 中的内容类型不是“application/json”而只是“”(空)引起的? 如果是这样,如何解决?

最佳答案

最后我找到了解决方案:它运行得不好,因为 humhub 的 OIDC 适配器中没有包含规范。从 Keycloak 定向回来后,出现以下错误:

Error after redirect back to humhub from Keycloak

OpenId Connect 1.0 规范描述了 ID token 必须使用 JWS(Json Web 签名)进行签名。 Keycloak 会执行此操作,但不会设置“cty”字段。至于https://www.rfc-editor.org/rfc/rfc7515#section-4.1.10 (RFC7515),此字段是可选的,这意味着 Humhub (v. 1.3.13) 具有错误实现的 Open ID Connect 1.0 适配器,因为它将此字段设置为强制字段。

关于php - 如何将 Keycloak 设置为 humhub 的身份验证提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57242360/

相关文章:

PHP 提交时出现成员(member)注册问题

php - 由于 'cannot be blank' 验证规则,在 save() 上出现 'file' 错误

sql-server - 在 Azure WebApp 中使用 SQL Server 运行 Keycloak 19

php - 当 IIS 和 Wamp 都在运行时,错误模块 'xmlrpc' 已经加载

php - 可以将 Zend Form 2 与 Zend Framework 1 一起使用吗?

php - Laravel 5.5 带有 cron 的调度程序命令

yii2 - 使用存储过程保存到多个表中

logging - Heroku yii2-app-basic 不记录

ssl - Keycloak 独立 HTTPS 配置引发错误,提示在 keystore 中找不到 key

session - Keycloak 注销请求不会注销用户