我在实施 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
请帮帮我,出了什么问题?
显然 JWT 声明无法验证是因为 OpenIDConnectClient.php 中 verifyJWTClaims 函数上的
$claims->exp
和服务器时间 time()
相差超过 5 分钟。
因为我的服务器是centos 9,所以我使用chronyd同步服务器时间,现在可以工作了。