OpenID Connect 无法验证 JWT 声明

问题描述 投票:0回答:1

我在实施 Jumbojett OpenID 身份验证时遇到问题。这是我的代码

$oidc = new OpenIDConnectClient(
                $this->config->item('SSO_PROVIDER_URL'),
                $this->config->item('SSO_CLIENT_ID'),
                $this->config->item('SSO_CLIENT_SECRET')
            );
$oidc->setVerifyHost(false);    //dev only
$oidc->setVerifyPeer(false);    //dev only
$oidc->setHttpUpgradeInsecureRequests(false);   //dev only
$isAuthenticate = $oidc->authenticate();

config.php 文件中的提供程序 url 没有尾部斜杠。它看起来像这样(用 * 编辑)

$config['SSO_PROVIDER_URL'] = 'https://auth.****.**.id/auth/realms/***ura-**st';
$config['SSO_CLIENT_ID'] = '***ola-****';
$config['SSO_CLIENT_SECRET'] = '********************************';

该代码实际上可以在我的本地电脑上运行,但不知何故,当我将其部署到服务器上时,它不断向我抛出此错误

遇到未捕获的异常 类型:Jumbojett\OpenIDConnectClientException 消息:无法验证 JWT 声明 文件名:/var/www/html/vendor/jumbojett/openid-connect-php/src/OpenIDConnectClient.php 线路号码:373 回溯: 文件:/var/www/html/application/controllers/Welcome.php 线路:56 功能:验证 文件:/var/www/html/index.php 线路:315 功能:require_once

请帮帮我,出了什么问题?

php openid-connect openid
1个回答
0
投票

显然 JWT 声明无法验证是因为 OpenIDConnectClient.php 中 verifyJWTClaims 函数上的

$claims->exp
和服务器时间
time()
相差超过 5 分钟。 因为我的服务器是centos 9,所以我使用chronyd同步服务器时间,现在可以工作了。

© www.soinside.com 2019 - 2024. All rights reserved.