我对SSO和SimpleSAMLphp并不熟悉,我有一个问题。
如果我们希望在一个环境上有多个SPs :集成、暂存和预生产,那么我们是否可以首先在集成服务器上部署simplesamlphp,使authsources.php具有所有环境的配置(我们将拥有一个SPs数组),然后仅在Integration上为所有SPs生成XML元数据?
或者我们必须分别在每个环境上部署,并在每个环境上获取xml元数据?我认为SimpleSAMLphp使用ssl证书来生成xml,所以应该在我不太确定的每个server..But上分别进行。
谢谢
发布于 2022-09-02 21:24:19
您可以这样做,但是您可能需要手动编辑生成的元数据中的URL以指向正确的环境-- SimplSAMLphp使用来自请求元数据的域来构造元数据中的URL,因此如果在暂存过程中生成元数据,URL将指向您的暂存环境。
例如,如果在暂存过程中为生产环境生成元数据,则必须更改元素中的URL,如:
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://staging.test.com/simplesaml/module.php/saml/sp/saml2-acs.php/your-sp-name" index="0"/>至
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://test.com/simplesaml/module.php/saml/sp/saml2-acs.php/your-sp-name" index="0"/>证书是在SP配置中指定的,因此,如果每个环境有不同的证书,则需要在生成元数据的环境中显示所有证书。
$config = [
'my-test-sp' => [
'saml:SP',
'entityID' => 'my-sp-test',
'idp' => 'http://test/idp',
'privatekey' => 'test.pem',
'certificate' => 'test.crt'
],
'my-staging-sp' => [
'saml:SP',
'entityID' => 'my-sp-staging',
'idp' => 'http://staging/idp',
'privatekey' => 'staging.pem',
'certificate' => 'staging.crt'
],
'my-prod-sp' => [
'saml:SP',
'entityID' => 'my-sp-prod',
'idp' => 'http://prod/idp',
'privatekey' => 'prod.pem',
'certificate' => 'prod.crt'
]
];从每个环境生成元数据肯定更容易,但是如果您需要在环境运行之前将元数据提供给IDP,那么从非prod服务器手动编辑元数据并不困难;XML没有太多内容。
https://stackoverflow.com/questions/73583965
复制相似问题