如何将Keycloak设置为humhub的身份验证提供者

时间:2019-07-28 15:32:33

标签: php yii2 apache2 openid-connect humhub

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

选择“ keycloak OpenId Connect”后,用户将成功重定向到Keycloak服务器。用户通过身份验证后,密钥斗篷将重定向回我的本地humhub服务器。 那里有humbhub抱怨: “无法验证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',

        ],
    ],
    ]
]

];

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

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案:它不能很好地工作,因为humhub的OIDC适配器中没有该规范。从Keycloak直接返回后,会出现以下错误:

Error after redirect back to humhub from Keycloak

OpenId Connect 1.0规范描述了ID令牌必须使用JWS(Json Web签名)进行签名。 Keycloak会这样做,但不会设置“ cty”字段。对于https://tools.ietf.org/html/rfc7515#section-4.1.10(RFC7515),此字段是可选的,这意味着Humhub(v。1.3.13)实施了错误的Open ID Connect 1.0适配器,因为它将此字段设置为必填。