Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibidp3userdepro [2019/08/05 16:31]
Silke Meyer
de:shibidp3userdepro [2019/08/28 10:47] (aktuell)
Wolfgang Pempe [Verlässlichkeit von Queries]
Zeile 1: Zeile 1:
 +~~NOTOC~~
 ====== User Deprovisionierung via Attribute Query ====== ====== User Deprovisionierung via Attribute Query ======
 +{{INLINETOC 2}}
  
 =====Einleitung===== =====Einleitung=====
Zeile 145: Zeile 146:
 Um den LDAP nicht mit **Karteileichen** vollzumüllen,​ so wäre eine Möglichkeit die Struktur des LDAP wie folgt zu erweitern: Um den LDAP nicht mit **Karteileichen** vollzumüllen,​ so wäre eine Möglichkeit die Struktur des LDAP wie folgt zu erweitern:
  
-   * ou=users,​dc=einrichtung,​dc=de (nur aktive Nutzer) +   ​* ​''​ou=users,​dc=einrichtung,​dc=de'' ​(nur aktive Nutzer) 
-   * ou=archive,​dc=einrichtung,​dc=de +   ​* ​''​ou=archive,​dc=einrichtung,​dc=de''​ 
-      * ou=users,​ou=archive,​dc=einrichtung,​dc=de (nur archivierte Nutzer) +      * ''​ou=users,​ou=archive,​dc=einrichtung,​dc=de'' ​(nur archivierte Nutzer) 
-         * ou=inactive,​ou=users,​ou=archive,​dc=einrichtung,​dc=de (nur inaktive Nutzer+         ​* ​''​ou=disabled,​ou=users,​ou=archive,​dc=einrichtung,​dc=de'' ​(gelöscht, kann aber wieder angelegt werden
-         * ou=blocked,​ou=users,​ou=archive,​dc=einrichtung,​dc=de (nur blockierte Nutzer+         ​* ​''​ou=locked,​ou=users,​ou=archive,​dc=einrichtung,​dc=de'' ​(vorübergehend gesperrt, z.B. aus Sicherheitsgründen
- +         * ''​ou=deleted,​ou=users,​ou=archive,​dc=einrichtung,​dc=de''​ (endgültig gelöschte Nutzer, falls die Identitäten noch gespeichert werden sollen, z.B. um sicherzustellen,​ dass User IDs nicht neu vergeben werden) 
-Scheidet ein Nutzer aus oder muss z.B. auf Grund eines Sicherheitsvorfalls kurzfristig deaktiviert werden, so verschiebt man diesen zunächst nach "​inactive"​.\\+Scheidet ein Nutzer aus oder muss z.B. auf Grund eines Sicherheitsvorfalls kurzfristig deaktiviert werden, so verschiebt man diesen zunächst nach ''​locked''​.\\
 Damit kann er sich schon mal nicht mehr am IdP authentifizieren (da nicht mehr im baseDN).\\ Damit kann er sich schon mal nicht mehr am IdP authentifizieren (da nicht mehr im baseDN).\\
-Kommt der Nutzer nach x-Tagen nicht mehr zurück an die Einrichtung so kann man ihn dauerhaft löschen und nach "blocked" ​verschieben.+Kommt der Nutzer nach x-Tagen nicht mehr zurück an die Einrichtung so kann man ihn dauerhaft löschen und nach ''​disabled''​ oder ''​deleted''​ verschieben. 
 + 
 +Generell reicht es zu, wenn die Einträge unter ''​ou=archive''​ nur noch die "uid" ​beinhalten und nicht mehr alle Attribute(das spart Speicher ^^)
  
-Generell reicht es zuwenn die Einträge unter "​ou=archive"​ nur noch die "​uid"​ beinhalten und nicht mehr alle Attribute. (das spart Speicher ^^)+Jetzt definieren wir im IdP das Attribut [[de:​common_attributes#​a15|schacUserStatus]], das den Status der betreffenden Identität abbilden soll:
  
-Jetzt definieren wir im IdP ein neues Attribut was den zukünftigen Status abbilden soll.+Vokabular für schacUserStatus:​ 
 +  * Attributwert:​ ''​urn:​schac:​userStatus:​de:​aai.dfn.de:​idmStatus:​STATUS'',​ wobei ''​STATUS''​ die folgenden Werte annehmen kann: 
 +  * ''​active''​ (optional) (entspricht AD '​enabled'​) 
 +  * ''​locked''​ (optional) (vorübergehend gesperrt, z.B. aus Sicherheitsgründen) 
 +  * ''​disabled''​ (optional) (gelöscht, kann aber wieder angelegt werden) 
 +  * ''​deleted''​ (mandatory) (Account und Benutzerinformationen gelöscht)
  
 <file xml conf/​attribute-resolver.xml>​ <file xml conf/​attribute-resolver.xml>​
Zeile 174: Zeile 182:
  <​![CDATA[  <​![CDATA[
  if (typeof entryDN != "​undefined"​ && entryDN.getValues().size() > 0) {  if (typeof entryDN != "​undefined"​ && entryDN.getValues().size() > 0) {
- var prefix = "​urn:​schac:​userStatus:​de:​einrichtung.de:";​ + var prefix = "​urn:​schac:​userStatus:​de:​aai.dfn.de:";​ 
- var ​inactive ​= "ou=inactive,​ou=users,​ou=archive,​dc=einrichtung,​dc=de";​ + var ​disabled= "ou=disabled,​ou=users,​ou=archive,​dc=einrichtung,​dc=de";​ 
- var ​blocked ​= "ou=blocked,​ou=users,​ou=archive,​dc=einrichtung,​dc=de";​+ var ​locked ​ = "​ou=locked,​ou=users,​ou=archive,​dc=einrichtung,​dc=de";​ 
 +                                        var deleted ​= "ou=deleted,​ou=users,​ou=archive,​dc=einrichtung,​dc=de";​
  
  for (i=0; i<​entryDN.getValues().size();​ i++) {  for (i=0; i<​entryDN.getValues().size();​ i++) {
  var tmp = entryDN.getValues().get(i);​  var tmp = entryDN.getValues().get(i);​
  
- if (tmp.endsWith(inactive)) { + if (tmp.endsWith(disabled)) { 
- schacUserStatus.addValue(prefix + "affiliation:inactive");+ schacUserStatus.addValue(prefix + "idmStatus:disabled");
  }  }
- if (tmp.endsWith(blocked)) { + else if (tmp.endsWith(locked)) { 
- schacUserStatus.addValue(prefix + "affiliation:blocked");+ schacUserStatus.addValue(prefix + "idmStatus:locked"​);​ 
 +
 + else if (tmp.endsWith(deleted)) { 
 + schacUserStatus.addValue(prefix + "​idmStatus:​deleted"​);​ 
 +
 + else { 
 + schacUserStatus.addValue(prefix + "​idmStatus:​active");
  }  }
  }  }
Zeile 226: Zeile 241:
 </​file>​ </​file>​
  
-Bekommt ein SP nun bei einem Query einen der folgenden ​beiden ​Werte, so kann er den Nutzer verlässlich sperren oder gar löschen.\\ +Bekommt ein SP nun bei einem Query einen der folgenden Werte, so kann er den Nutzer verlässlich sperren oder gar löschen.\\ 
-   * urn:​schac:​userStatus:​de:​einrichtung.de:affiliation:inactive +   ​* ​''​urn:​schac:​userStatus:​de:​aai.dfn.de:idmStatus:disabled''​ 
-   * urn:​schac:​userStatus:​de:​einrichtung.de:affiliation:blocked +   ​* ​''​urn:​schac:​userStatus:​de:​aai.dfn.de:idmStatus:locked''​ 
 +   * ''​urn:​schac:​userStatus:​de:​aai.dfn.de:​idmStatus:​deleted''​ 
 +   *  
 +Als Beispiel für eine Attribute Query, die ein solches Attribut liefert, kann dieser URL genutzt werden: \\ 
 +https://​testsp3.aai.dfn.de/​Shibboleth.sso/​AttributeResolver?​entityID=https://​testidp.aai.dfn.de/​idp/​shibboleth&​nameId=MCE6NXEQ3FC3PUKY4M75EYCOWN4TGKBH&​format=urn:​oasis:​names:​tc:​SAML:​2.0:​nameid-format:​persistent
 =====Queries einschränken===== =====Queries einschränken=====
  
  • Zuletzt geändert: vor 4 Monaten