标签: simplesamlphp

SimpleSamlPHP - 生成 SP 元数据

我正在使用 SimpleSamlPHP 库为我的客户实现 SAML 2.0 SSO。我的客户已经共享了他们的 IdP 元数据,并且我已经在我这边实现了这一点。现在他们(当然)需要我提供的 SP 元数据。

SimpleSamlPHP 提供了一个非常用户友好的转换器(在 simplesamlphp/www/admin/metadata-converter.php 中找到转换器),您可以使用它来将 IdP 元数据 XML 转换为您将在 saml20-idp-remote 中使用的元数据 (PHP) 数组配置。

我正在寻找一个类似的实用程序,它可以获取有关我的断言 url、单点注销 url 等的详细信息,并为我的客户端生成 SP 元数据文件。如果没有这样的实用程序,有人可以给我一个提示,告诉我如何为我的客户生成 SP 元数据。我当然不期望任何人给我完整的解决方案,我所需要的只是朝着正确的方向推动。

谢谢大家。

更新:我正在寻找 SP 元数据 XML 应该具有的标准 XML 属性。

php saml-2.0 simplesamlphp

3
推荐指数
1
解决办法
5728
查看次数

如何在PHP中使用simplesamlphp将office365配置为SSO的IDP

我们正在使用用于SSO的simplesamlphp与来自我们的SP(服务提供商)的所需IDP(身份提供商)进行连接,并对用户进行身份验证。

到目前为止,我们已经使用simplesamlphp将Google和ADFS服务作为IDP进行了SSO集成。现在,我们有了使用Office 365作为IDP进行SSO集成的新要求。有可能这样做吗?如果是,请给我有关操作方法的指导。

如果我错了请原谅

提前致谢

php adfs office365 simplesamlphp

3
推荐指数
1
解决办法
2007
查看次数

请求无效,keycloak saml 登录后缺少参数用户名

我使用 keycloak 作为 simplesamlphp 身份提供者的身份代理,以便登录到 angular 应用程序。

keycloak 使用登录掩码正确重定向到身份提供者。登录后,身份提供者按预期重定向到 keycloak。不幸的是,我收到以下错误消息(作为 JSON):

{"error":"invalid_request","error_description":"Missing parameter: username"}
Run Code Online (Sandbox Code Playgroud)

我的 IdP 有一个用户,我的 keycloak 没有,因为我不想将用户另外存储在 keycloak 中。

我的经纪人配置如下所示: 在此处输入图片说明

我的客户端配置是这样的: 在此处输入图片说明

我既不熟悉 SAML 也不熟悉 Keycloak,所以如果我需要提供任何其他信息,请告诉我。

saml single-sign-on simplesamlphp keycloak angular

3
推荐指数
1
解决办法
5278
查看次数

如何在基于 SimpleSAMLphp 的 IdP 中用属性替换 NameId 的值?

我正在尝试设置 SimpleSAMLphp IdP 以将 SAML 响应发送到我的本地开发服务器(在本例中是 SP 发起的流程)。该 IdP 基于https://hub.docker.com/r/kristophjunge/test-saml-idp/的 Docker 映像 (我相信版本 1.15)。

整个设置是为了模拟一个与我拥有的类似环境,其中 G Suite IdP 用于相同的本地开发 SP - 试图最终消除我的本地开发环境中的云依赖性,并将其替换为等效的 SimpleSAMLphp 环境。

我遇到的问题是 Google 在其 SAML 响应中发送 NameId,如下所示:

<saml2:Subject> 
    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">a.b@c.com</saml2:NameID> 
                  <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> 
                     <saml2:SubjectConfirmationData InResponseTo="ONELOGIN_88ebd953f02c07d01b19714cd70133827ff1228e" NotOnOrAfter="2018-05-07T20:21:25.433Z" .                         Recipient="https://ee0138c4.ngrok.io/saml/?acs" /> 
</saml2:SubjectConfirmation>
</saml2:Subject>
Run Code Online (Sandbox Code Playgroud)

但 SimpleSAMLphp 则以这种格式发送:

