不带密码的SimpleSAMLphp自定义authsource
对于我们的一个客户,我需要编写一个自定义authsource模块。我已经准备好使用各种身份验证源(如LDAP、SQLauth等)将SimpleSAMLphp设置为Idp。所有这些身份验证源都有一个共同点,即它们使用登录表单并根据不带密码的SimpleSAMLphp自定义authsource,php,authentication,browser,simplesamlphp,Php,Authentication,Browser,Simplesamlphp,对于我们的一个客户,我需要编写一个自定义authsource模块。我已经准备好使用各种身份验证源(如LDAP、SQLauth等)将SimpleSAMLphp设置为Idp。所有这些身份验证源都有一个共同点,即它们使用登录表单并根据sspmod\u core\u Auth\u UserPassBase类进行身份验证。这意味着将有一个用户名和密码等登录表单 这里的特殊情况如下: SAML安装(IdP)位于公司网络内部。如果用户(在该网络内/通过AD验证)访问该网络内的主机,用户名将自动插入其浏览器中,
sspmod\u core\u Auth\u UserPassBase
类进行身份验证。这意味着将有一个用户名和密码等登录表单
这里的特殊情况如下:
SAML安装(IdP)位于公司网络内部。如果用户(在该网络内/通过AD验证)访问该网络内的主机,用户名将自动插入其浏览器中,并可通过$\u服务器['PHP\u AUTH\u user']
访问,我们保证该用户已准备好“验证”
这意味着我们不再需要“验证”用户。我们不必显示登录表单,只需将该用户标记为已验证
现在我有点卡住了,因为据我所知,编写自己的authsource扩展默认的UserPassBase
类有点“过度”。我将不得不处理空密码和自动转发/张贴从登录表单等
我想有更好的方法来处理这个问题。流程将非常简单:
SP重定向到IdP。IdP“登录页面”读取PHP\u AUTH\u USER
(没有像登录表单那样的输出),对用户进行身份验证(无需进一步检查),并在正确检测到用户时按预期重定向。如果以任何方式都找不到PHP\u AUTH\u用户
,用户将被重定向到某种错误页面
有没有办法用正确的方法解决这个问题?我想我必须编写我自己的全新authsource类来扩展基本的
SimpleSAML\u Auth\u Source
类?在我重新发明轮子之前,也许有人有这样的例子 看看示例auth:Static
。它会自动将您作为特定用户登录
'example-static' => array(
'exampleauth:Static',
'uid' => array('testuser'),
'eduPersonAffiliation' => array('member', 'employee'),
'cn' => array('Test User'),
),
您可以像它一样创建自己的模块,但不是从authsource
config加载属性,而是基于用户名加载属性。然后做一些类似的事情
public function authenticate(&$state) {
$user = $_SERVER['PHP_AUTH_USER'];
if ($user) {
$attributes = loadAttributesForUser($user);
$state['Attributes'] = $attributes;
} else {
throw new Exception('No user found');
}
}
看看
示例auth:Static
。它会自动将您作为特定用户登录
'example-static' => array(
'exampleauth:Static',
'uid' => array('testuser'),
'eduPersonAffiliation' => array('member', 'employee'),
'cn' => array('Test User'),
),
您可以像它一样创建自己的模块,但不是从authsource
config加载属性,而是基于用户名加载属性。然后做一些类似的事情
public function authenticate(&$state) {
$user = $_SERVER['PHP_AUTH_USER'];
if ($user) {
$attributes = loadAttributesForUser($user);
$state['Attributes'] = $attributes;
} else {
throw new Exception('No user found');
}
}
确切地非常感谢。确切地非常感谢。