我正在尝试在我的 Linux Centos 9 服务器中实现 Jumbojett OpenID 身份验证。这是我的登录控制器(welcome.php)代码:
public function login_sso()
{
if (!$this->session->userdata('USERNIP')) {
$oidc = new OpenIDConnectClient(
$this->config->item('SSO_PROVIDER_URL'),
$this->config->item('SSO_CLIENT_ID'),
$this->config->item('SSO_CLIENT_SECRET')
);
$isAuthenticate = $oidc->authenticate();
if ($isAuthenticate) {
$user = $this->M_welcome->get_login_complete_sso($oidc->requestUserInfo('preferred_username'));
[$akses, $akses_lengkap, $role_id] = $this->M_welcome->get_user_access($user[0]->PEGAWAIID, $oidc->requestUserInfo('preferred_username'), $user[0]->JENISPEGAWAIID);
$data_session = array(
'USERLOGIN' => $oidc->requestUserInfo('email'),
'SSO_ID_TOKEN' => $oidc->getIdToken()
);
$this->session->set_userdata($data_session);
redirect('user/profil/');
}
}
}
这是我的 htaccess 代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
这是我在 config.php 中的 base_url(将其审查为 mysite.go.id):
$config['base_url'] = 'https://mysite.go.id/';
当我在浏览器中打开我的网络应用程序时,它会顺利进行,直到我使用我的用户凭据登录(用户名和密码)并重定向到一个页面:
This site can’t provide a secure connection mysite.go.id sent an invalid response.
ERR_SSL_PROTOCOL_ERROR
该页面的 URL 似乎指向
https://mysite.go.id:80/welcome/login_sso?state=6ea6c4c6f8538538621ed21fffa8e78c&session_state=1a223a56-9dba-447e-b6ed-9d79486420c9&code=18a981c1-d5a7-4ce2-8db7-4181244e4194.1a223a56-9dba-447e-b6ed-9d79486420c9.33e0c97f-f14d-4955-b0f1-863256cacd03
,我没有将重定向端口设置为 80,但看起来它重定向到端口 80,而 ssl 的默认端口应该是 443。我怀疑这是问题所在,但我不知道知道如何解决这个问题。在使用 OpenID 身份验证(使用本地数据库正常登录)之前,它工作顺利,我没有收到相关的 SSL 错误。但是当我使用 OpenID 身份验证时,我不断收到此错误,请帮我看看出了什么问题?
public function login_sso()
{
if (!$this->session->userdata('USERNIP')) {
$oidc = new OpenIDConnectClient(
$this->config->item('SSO_PROVIDER_URL'),
$this->config->item('SSO_CLIENT_ID'),
$this->config->item('SSO_CLIENT_SECRET')
);
$isAuthenticate = $oidc->authenticate();
if ($isAuthenticate) {
$user = $this->M_welcome->get_login_complete_sso($oidc->requestUserInfo('preferred_username'));
[$akses, $akses_lengkap, $role_id] = $this->M_welcome->get_user_access($user[0]->PEGAWAIID, $oidc->requestUserInfo('preferred_username'), $user[0]->JENISPEGAWAIID);
$data_session = array(
'USERLOGIN' => $oidc->requestUserInfo('email'),
'SSO_ID_TOKEN' => $oidc->getIdToken()
);
$this->session->set_userdata($data_session);
redirect('user/profil/');
}
}
}