<saml:Subject> 
<saml:NameID SPNameQualifier="https://ee0138c4.ngrok.io/saml/metadata" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">_69d05500bd6e797de3674df0165facbfa0af699589</saml:NameID> 
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData NotOnOrAfter="2018-05-09T17:47:57Z" Recipient="https://ee0138c4.ngrok.io/saml/?acs" InResponseTo="ONELOGIN_170bb7a0ff82100318ba498583e8e59cdae8607b" /> 
</saml:SubjectConfirmation> 
</saml:Subject>
Run Code Online (Sandbox Code Playgroud)

我需要它作为一个属性值

ab@c.com而不是_69d05500bd6e797de3674df0165facbfa0af699589

然后我可以在 SP 的逻辑中获取它,而不是发送一些随机数,我假设它是瞬态 ID。

这是我的配置:

启动 Docker 容器:

docker run --name=testsamlidp_idp \
-p …
Run Code Online (Sandbox Code Playgroud)

php saml saml-2.0 docker simplesamlphp

3
推荐指数
1
解决办法
2041
查看次数

SimpleSamlPHP 无法解析自定义身份验证模块

我想为我的 SimpleSamlPHP 安装创建一个自定义身份验证模块,但每次我尝试测试该模块时都会收到此错误:

SimpleSAML\Error\Error: UNHANDLEDEXCEPTION

Backtrace:
1 www/_include.php:17 (SimpleSAML_exception_handler)
0 [builtin] (N/A)
Caused by: Exception: Could not resolve 'mymodule:MyAuth': no class named 'SimpleSAML\Module\mymodule\Auth\Source\MyAuth' or 'sspmod_mymodule_Auth_Source_MyAuth'.
Backtrace:
7 lib/SimpleSAML/Module.php:437 (SimpleSAML\Module::resolveClass)
6 lib/SimpleSAML/Auth/Source.php:336 (SimpleSAML\Auth\Source::parseAuthSource)
5 lib/SimpleSAML/Auth/Source.php:382 (SimpleSAML\Auth\Source::getById)
4 lib/SimpleSAML/Auth/Simple.php:66 (SimpleSAML\Auth\Simple::getAuthSource)
3 lib/SimpleSAML/Auth/Simple.php:166 (SimpleSAML\Auth\Simple::login)
2 modules/core/www/authenticate.php:38 (require)
1 lib/SimpleSAML/Module.php:254 (SimpleSAML\Module::process)
0 www/module.php:10 (N/A)
Run Code Online (Sandbox Code Playgroud)

我已按照 SimpleSAML 的教程进行到第四步,我需要测试该模块。在我的 config.php 文件中,我启用该模块,如下所示:

'myauth' => [
    'mymodule:MyAuth'
],
Run Code Online (Sandbox Code Playgroud)

如果我将配置文件中的模块名称更改为 SimpleSaml 的预安装模块之一,例如。

'myauth' => [
    'sqlauth:MyAuth'
],
Run Code Online (Sandbox Code Playgroud)

然后就可以正常工作了。事实上,如果我将自定义模块文件夹的名称更改为与预安装模块之一相同,并更改模块文件中的命名空间路径以反映这一点,那么我的模块代码就可以正常工作。我相信它与我的模块文件中的命名空间有关,但我无法弄清楚。我在 Ubuntu 18.04 上使用 SimpleSaml 版本 1.18.5 和 php 版本 …

apache simplesamlphp

3
推荐指数
1
解决办法
2627
查看次数

用作 SP 时 Simplesamlphp 未处理的异常错误

在使用 simplesamlphp 作为服务提供者成功接收 SAML 2.0 令牌后,我收到以下错误。

 Oct 21 17:30:15 simplesamlphp DEBUG [6b6e3c270f] GenerateGroups - attribute 'eduPersonAffiliation' not found.
    Oct 21 17:30:15 simplesamlphp DEBUG [6b6e3c270f] Session: doLogin("default-sp")
    Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Unable to find the SAML 2 binding used for this request.
    Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Request method: 'GET'
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] Backtrace:
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] 0 /var/www/simplesamlphp/www/module.php:180 (N/A)
    Oct 21 17:30:15 simplesamlphp …
Run Code Online (Sandbox Code Playgroud)

saml single-sign-on simplesamlphp

2
推荐指数
1
解决办法
2万
查看次数

如何创建我自己的登录页面而不是simplesamlphp IDP登录页面

我将SimpleSamlePhp用于IDP。目前,当我登录时,它默认为SimpleSamle登录页面。但是我想创建自己的自定义登录页面。有人可以帮助我实现此目标的步骤。

php simplesamlphp

2
推荐指数
1
解决办法
3142
查看次数

simplesamlphp 中的重定向过多

添加新应用程序以访问 saml 时,我遇到了这个问题。

SSOService.php:1 获取https://saml.testing.net/www/saml2/idp/SSOService.php?spentityid=newapp&cookieTime=1459920375

net::ERR_TOO_MANY_REDIRECTS

在我的本地我没有遇到任何问题,但是当我将代码复制到登台服务器时,它会显示 ERR_TOO_MANY_REDIRECTS 错误,继续重定向,并且无法显示 saml 登录页面。带有负载平衡器的登台服务器,这会导致错误吗?

谢谢。

更新:

$config = array(
'baseurlpath'       => 'https://saml.testing.net/',
'certdir'       => '/etc/test/sslcerts/',
'tempdir'       => '/tmp',
'datadir'       => 'data/',
'auth.adminpassword'        => '1234567',
'admin.protectindexpage'    => TRUE,
'admin.protectmetadata'     => TRUE,
'secretsalt'        => 'xxxxxxxxx',
'timezone'      => NULL,

// logging related options
'loggingdir'        => '/var/log/simplesamlphp/',
'logging.level'     => LOG_WARNING,
'logging.logfile'   => 'simplesaml_' .date("Ymd") . '.log',
'debug'         => true,
'showerrors'        => true,
'logging.handler'   => 'file',
'logging.facility'  => LOG_USER,
'logging.processname'   => 'simplesaml',
'debug.validatexml' => FALSE,
'enable.saml20-idp' => …
Run Code Online (Sandbox Code Playgroud)

php simplesamlphp

2
推荐指数
1
解决办法
5109
查看次数

单一登录使用Laravel上的SimpleSamlPhp包装器

在我的laravel应用程序中实现单点登录.我决定使用这个插件https://github.com/aacotroneo/laravel-saml2,它基本上是着名的SimpleSamlPhp的包装器.

我通过作曲家和给定的信息下载了代码 Remember that you don't need to implement those routes, but you'll need to add them to your IDP configuration. For example, if you use simplesamlphp, add the following to /metadata/sp-remote.php

$metadata['http://laravel_url/saml/metadata'] = array(
 'AssertionConsumerService' => 'http://laravel_url/saml/acs',
 'SingleLogoutService' => 'http://laravel_url/saml/sls',
 //the following two affect what the $Saml2user->getUserId() will return
 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
 'simplesaml.nameidattribute' => 'uid'  
);
Run Code Online (Sandbox Code Playgroud)

我找不到metadata/sp-remote.php,有什么想法吗?而据http://laravel_url/saml/acs而言,我需要在服务器上部署SAML?因为此时插件代码vendors处于laravel核心架构代码层次结构中.

php simplesamlphp laravel-5.2

2
推荐指数
2
解决办法
2736
查看次数

simpleSamlPHP 管理员登录重定向循环

我已经设置了 simpleSamlPHP 1.14,它在 IDP 和 SP 之间运行良好,我们客户的用户可以成功进行身份验证和登录。不过,我需要进行一些更改,因此我尝试以管理员身份登录 simpleSamlPHP 本身。这会导致重定向循环,我可以看到它甚至没有尝试设置任何 cookie。这曾经有效,我不确定服务器上发生了什么变化导致了这个问题。我不想升级 simpleSamlPHP 来解决这个问题,因为我们的客户端正在积极使用它进行身份验证并且它可以工作,而且我不想在解决这个问题时更新和破坏它。

这是配置文件包含的内容:

$config = array(

    'baseurlpath' => 'saml/',
    //'baseurlpath' => 'https://example.com/saml/'
    'certdir' => 'cert/',
    'loggingdir' => 'log/',
    'datadir' => 'data/',
    'tempdir' => '/tmp',
    'debug' => true,
    'showerrors' => true,
    'errorreporting' => true,
    'debug.validatexml' => false,
    'auth.adminpassword' => 'supersecret',
    'admin.protectindexpage' => false,
    'admin.protectmetadata' => false,
    'secretsalt' => 'supersecret',
    'technicalcontact_name' => 'Me',
    'technicalcontact_email' => 'me@example.com',
    'timezone' => 'America/Denver',
    'logging.level' => SimpleSAML_Logger::NOTICE,
    'logging.handler' => 'file',
    'logging.facility' => defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER, …
Run Code Online (Sandbox Code Playgroud)

php simplesamlphp

2
推荐指数
1
解决办法
1204
查看次数

SimpleSamlPhp作为SP重定向错误

我有一个SimpleSamlPHP实现作为服务提供者,因此工作流程如下:

IdP向我的ACS URL发送断言:

/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp

但后来看起来他认证并被重定向到

/simplesaml/module.php/saml/sp/saml2-acs.php

由于没有指定authsource(/ default-sp部分),因此抛出错误:

SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Backtrace:
0 *\simplesamlphp\www\module.php:180 (N/A)
Caused by: SimpleSAML_Error_Exception: No authentication source with id false found.
    Backtrace:
    2 *\simplesamlphp\lib\SimpleSAML\Auth\Source.php:242 (SimpleSAML_Auth_Source::getById)
    1 *\simplesamlphp\modules\saml\www\sp\saml2-acs.php:8 (require)
    0 *\simplesamlphp\www\module.php:135 (N/A)
Run Code Online (Sandbox Code Playgroud)

但是,它也有一组PHP错误输出到页面:

Warning: array_key_exists(): The first argument should be either a string or an integer in *\simplesamlphp\lib\SimpleSAML\Configuration.php on line 314 
Warning: Cannot modify header information - headers already sent by (output started at *\simplesamlphp\lib\SimpleSAML\Configuration.php:314) in *\simplesamlphp\lib\SimpleSAML\Error\Error.php on line 191 
Warning: Cannot modify header information - headers already …
Run Code Online (Sandbox Code Playgroud)

php saml single-sign-on saml-2.0 simplesamlphp

1
推荐指数
1
解决办法
1万
查看次数

SimpleSamlPhp (SSP):“随机”错误 - 如何更改后端/存储?

过去几天我一直在使用 simplesamlphp 测试 SAML 2.0。我的 SP 端连接到我公司的 IdP。我处于它工作的情况......大多数时候,这是令人困惑的部分。事实:

  • 在带有 apache 2.4 的 RHEL 7 上使用 simplesamlphp 1.14.2
  • 我通过登录和注销多次进行测试
  • 我的站点/服务正在通过 https 运行。这同样适用于 simplesamlphp。IdP 是 http
  • IdP 配置是通过内置 XML 解析器自动生成的。我们正在使用 SHA256 并使用自签名证书发出注销消息
  • 有用!95% 的时间在 Firefox 和 Chrome 中,这对我来说已经足够了,但它使我的服务没有准备好生产......
  • 其他 5% 会抛出类似这样的错误:“无法找到当前绑定。”。不同之处在于,在我的日志中,它显示为:

    Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Unable to find the SAML 2 binding used for this request.array (\n)
    Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Request method: 'GET'array (\n)
    
    Run Code Online (Sandbox Code Playgroud)

    以上只是从上一篇文章修改的一个例子。请注意,我确实array在两行中都看到了。我查看了记录此错误的源代码,但我无法弄清楚它为什么存在(不确定它是否重要 - 似乎是由日志记录工具引入的)

  • 这就是事情变得奇怪的地方!我有时会得到通常的(在无限递归左右)PHP 错误:Allowed memory size of …

php saml simplesamlphp

1
推荐指数
1
解决办法
1454
查看次数