Benutzer-Werkzeuge

Webseiten-Werkzeuge


simplesamlphp_dfn_aai

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
simplesamlphp_dfn_aai [2015/03/04 11:06]
2007 [Konfiguration]
simplesamlphp_dfn_aai [2015/11/26 17:09] (aktuell)
2007 [ldap auth]
Zeile 1: Zeile 1:
-Stand: ​Januar 2013, simplesamlphp-1.10,​ www.simplesamlphp.org+Stand: ​März 2015, simplesamlphp-1.10,​ www.simplesamlphp.org
  
 ====== DFN-AAI, Bereitstellung eines IdP mit SimpleSAMLphp ====== ====== DFN-AAI, Bereitstellung eines IdP mit SimpleSAMLphp ======
Zeile 11: Zeile 11:
 RedHat EL 5 oder 6, simpleSAMLphp-1.10,​ php-5.3 RedHat EL 5 oder 6, simpleSAMLphp-1.10,​ php-5.3
  
-einfache Bereitstellung eines IdP '''​SAML2''' ​(shib1.3 sollte ähnlich einfach sein) mit Anbindung an das lokale ldap, Attribute werden aus vorhandenen Attributen erzeugt und in das geforderte Format überführt.+einfache Bereitstellung eines IdP '''​SAML2''' ​und '''​SAML1.1'''​ (shib13) mit Anbindung an das lokale ldap, Attribute werden aus vorhandenen Attributen erzeugt und in das geforderte Format überführt.
  
 Folgende Attribute werden bereitgestellt:​ Folgende Attribute werden bereitgestellt:​
Zeile 17: Zeile 17:
   * mail   * mail
   * sn   * sn
 +  * givenName
   * ou   * ou
   * eduPersonTargetedID   * eduPersonTargetedID
Zeile 22: Zeile 23:
   * eduPersonPrincipalName   * eduPersonPrincipalName
   * eduPersonScopedAffiliation   * eduPersonScopedAffiliation
 +  * eduPersonEntitlement
  
 Alle eduPerson-Attribute werden direkt oder indirekt aus vorhandenen LDAP-Attributen erzeugt oder befüllt. Alle eduPerson-Attribute werden direkt oder indirekt aus vorhandenen LDAP-Attributen erzeugt oder befüllt.
Zeile 36: Zeile 38:
  
 ==== Änderungen am Code ==== ==== Änderungen am Code ====
-=== Attribute aus LDAP ===+==== Attribute aus LDAP ====
  
 Ich brauche für die Attributfilter die DN des Nutzers. Und ich möchte nur die erste E-Mail-Adresse aus LDAP haben (bei uns ist das mail-attribut in ldap multivalued). Dazu habe ich folgende Zeilen in der Datei Ich brauche für die Attributfilter die DN des Nutzers. Und ich möchte nur die erste E-Mail-Adresse aus LDAP haben (bei uns ist das mail-attribut in ldap multivalued). Dazu habe ich folgende Zeilen in der Datei
Zeile 52: Zeile 54:
 ===== Konfiguration ===== ===== Konfiguration =====
  
-=== ldap auth ===+==== ldap auth ====
  
 '''​metadata/​saml20-idp-hosted.php'''​ '''​metadata/​saml20-idp-hosted.php'''​
  
 <code php> <code php>
