我有一个本地apache2服务器运行humhub 1.3.14。我的目标是将位于我的牧场主集群上的Keycloak设置为humhub的身份验证提供者。
在选择"keycloak OpenId连接“之后,用户将被成功地重定向到密钥披风服务器。用户通过身份验证后,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/受保护/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的响应更改为:
“无法验证JWS:提供的扇区标识符URI无效:方案必须是以下内容之一:”https“。
更新
我还在运行humhub的本地apache2服务器上启用了https。我还将spomky实验室/jose降级为5.0.6版本,因为它与当前的humhub版本1.3.14存在兼容性问题。在此之后,JWS错误似乎得到了修复,但出现了一个新的错误:

它是由JWS中的内容类型引起的,它不是"application/json“,而是"”(空)?如果是的话,如何解决呢?
发布于 2019-10-14 10:00:33
最后,我找到了解决方案:它不能正常工作,因为humhub在其OIDC适配器中不包含规范。从Keycloak返回后,将发生以下错误:

JSONConnect1.0规范描述了必须使用OpenId (Json签名)对ID令牌进行签名。Keycloak这样做,但没有设置"cty“字段。至于https://www.rfc-editor.org/rfc/rfc7515#section-4.1.10 (RFC7515),这个字段是可选的,这意味着Humhub (v.1.3.13)实现了一个错误的optional 1.0适配器,因为它将这个字段设置为强制的。
https://stackoverflow.com/questions/57242360
复制相似问题