SimpleSAMLphp向远程IDP Okta发送SLO请求



所以我需要从我的ServiceProvider用SimpleSAMLphp发出的SLO请求发送到OKTA IDP。

我尝试过SimpleSAMLphp的注销功能,但他们只在ServiceProvider上注销,而不是在我的IDP上。。。

使用的代码:

require_once('/var/www/service_provider/simplesamlphp/lib/_autoload.php');
$as = new SimpleSAML_Auth_Simple('default-sp'); 
$as->logout();

我试图在logout((函数中添加参数我的IDP的SLO url,但在请求中缺少一些参数,并且没有关于如何生成这个缺少的参数的文档。。。

谢谢你的帮助!

致问候,

编辑:

我将我的authsources配置为:

'default-sp' => [
'saml:SP',
'entityID' => null,
'idp' => 'http://www.okta.com/ID',
'discoURL' => null,
'privatekey' => 'sp.pem',
'certificate' => 'sp.crt',
'sign.logout' => true,
'sign' => [
'logout' => true
]
],

编辑:

IDP元数据:

$metadata['http://www.okta.com/randomString'] = array (
'entityid' => 'http://www.okta.com/randomString',
'contacts' => 
array (
),
'metadata-set' => 'saml20-idp-remote',
'SingleSignOnService' => 
array (
0 => 
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://okta/app/okta_test_1/randomString/sso/saml',
),
1 => 
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://okta/app/okta_test_1/randomString/sso/saml',
),
),
'SingleLogoutService' => 
array (
0 => 
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://okta/app/okta_test_1/randomString/slo/saml',
),
1 => 
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://okta/app/okta_test_1/randomString/slo/saml',
),
),
'ArtifactResolutionService' => 
array (
),
'NameIDFormats' => 
array (
0 => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
1 => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
),
'keys' => 
array (
0 => 
array (
'encryption' => false,
'signing' => true,
'type' => 'X509Certificate',
'X509Certificate' => 'certValue',
),
),
);

您需要首先在Okta应用程序中启用注销。这将需要您的服务提供商的公共证书,因为Okta希望对注销请求进行签名。

一旦您启用了登出,Okta IdP的SAML元数据就会更改为包括登出URL。您需要更新SSP中的元数据,以便SSP了解Okta的注销url。

最后,您需要启用SSP的签名注销消息。您可以使用authsources.php中的'sign.logout' => true选项来执行此操作

所以最后我错过了在注销脚本中启动会话的错误。所以SimpleSAMLPHP从来没有找到当前会话,比如建议Patrick在评论中isAuthenticated总是假的。

因此,为了纠正我在注销脚本开始时的错误,我使用了

session_start();

这是有效的!

相关内容

  • 没有找到相关文章

最新更新