简体   繁体   English

使用SimpleSAML作为SP和IDP用于开发环境

[英]Using SimpleSAML as SP and IDP for development environnement

I am trying to authenticate using SAML in my web app. 我正在尝试使用我的网络应用程序中的SAML进行身份验证。

I followed the IdP quick start and the SP quick start user guides and came up woth the configuration below which fails with : 我按照IdP快速入门和SP快速入门用户指南进行了操作,并且下面的配置失败了:

Backtrace:
1 /app_path/application/lib/simplesamlphp/www/_include.php:37 (SimpleSAML_exception_handler)
0 [builtin] (N/A)
Caused by: Exception: Unable to find the current binding.
Backtrace:
2 /app_path/application/lib/simplesamlphp/lib/SAML2/Binding.php:81 (SAML2_Binding::getCurrentBinding)
1 /app_path/application/lib/simplesamlphp/modules/saml/lib/IdP/SAML2.php:266 (sspmod_saml_IdP_SAML2::receiveAuthnRequest)
0 /app_path/application/lib/simplesamlphp/www/saml2/idp/SSOService.php:19 (N/A)

Setup : 设定 :

  • My app runs locally with the host : trunk.sam.net 我的应用程序在本地与主机:trunk.sam.net一起运行
  • Simplesaml, SP, is included in the app as a library and accessible at : trunk.sam.net/simplesaml Simplesaml,SP,作为库包含在应用程序中,可从以下位置访问:trunk.sam.net/simplesaml
  • Simplesaml, IdP, is installed locally and runs at : auth.sam.net Simplesaml,IdP,在本地安装,运行于:auth.sam.net

Both simplesaml are actually using the same code and configuration files (they share the same document root) 这两个simplesaml实际上都使用相同的代码和配置文件(它们共享相同的文档根目录)

Configuration : 配置:

config.php config.php文件

'enable.saml20-idp'     => true,
'enable.shib13-idp'     => true,

authsources.php authsources.php

'default-sp-trunk.sam.net' => array(
    'saml:SP',
    'entityID'    => 'http://trunk.sam.net',
    'idp'         => 'http://auth.sam.net/simplesaml/saml2/idp/metadata.php',
    'ssoPortalUrl'=> 'http://auth.sam.net/simplesaml/saml2/idp/SSOService.php',
    'bkmapping'   => array(
        'login'     => 'uid',
        'eMail'     => 'mail'
    )
),


'example-userpass' => array(
    'exampleauth:UserPass',
    'shf:pwd' => array(
        'uid' => array('shf'),
        'eduPersonAffiliation' => array('mail', 'shf@bk-soft.com')
    ),
    'shl:pwd' => array(
        'uid' => array('shl')
    ),
),

saml20-idp-hosted.php saml20-IDP-hosted.php

$metadata['__DYNAMIC:1__'] = array(
/*
 * The hostname for this IdP. This makes it possible to run multiple
 * IdPs from the same configuration. '__DEFAULT__' means that this one
 * should be used by default.
 */
'host' => '__DEFAULT__',

/*
 * The private key and certificate to use when signing responses.
 * These are stored in the cert-directory.
 */
'privatekey' => 'server.pem',
'certificate' => 'server.crt',

/*
 * The authentication source which should be used to authenticate the
 * user. This must match one of the entries in config/authsources.php.
 */
'auth' => 'example-userpass',

/*
 * The interoperable SAML 2 profile specifies that attributes should be delivered using the urn:oasis:names:tc:SAML:2.0:attrname-format:uri NameFormat. 
 * We therefore recommended enabling this in new installations. This can be done by adding the following to the saml20-idp-hosted configuration:
 */
'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
'authproc' => array(
    // Convert LDAP names to oids.
    100 => array('class' => 'core:AttributeMap', 'name2oid'),
),

); );

saml20-idp-remote.php saml20-IDP-remote.php

$metadata['http://auth.sam.net/simplesaml/saml2/idp/metadata.php'] = array (
    'entityid' => 'http://auth.sam.net/simplesaml/saml2/idp/metadata.php',
    'contacts' => 
    array (0 => 
        array (
            'contactType' => 'technical',
            'surName' => 'Administrator',
            'emailAddress' => array (0 => 'support@bluekiwi-software.com'),
       ),
  ),
  'metadata-set' => 'saml20-idp-remote',
  'SingleSignOnService' => array (0 => array (
      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
      'Location' => 'http://auth.sam.net/simplesaml/saml2/idp/SSOService.php',
  ),
),
'SingleLogoutService' => 
array ( 0 =>  array (
    'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
    'Location' => 'http://auth.sam.net/simplesaml/saml2/idp/SingleLogoutService.php',
  ),
),
'ArtifactResolutionService' => 
array (
),
'keys' => 
array (0 =>  array (
    'encryption' => false,
    'signing' => true,
    'type' => 'X509Certificate',
    'X509Certificate' => 'MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOo',
  ),
  1 => 
  array (
    'encryption' => true,
    'signing' => false,
    'type' => 'X509Certificate',
    'X509Certificate' => 'MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOo',
  ),
),

); );

saml20-sp-remote.php saml20-SP-remote.php

$metadata['http://trunk.sam.net'] = array (
  'AssertionConsumerService' => 'http://trunk.sam.net/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp-trunk.sam.net',
  'SingleLogoutService' => 'http://trunk.sam.net/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp-trunk.sam.net',
);

Could anyone point me to what I did wrong ? 谁能指出我做错了什么?

Am i missing a configuration entry / file ? 我错过了配置条目/文件吗?

Should I use separate simplesaml installations ? 我应该使用单独的simplesaml安装吗?

Thanks for your advice 谢谢你的建议

The problem was that the SP and IdP need to be two different installations of simple saml. 问题是SP和IdP需要两个不同的简单saml安装。 I copied the source code to another folder, edited the vhost I used for the IdP (auth.sam.net) and everything worked. 我将源代码复制到另一个文件夹,编辑了我用于IdP(auth.sam.net)的vhost,一切正常。 The configuration was OK. 配置没问题。

What does your simpleSAML IDP authenticate against? 您的simpleSAML IDP对哪些进行身份验证? AD? 广告?

Do you simply want your application to authenticate against the IDP repository? 您是否只是希望您的应用程序针对IDP存储库进行身份验证?

Why do you need the simpleSAML SP? 为什么需要simpleSAML SP?

Could your application authenticate directly against the simpleSAML IDP? 您的应用程序可以直接针对simpleSAML IDP进行身份验证吗?

You normally use simpleSAML SP in something like the following: 您通常使用simpleSAML SP,如下所示:

AD <-- ADFS <-- simpleSAML SP <-- SAML application. AD < - ADFS < - simpleSAML SP < - SAML应用程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM