我遇到了验证SAML 2.0 Assertion XML签名的问题.我正在使用simpleSAMLphp项目中的SAML2库,而后者又使用PHP xmlseclibs库来签名XML并验证签名.
我收到了我的合作伙伴的以下断言:
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0" ID="_c43265fe-8cd5-410f-b63d-dac9f266d4c9" IssueInstant="2015-01-23T17:46:28.456Z"><saml:Issuer>uat.test.com/saml2.0</saml:Issuer><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_c43265fe-8cd5-410f-b63d-dac9f266d4c9"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default saml ds xs xsi"/></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>mFKEIdw+cEielORqscbHuAJhI58=</DigestValue></Reference></SignedInfo><SignatureValue>kEZHloxYJVqDg8oxLNpl+sbJYhv9r7yYU5yQi71gCNm/Cdtj9/P2LR5cnopKZZu+7j3PVimeZoir6RTTrdVKTLkp+PmvOmTlLH/LVtntQZ68TaUxUd3BvtQiKuJ8KFwWPmQ+W3RIKv4ySAsy6PUiWPcr8eIYpIiUA6rxCuSEpdA=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIICczCCAdygAwIBAgIEdWfFczANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQIEwJNQTEQMA4GA1UEBxMHTm9yd29vZDEPMA0GA1UEChMGTWVyY2VyMRswGQYDVQQLExJNZXJjZXIgSFIgU2VydmljZXMxJTAjBgNVBAMTHE1lcmNlciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcwNjI5MDI1NTQxWhcNMTcwNzI5MDQwMDAwWjB2MQswCQYDVQQIEwJNQTEQMA4GA1UEBxMHTm9yd29vZDEPMA0GA1UEChMGTWVyY2VyMRswGQYDVQQLExJNZXJjZXIgSFIgU2VydmljZXMxJzAlBgNVBAMTHk1lcmNlciBIdW1hbiBSZXNvdXJjZSBTZXJ2aWNlczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAm9KNx7UmRbWwJ0gmIV9sZzMDH4uz+o6ZmOxVRLvrO0Yzc9Qsc+7f+jIEGsVpbeaj5zx+4c8g46QqGam/Ap+4peewduVAN7GwK8UrmveASQH1Y/byTVGhyndfEtHfauresYpNDbgCn/iq/cXNapuFaTB4U0MPtz8Bqds1871hNasCAwEAAaMQMA4wDAYDVR0PBAUDAwf/gDANBgkqhkiG9w0BAQUFAAOBgQBR5wV43k1XcIM7z24SBvpEDWgEawXZ3TjTI9/54v/ZAdzXAiYfLKVV+hiyum+QP9jezDUH+Wz2bqzjlxOSU7HvUn4MwN+88a1hvSXpPxsp7y4d7juVt66aip/9NuSWbNqUPdhgK/KvMHrZpksCoxUJG2+Q1Jz7aNiBQvONRRPdTg==</X509Certificate></X509Data></KeyInfo></Signature><saml:Subject><saml:NameID>000786320</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><saml:SubjectConfirmationData NotOnOrAfter="2015-01-23T17:51:28.471Z" Recipient="https://test.com/sso"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore="2015-01-23T17:41:28.456Z" NotOnOrAfter="2015-01-23T17:51:28.456Z"><saml:AudienceRestriction><saml:Audience>test.com:saml2.0</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant="2015-01-23T17:46:28.456Z" SessionIndex="SI-8bd89651-62da-4b7d-9a54-04eb2eb90784"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="email"><saml:AttributeValue>invalidemail@invalid.com</saml:AttributeValue></saml:Attribute><saml:Attribute Name="firstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="firstName"><saml:AttributeValue>Diane</saml:AttributeValue></saml:Attribute><saml:Attribute Name="lastname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="lastname"><saml:AttributeValue>Test</saml:AttributeValue></saml:Attribute><saml:Attribute Name="zipCode" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="zipCode"><saml:AttributeValue>02062</saml:AttributeValue></saml:Attribute><saml:Attribute Name="businessUnit" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="businessUnit"><saml:AttributeValue>78945</saml:AttributeValue></saml:Attribute><saml:Attribute Name="employeeID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="employeeID"><saml:AttributeValue>000786320</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion>
Run Code Online (Sandbox Code Playgroud)
签名元素请求独占的C14N规范化.该xmlseclibs库库canonicalizes此如下:
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="_c43265fe-8cd5-410f-b63d-dac9f266d4c9" IssueInstant="2015-01-23T17:46:28.456Z" Version="2.0"><saml:Issuer>uat.test.com/saml2.0</saml:Issuer><saml:Subject><saml:NameID>000786320</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><saml:SubjectConfirmationData NotOnOrAfter="2015-01-23T17:51:28.471Z" Recipient="https://test.com/sso"></saml:SubjectConfirmationData></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore="2015-01-23T17:41:28.456Z" NotOnOrAfter="2015-01-23T17:51:28.456Z"><saml:AudienceRestriction><saml:Audience>test.com:saml2.0</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant="2015-01-23T17:46:28.456Z" SessionIndex="SI-8bd89651-62da-4b7d-9a54-04eb2eb90784"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute FriendlyName="email" Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>invalidemail@invalid.com</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="firstName" Name="firstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>Diane</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="lastname" Name="lastname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>Test</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="zipCode" Name="zipCode" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue>02062</saml:AttributeValue></saml:Attribute><saml:Attribute FriendlyName="businessUnit" Name="businessUnit" …Run Code Online (Sandbox Code Playgroud) 我已经使用Composer在我的项目中安装了SimpleSAMLphp,对其进行了配置并使其运行良好.
不幸的是,每次我做作曲家更新时,都会删除config.php,authsources.php和saml20-idp-remote.php文件.
文档提供了一种提供替代位置或config.php文件的方法,但不提供其他两种方法.
任何人都可以建议使用位于vendor\SimpleSAMLphp文件夹之外的这些文件设置SimpleSAMLphp吗?
我目前正在使用脚本将这些文件的本地存储副本复制回更新后触发器上的正确文件夹,但在我看来,它似乎有点像kludge.
谢谢.
当我从 idp 重定向回 saml-sp 时,出现以下错误。
SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Backtrace:
0 /var/simplesamlphp/www/module.php:180 (N/A)
Caused by: SimpleSAML_Error_Exception: Cannot retrieve metadata for IdP 'https://openidp.feide.no' because it isn't a valid IdP for this SP.
Run Code Online (Sandbox Code Playgroud)
我试图将元数据更改'https://openidp.feide.no'为'http://192.168.0.105:81'.但问题仍未解决。有人可以提出任何想法来解决它吗?
所以,我正在尝试将我的应用程序与 SimpleSAMLphp 集成。
我必须配置 IdP 并且它们都工作正常(我可以通过“测试配置的身份验证源”在 simplesamlphp 管理页面上对其进行测试)
但是当我尝试与我的应用程序集成时,在使用 IdP 登录后,我陷入了 simplesamlphp 页面
像这样:
我打开我的应用程序
我的应用程序调用 requireAuth,它将我重定向到 simplesamlphp 页面,在那里我可以选择要使用的 IdP
我选择一个 IdP。我被重定向到 IdP 页面。我成功登录。
IdP 将我重定向回 simplesamlphp IdP 选择屏幕。我被困在这里,因为当我打开我的应用程序时,它会将我重定向到同一页面。
有人知道我做错了什么吗?我认为这是一个配置问题,但我不知道哪个可能是。此外, isAuthenticated 函数始终返回 false。
这是我的应用程序代码
<?php
require_once ('/var/simplesamlphp/lib/_autoload.php');
$as = new SimpleSAML_Auth_Simple ( 'default-sp' );
if ($as->isAuthenticated ()) {
die ( 'ok' );
} else {
$param = array (
'ReturnTo' => 'http://teste.localhost'
);
$as->requireAuth ( $param );
}
$attributes = $as->getAttributes ();
print_r ( $attributes );
Run Code Online (Sandbox Code Playgroud) 我们应用程序的租户有自己的子域,例如 customer1.domain.com,尽管它是一个代码库。一些租户希望 SP 使用 SAML 发起 SSO。
实现这一目标的最佳方法是什么?
如果我们选择选项 1,我们如何知道传入的 SAML 请求是针对哪个租户的?
如果我们选择选项 2,您建议如何为元数据/authsources 配置 SimpleSAMLphp,因为它似乎只支持硬编码文件。
谢谢
我使用simplesamlphp从中央登录验证多个域上的用户,但情况是我必须使用ajax来处理登录.
所有正在运行良好,直到流程进入postRedirect()的方法SimpleSAML_Utilities类提交使用JavaScript来断言的服务提供商消费URL的形式.由于ajax代码无法处理javascript,因此流程卡在那里,我得到了响应

我的问题是simplesaml php中有任何设置或自定义可以用来处理这个吗?
我使用 Drupal 设置了 SimpleSamlPhp(我的 IdP 在另一台服务器上)。以管理员身份登录“ http://localhost:31478/simplesaml/ ”后,我使用 IdP 运行“测试身份验证源”,显示了具有正确属性的“SAML 2.0 SP 演示示例”屏幕。我猜这意味着 SimpleSamlPhp 和我的 Idp 可以看到对方并进行正确通信。
但是,当我在打开“通过 SimpleSAMLphp 激活身份验证”后尝试使用 Drupal 进行联合登录时,出现以下错误:
SimpleSAML_Error_Exception: Could not find the metadata of an IdP with entity ID 'tenant2.test.com' in sspmod_saml_Auth_Source_SP->getIdPMetadata() (line 134 of /var/www/vendor/simplesamlphp/simplesamlphp/modules/saml/lib/Auth/Source/SP.php).
设置
我的 simplesamlphp 目录位于 /var 中。为了启用 saml 进行了以下更改
/var/simplesamlphp/config/config.php
'baseurlpath' => 'simplesaml/',
....
'enable.saml20-sp' => true,
'enable.saml20-idp' => true,
'enable.shib13-idp' => false,
'enable.adfs-idp' => false,
'enable.wsfed-sp' => …Run Code Online (Sandbox Code Playgroud) 我们正在尝试使用自定义 mysql 数据库设置 sso,但它在以下两个请求之间进入无限循环。
POST http://192.168.0.15/simplesaml/module.php/core/loginuserpass.php
Run Code Online (Sandbox Code Playgroud)
设置Cookie
PHPSESSID=d0eaabb959ffeb2a0dd20f4744945f8f; path=/; HttpOnly
SimpleSAMLAuthToken=_297a91e9a4e14c61d247427063201a39587396c2e3; path=/; httponly
http://192.168.0.15/simplesaml/module.php/core/loginuserpass.php?AuthState=_e3e75218660095b936b9582356bcbc7b1e26934876%3Ahttp%3A%2F%2F192.168.0.15%2Fsimplesaml%2Fmodule.php%2Fcore%2Fas_login.php%3FAuthId%3Dexample-sql%26ReturnTo%3Dhttp%253A%252F%252F192.168.0.2%252F%252Fver06%252Fapp.php
Run Code Online (Sandbox Code Playgroud)
设置Cookie
PHPSESSID=92688949c724d39e673eec73b0674de0; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)
192.168.0.15是我们的 SSO 服务器,192.168.0.2也是请求 SSO 的网站。
我们是否遗漏了什么?是否有客户端和服务器分离的 sso 模块以方便使用。
此外,我们没有生成日志文件。已验证文件夹的权限。
我是SP,我无法使用我的客户端的IDP登录到SP,我得到以下错误:
SimpleSAML_Error_Error:ACSPARAMS
Backtrace:
1 modules/saml/www/sp/saml2-acs.php:21 (require)
0 www/module.php:135 (N/A)
Caused by: Exception: Unable to find the current binding.
Backtrace:
2 vendor/simplesamlphp/saml2/src/SAML2/Binding.php:99 (SAML2\Binding::getCurrentBinding)
1 modules/saml/www/sp/saml2-acs.php:16 (require)
0 www/module.php:135 (N/A)
Run Code Online (Sandbox Code Playgroud)
我对authsource.php的配置如下:
'abc-live-sp' => array(
'saml:SP',
'privatekey' => 'saml.pem',
'certificate' => 'saml.crt',
'entityID' => null,
'idp' => 'https://federation-a.parnassiagroep.nl/superbrains',
'discoURL' => null,
'NameIDPolicy' => false,
),
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?
帮助将不胜感激.
我的simplesaml工作得很好,直到我在Ubuntu上将Apache升级到2.4.6
我得到的错误:
Forbidden
You don't have permission to access /simplesaml/ on this server.
Run Code Online (Sandbox Code Playgroud) simplesamlphp ×10
php ×7
saml ×2
ajax ×1
apache ×1
composer-php ×1
drupal ×1
javascript ×1
multi-tenant ×1
mysql ×1
saml-2.0 ×1
xml ×1
xmlseclibs ×1