我有一个运行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',
],
],
]
]
];
有人可以帮忙吗? 需要更多信息吗?
答案 0 :(得分:0)
最后,我找到了解决方案:它不能很好地工作,因为humhub的OIDC适配器中没有该规范。从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适配器,因为它将此字段设置为必填。