-$metadata['​__DYNAMIC:1__'] = array( +$metadata['​https://​idp.fh-schmalkalden.de/​simplesaml'] = array( 
-        /* + /* 
-         ​* The hostname of the server (VHOST) that will use this SAML entity. +  * The hostname of the server (VHOST) that will use this SAML entity. 
-         ​+  
-         ​* Can be '​__DEFAULT__',​ to use this entry by default. +  * Can be '​__DEFAULT__',​ to use this entry by default. 
-         ​*/ +  */ 
-        '​host'​ => '​__DEFAULT__',​+ '​host'​ => '​__DEFAULT__',​
  
-        ​/* X.509 key and certificate. Relative to the cert directory. */ + /* X.509 key and certificate. Relative to the cert directory. */ 
-        '​privatekey'​ => '​idp.key',​ + '​privatekey'​ => '​idp.key',​ 
-        '​certificate'​ => '​idp.crt',​+ '​certificate'​ => '​idp.crt',​
  
-        ​/* + /* 
-         ​* Authentication ​code to use. Must be one that is configured in +  * Authentication ​source ​to use. Must be one that is configured in 
-         ​* '​config/​authcodes.php'​. +  * '​config/​authsources.php'​. 
-         ​*/ +  */ 
-        '​auth'​ => '​auth/​login.php',​ + '​auth'​ => '​auth/​login.php',​ 
-        /* uid attr */ + '​userid.attribute'​ => '​uid',​
-        ​'​userid.attribute'​ => '​uid',​ +
-        /* DFN-AAI attribut format: */ +
-        '​AttributeNameFormat'​ => '​urn:​oasis:​names:​tc:​SAML:​2.0:​attrname-format:​uri'​+
  
 + /* Uncomment the following to use the uri NameFormat on attributes. */
 + '​attributes.NameFormat'​ => '​urn:​oasis:​names:​tc:​SAML:​2.0:​attrname-format:​uri',​
 ); );
 </​code>​ </​code>​
 +
 +'''​metadata/​shib13-idp-hosted.php'''​
 +
 +<code php>
 +$metadata['​https://​idp.fh-schmalkalden.de/​simplesaml'​] = array(
 +
 + /*
 + * The hostname of the server (VHOST) that will use this SAML entity.
 + *
 + * Can be '​__DEFAULT__',​ to use this entry by default.
 + */
 + '​host'​ => '​__DEFAULT__',​
 +
 + /* X.509 key and certificate. Relative to the cert directory. */
 + '​privatekey'​ => '​idp.key',​
 + '​certificate'​ => '​idp.crt',​
 +
 + /*
 + * Authentication source to use. Must be one that is configured in
 + * '​config/​authsources.php'​.
 + */
 + '​auth'​ => '​auth/​login.php',​
 + '​userid.attribute'​ => '​uid',​
 +
 +);
 +
 +</​code>​
 +
 +
  
 '''​config/​ldap.php'''​ '''​config/​ldap.php'''​
 <code php> <code php>
 +...
 +
 $config = array ( $config = array (
  
Zeile 92: Zeile 124:
  * If the attributes parameter is set to null, all attributes will be retrieved.  * If the attributes parameter is set to null, all attributes will be retrieved.
  */  */
- //'​auth.ldap.dnpattern' ​ => '​uid=%username%,​dc=feide,​dc=no',​ + #'​auth.ldap.dnpattern' ​ => '​uid=%username%,​dc=feide,​dc=no,​ou=feide,​dc=uninett,​dc=no',​ 
- '​auth.ldap.hostname' ​  => 'ldaphost.fh-schmalkalden.de',​ + '​auth.ldap.hostname' ​  => 'ldapmaster.fh-schmalkalden.de ldapslave.fh-schmalkalden.de',​ 
- '​auth.ldap.attributes'​ => array('​mail','​sn','​ou','​uid','​employeeType','​organizationalStatus'​),​ + '​auth.ldap.attributes'​ => array('​gidNumber',​'​mail','​sn','​givenName','​ou','​uid','​employeeType','​organizationalStatus'​),​ 
- '​auth.ldap.enable_tls'​ => true,+ '​auth.ldap.enable_tls'​ => TRUE,
   
  /*  /*
Zeile 122: Zeile 154:
 ); );
  
-?>+...
 </​code>​ </​code>​
  
-=== saml2 idp ===+==== saml2 und saml1.1 IdP ====
  
 '''​config/​config.php'''​ '''​config/​config.php'''​
 +
  
 <​code>​ <​code>​
 +...
         '​enable.saml20-idp' ​            => true,         '​enable.saml20-idp' ​            => true,
-        '​enable.shib13-idp' ​            ​=> ​false,+        '​enable.shib13-idp' ​            ​=> ​true,
         '​enable.adfs-idp' ​              => false,         '​enable.adfs-idp' ​              => false,
         '​enable.wsfed-sp' ​              => false,         '​enable.wsfed-sp' ​              => false,
         '​enable.authmemcookie'​ => false,         '​enable.authmemcookie'​ => false,
 +...        ​
 </​code>​ </​code>​
  
-=== Attribute DFN AAI bereitstellen ===+==== Attribute DFN AAI bereitstellen ​====
  
 Einige Attribute fehlen in der attributeMap! Einige Attribute fehlen in der attributeMap!
Zeile 260: Zeile 295:
  
 Dieses Update wird dann später per cron-job automatisch durchgeführt. Dieses Update wird dann später per cron-job automatisch durchgeführt.
-Diese Variante NUR ZUM TEST, später wird ein eigenes Verzeichnis erstellt und dieMetadatan ​werden per cronjob regelmäßig geupdated. Siehe letzter Absatz.+Diese Variante NUR ZUM TEST, später wird ein eigenes Verzeichnis erstellt und die Metadatan ​werden per cronjob regelmäßig geupdated. Siehe letzter Absatz.
  
 ===== Test mit testsp.aai.dfn.de ===== ===== Test mit testsp.aai.dfn.de =====
  
-=== Eingabe der Metadaten des IdP beim DFN-AAI-Tool ===+==== Eingabe der Metadaten des IdP beim DFN-AAI-Tool ​====
  
   * neuen IdP anlegen (Verwaltungstool DFN-AAI)   * neuen IdP anlegen (Verwaltungstool DFN-AAI)
Zeile 274: Zeile 309:
   * unbedingt den Scope eintragen (bei uns fh-schmalkalden.de),​ sonst können die scoped-Attribute nicht richtig interpretiert werden (Anmelden am staffonly nicht möglich)   * unbedingt den Scope eintragen (bei uns fh-schmalkalden.de),​ sonst können die scoped-Attribute nicht richtig interpretiert werden (Anmelden am staffonly nicht möglich)
  
-=== Test der Authentifizierung ===+==== Test der Authentifizierung ​====
  
-zunächst könnte man das debugging einschalten,​ die SAML-Antwort an den SP wird dann angezeigt:+=== SAML2 ===
  
-'''​config/​config.php''':​ 
  
-<​code>​ +https://​testsp2.aai.dfn.de/​secure-all
-       '​debug' ​                ​=> ​     TRUE, +
-</​code>​ +
- +
-dann weiter mit https://​testsp2.aai.dfn.de/​secure-all+
  
 oder zusätzlich als Member oder zusätzlich als Member
  
 https://​testsp2.aai.dfn.de/​secure-memberonly https://​testsp2.aai.dfn.de/​secure-memberonly
 +
 +=== SAML1.1 (Shib13) ===
 +
 +https://​testsp.aai.dfn.de/​secure-all
 +https://​testsp.aai.dfn.de/​secure-memberonly
 +
  
 ===== automatisches Update der SP-Metadaten ===== ===== automatisches Update der SP-Metadaten =====
  
 siehe http://​simplesamlphp.org/​docs/​1.10/​simplesamlphp-automated_metadata siehe http://​simplesamlphp.org/​docs/​1.10/​simplesamlphp-automated_metadata
 +
  
 <note important>​Performanceprobleme mit xmlseclibs.php</​note>​ <note important>​Performanceprobleme mit xmlseclibs.php</​note>​
Zeile 300: Zeile 337:
   PHP Fatal error: ​ Maximum execution time of 600 seconds exceeded in /​var/​simplesamlphp/​lib/​xmlseclibs.php on line 770   PHP Fatal error: ​ Maximum execution time of 600 seconds exceeded in /​var/​simplesamlphp/​lib/​xmlseclibs.php on line 770
  
-Ich hatte die max. exec time von php von ursprünlich 30sec schon auf 600sec erhöht. ​Dazu dieser Hinweis:+Dazu dieser Hinweis:
  
 https://​simplesamlphp.org/​metaprocessing https://​simplesamlphp.org/​metaprocessing
Zeile 311: Zeile 348:
  
  
-===== Änderungen am Code für redundanz ldap-server ===== 
- 
-  * simplesamlphp-1.10 
-  * php-5.3 (wegen ldap-network-timeout-option notwendig) 
- 
-Ich habe in der config/​ldap.php aus einem String ein Array gemacht: 
- 
-<​code>​ 
-... 
-'​auth.ldap.hostname' ​  => array('​ldapmaster.fh-entenhausen.de',​ 
-                                        '​ldapslave.fh-entenhausen.de'​),​ 
-... 
-</​code>​ 
- 
-und am Code was geändert: 
- 
-lib/​SimpleSAML/​Auth/​LDAP.php:​ 
- 
-<code lang="​diff">​ 
-58c58 
-< '​host=\''​ . $hostname . 
---- 
-> '​host=\''​ . $hostname[0] . 
-76,79c76,84 
-< $this->​ldap = @ldap_connect($hostname,​ $port); 
-< if ($this->​ldap == FALSE) 
-< throw new $this->​makeException('​Library - LDAP __construct():​ Unable to connect to \''​ . $hostname . '​\'',​ ERR_INTERNAL);​ 
- 
---- 
->         ​$this->​ldap = @ldap_connect($hostname[1]);​ 
->         ​ldap_set_option($this->​ldap,​ LDAP_OPT_NETWORK_TIMEOUT,​ 3); 
->         if (!($rr = @ldap_bind($this->​ldap))) { 
->            $this->​ldap = @ldap_connect($hostname[0]);​ 
->            ldap_set_option($this->​ldap,​ LDAP_OPT_NETWORK_TIMEOUT,​ 3); 
->            if (!($rr = @ldap_bind($this->​ldap))) { 
->              throw $this->​makeException('​Library - LDAP __construct():​ Unable to connect to the ldap-server!',​ ERR_INTERNAL);​ 
->            }  
->         } 
-98c103 
-< if (!preg_match("/​ldaps:/​i",​ $hostname) and $enable_tls) 
---- 
-> if ($enable_tls) 
- 
-</​code>​ 
  
 +===== Speicherung der Micro-Approve-Nutzerdaten in einer Datenbank =====
  
-Bei Ausfall eines Ldap-Servers wird gegen den zweiten authentifiziert.+https://​simplesamlphp.org/​docs/​stable/​consent:​consent
  
  
simplesamlphp_dfn_aai.1425463591.txt.gz · Zuletzt geändert: 2015/03/04 11:06 von 2007