SAML2.0介绍
https://www.cnblogs.com/shuidao/p/3463947.html
https://www.jianshu.com/p/636c1ee16eba
php-saml
https://github.com/onelogin/php-saml
①使用composer直接引入
composer require onelogin/php-saml
遇到问题:提示未找到方法 XMLSecurityKey
少了xmlseclibs
composer require robrichards/xmlseclibs
引入xmlseclibs后发现 还是找不到 定位原因 不识别命名空间 写全路径也无果(优先项目。。。放弃此方式)
②直接SSH 克隆 git@github.com:onelogin/php-saml.git
目录 /php-saml/extlib/ 下有xmlseclibs 无需引入 使用master时输出xml文件时提示有错误,排查无果可能和文件格式有关(优先项目。。。放弃此方式)
③ 切换到composer分支 git checkout composer
可以正确使用
④正式使用
1.进入目录php-saml
2.复制settings-example.php 改名为 settings.php
3.进入settings.php,做下面配置
4.settings.php会在new OneLogin_Saml2_Auth() 被解析成xml 发起请求时base_64加密后传给IDP
SP 的配置 entityId和 assertionConsumerService(ACS)回调地址 我对接的时候是给到IDP方他们也需要配置。
IDP 的配置 entityId、 singleSignOnService和x509cert 请求地址 由IDP方提供,x509cert 由IDP提供crt格式的文件。
⑤sp发起请求
此处写自己的逻辑 用法就是这样
session_start();
require_once dirname(__DIR__) . '/repair/php-saml/_toolkit_loader.php';
$auth = new OneLogin_Saml2_Auth();
$auth->login();
⑥sp acs 回调
IDP方会POST请求回调地址(SP ACS)带回加密的SAMLResponse
此处写自己的逻辑 用法就是这样 方法 $auth->getAttributes(); 获取数据
session_start();
require_once dirname(__DIR__) . '/repair/php-saml/_toolkit_loader.php';
$auth = new OneLogin_Saml2_Auth();
// 解析$_POST['SAMLResponse'];
$auth->processResponse();
$errors = $auth->getErrors();
// 验证是否出错
if (!empty($errors)) {
print_r('<p>' . implode(', ', $errors) . '</p>');
exit();
}
// 验证用户是否登录成功
if (!$auth->isAu