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
Letzte ÜberarbeitungBeide Seiten der Revision
de:shibidp3x509 [2018/06/21 15:15] Wolfgang Pempede:shibidp3x509 [2021/05/03 14:53] Silke Meyer
Zeile 1: Zeile 1:
 ====== X509-Authentifizierung in Shibboleth ====== ====== X509-Authentifizierung in Shibboleth ======
 +<callout color="#ff9900" title="Archiv">
 +Dieser Artikel ist ein Beitrag für Shibboleth IdP 3.x. Es ist unklar, ob er für Shibboleth IdP 4.x so noch gilt.
 +</callout>
 +Ein Login-Vorgang am Shibboleth-IdP besteht im Allgemeinen aus verschiedenen //Flows//. Nachdem eine Anfrage von einem Service Provider (SP) empfangen wurde, geht der IdP in einen der verfügbaren Flows zur Authentifizierung über. Dabei handelt es sich beispielsweise um den Password-Flow authn/Password, wobei sich der Nutzer durch die Eingabe von Nutzername und Passwort authentifizieren kann. Diese Daten werden dann gegen eine angeschlossene Datenquelle (häufig LDAP-Server) geprüft. Am Ende dieses Flows steht die //Subject-Canonicalization//, die das Erzeugen eines Benutzernamens (auch //Principal// genannt) für den Nutzer, der sich gerade erfolgreich authentifiziert hat, beschreibt. Unter diesem Benutzernamen ist der Nutzer im weiteren Verlauf im IdP bekannt. Normalerweise entspricht dieser Name schlichtweg dem Nutzernamen.
  
-Ein Login-Vorgang am Shibboleth-IdP besteht im Allgemeinen aus verschiedenen //Flows//. Nachdem eine Anfrage von einem Service Provider (SP) empfangen wurde, geht der IdP in einen der verfügbaren Flows zur Authentifizierung über. Dabei handelt es sich beispielsweise um den Password-Flow authn/Passwordwobei sich der Nutzer durch die Eingabe von Nutzername und Passwort authentifizieren kannDiese Daten werden dann gegen eine angeschlossene Datenquelle (häufig LDAP-Server) geprüftAm Ende dieses Flows steht die //Subject-Canonicalization//, die das Erzeugen eines Benutzernamens (auch //Principal// genannt) für den Nutzer, der sich gerade erfolgreich authentifiziert hat, beschreibt. Unter diesem Benutzernamen ist der Nutzer im weiteren Verlauf schließlich im IdP bekannt. Normalweise (und vor allem bei Verwendung des Password-Flowsentspricht dieser Name schlichtweg dem Nutzernamen.+Neben dem authn/Password-Flow stellt der Shibboleth-IdP auch den sogenannten authn/X509-Flow zur Verfügung, der die Verwendung von X509-Client-Zertifikaten als Authentifizierungsmethode erlaubtDie Logik auf Seiten des IdP ist dabei vergleichsweise simpel: Im Servlet-Container wird die Umgebungsvariable „javax.servlet.request.X509Certificate“ verwendet, um zu prüfen, ob die Authentifizierung erfolgreich ist. Wie diese Variable befüllt wird, spielt für den IdP dabei keine Rolle (siehe [[https://wiki.shibboleth.net/confluence/display/IDP30/X509AuthnConfiguration|Dokumentation im Shibboleth Wiki]]).
  
-Neben dem authn/Password-Flow stellt der Shibboleth-IdP auch den sogenannten authn/X509-Flow zur Verfügungwelcher die Verwendung von X509-Client-Zertifikaten als Authentifizierungsmethode erlaubtDie Logik auf Seiten des IdP ist dabei vergleichsweise simpel, da schlichtweg die Umgebungsvariable „javax.servlet.request.X509Certificate“ im Servlet-Container verwendet wird, um zu prüfen, ob die Authentifizierung erfolgreich ist oder nicht. Wie diese Variable befüllt wirdspielt für den IdP dabei keine Rolle [Shib-X509AuthnConfiguration].+Jeder Login-Flow wird über einen dedizierten Endpunkt am IdP zur Verfügung gestellt. Bei authn/X509 handelt es sich dabei um den Pfad /Authn/X509. Ein naheliegender Weg besteht nun darin, diesen Endpunkt über den Apache-Webserver zu schützen. Sobald der IdP dann in seinem Ablauf in den authn/X509-Flow springt (wodurch der User auf den geschützten Pfad auf dem Webserver weitergeleitet wird)greift die Zugriffskontrolle von Apache. Da in diesem Fall als Authentifizierungsmethode X509-Zertifikate eingesetzt werden sollen, kann hierfür das [[https://httpd.apache.org/docs/2.4/mod/mod_ssl.html|Apache-Modul „mod_ssl“ entsprechend konfiguriert]] und das Client-Zertifikat validiert werdenIst diese Validierung erfolgreich, kann der Nutzer den Endpunkt des IdP aufrufen. Dort ist „javax.servlet.request.X509Certificate“ nun korrekt befüllt und stellt Informationen über das verwendete Zertifikat bereit. Wenn die Zugriffskontrolle von Apache den Nutzer nicht durchlässt (also die Validierung des Zertifikats nicht erfolgreich war)kommt der Nutzer gar nicht erst zum X509-Endpunkt.
  
-Jeder Login-Flow wird über einen dedizierten Endpunkt am IdP zur Verfügung gestellt. Bei authn/X509 handelt es sich dabei um den Pfad /Authn/X509. Ein naheliegender Weg besteht nun darindiesen Endpunkt über den Apache-Webserver zu schützen. Sobald der IdP dann in seinem Ablauf in den authn/X509-Flow springt (wodurch der User auf den geschützten Pfad auf dem Webserver weitergeleitet wird), greift die Zugriffskontrolle von Apache. Da in diesem Fall als Authentifizierungsmethode X509-Zertifikate eingesetzt werden sollen, kann hierfür das Apache-Modul „mod_ssl“ entsprechend konfiguriert [Apache-mod-ssl] und das Client-Zertifikat validiert werden. Ist diese Validierung erfolgreich, kann der Nutzer den Endpunkt des IdP aufrufen. Dort ist „javax.servlet.request.X509Certificate“ nun korrekt befüllt und stellt Informationen über das verwendete Zertifikat bereit. Wenn die Zugriffskontrolle von Apache den Nutzer nicht durchlässt (also die Validierung des Zertifikats nicht erfolgreich war), kommt der Nutzer gar nicht erst zum X509-Endpunkt.+Im Gegensatz zum authn/Password-Flow, wo die //Subject-Canonicalization// im Allgemeinen sehr simpel istmuss beim authn/X509-Flow unter Umständen mehr konfiguriert werden. Normalerweise lässt sich der zu verwendende Name aber aus dem //Subject-DN// des Client-Zertifikats extrahieren.
  
-Im Gegensatz zum authn/Password-Flowwo die //Subject-Canonicalization// im Allgemeinen sehr simpel ist, muss beim authn/X509-Flow unter Umständen mehr konfiguriert werden. Normalerweise lässt sich der zu verwendende Name aber aus dem //Subject-DN//des Client-Zertifikats extrahieren.+===== Anleitung für ApacheTomcat und Shibboleth =====
  
-====== Anleitung für Apache, Tomcat und Shibboleth ====== +Hier soll nun die beschriebene Kombination von Apache-Webserver (Apache 2), Tomcat Java-Servlet-Container (Tomcat 7 bzw. 8) und Shibboleth IdP V3.X beschrieben werden. In der Anleitung wird davon ausgegangen, dass die prinzipielle Infrastruktur bereits aufgebaut und lauffähig ist.
- +
-In diesem Kapitel soll nun die beschriebene Kombination von Apache-Webserver (Apache 2), Tomcat Java-Servlet-Container (Tomcat 7 bzw. 8) und Shibboleth IdP V3.X beschrieben werden. In der Anleitung wird davon ausgegangen, dass die prinzipielle Infrastruktur bereits aufgebaut und lauffähig ist.+
  
 In diesem Beispiel werden zwei Client-Zertifikate verwendet: In diesem Beispiel werden zwei Client-Zertifikate verwendet:
 +    - emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 1, C=DE
 +    - emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 2, C=DE
  
-Zertifikat 1: emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 1, C=DE +Die Zertifikate sind durch folgende Zertifikat-Hierarchie ausgestellt: 
- +  C=DE,O=Test,CN=Test Eins CA 
-Zertifikat 2: emailAddress=mustermann@dfn-cert.de, CN=Erika Mustermann, OU=Test, O=Organisation 2, C=DE +  C=DE,O=Test,CN=Test Intermediate 
- +  C=DE,O=Test,CN=Test Root (Root CA
-Die Zertifikate sind nun durch folgende Zertifikat-Hierarchie ausgestellt: +
- +
-C=DE,O=Test,CN=Test Eins CA +
- +
-C=DE,O=Test,CN=Test Intermediate +
- +
-C=DE,O=Test,CN=Test Root +
- +
-Bei „CN=Test Root“ handelt es sich in diesem Beispiel um die Root CA+
- +
-Die beiden Zertifikate unterscheiden sich also nur durch die Zugehörigkeit zu Organisation 1 bzw. Organisation 2.+
  
-Beide Zertifikate wurden als Client-Zertifikate in den Browser importiert.+Die beiden Zertifikate unterscheiden sich also nur durch die Zugehörigkeit zu Organisation 1 bzw. Organisation 2. Beide Zertifikate wurden als Client-Zertifikate in den Browser importiert.
  
 ===== Konfiguration der Authentifizierung in Shibboleth ===== ===== Konfiguration der Authentifizierung in Shibboleth =====
Zeile 39: Zeile 32:
 Weiterhin werden laut [[https://wiki.shibboleth.net/confluence/display/IDP30/X509AuthnConfiguration|Shibboleth Wiki]] noch drei optionale Konfigurationsmöglichkeiten des Flows in ''{idp.home}/conf/authn/x509-authn-config.xml'' angeboten. In der Praxis dürfte in den meisten Fällen jedoch nur einer davon relevant sein: Weiterhin werden laut [[https://wiki.shibboleth.net/confluence/display/IDP30/X509AuthnConfiguration|Shibboleth Wiki]] noch drei optionale Konfigurationsmöglichkeiten des Flows in ''{idp.home}/conf/authn/x509-authn-config.xml'' angeboten. In der Praxis dürfte in den meisten Fällen jedoch nur einer davon relevant sein:
  
-''shibboleth.authn.X509.externalAuthnPath'' erlaubt das Festlegen des Pfads, auf den weitergeleitet werden soll, sobald der Login-Flow aufgerufen wird. Standardmäßig wird der Nutzer dabei auf eine vorgeschaltete Seite weitergeleitet (siehe Abbildung ) und muss explizit bestätigen, dass er nun einen Login per X509-Zertifikat wünscht (was dann zur Weiterleitung auf den Endpunkt /Authn/X509 führt). Wenn dieses Verhalten nicht gewünscht ist, kann dieser Parameter direkt auf den Endpunkt gesetzt werden.+''shibboleth.authn.X509.externalAuthnPath'' erlaubt das Festlegen des Pfads, auf den weitergeleitet werden soll, sobald der Login-Flow aufgerufen wird. Standardmäßig werden die Nutzer*innen dabei auf eine vorgeschaltete Seite weitergeleitet (siehe Abbildung). Dort müssen sie explizit bestätigen, dass sie einen Login per X509-Zertifikat wünschen. Dann werden sie auf den Endpunkt /Authn/X509 weitergeleitet. Wenn dieses Verhalten nicht gewünscht ist, kann dieser Parameter direkt auf den Endpunkt gesetzt werden.
  
-{{:de:screenshot_x509-login.png| \\ +{{:de:screenshot_x509-login.png|Standardmäßig konfigurierte Hinweis-Seite vor der Weiterleitung auf den geschützten Endpunkt}}
-Abbildung 1: Standardmäßig konfigurierte Hinweis-Seite vor der Weiterleitung auf den geschützten Endpunkt}} +
- +
-**Abbildung 1:** Standardmäßig konfigurierte Hinweis-Seite vor der Weiterleitung auf den geschützten Endpunkt+
  
 ===== Validierung der Zertifikate in Apache ===== ===== Validierung der Zertifikate in Apache =====
Zeile 58: Zeile 48:
 </code> </code>
  
-Zu beachten istdass dies nicht innerhalb einer Location-Angabe in Apache erfolgen darf, da insbesondere Apache in der Version 2.4 und mit aktueller OpenSSL-Version damit nicht zurechtkommt. Stattdessen muss diese Angabe direkt im Virtual-Host gesetzt werden.+Die Direktive muss direkt im VirtualHost stehen, nicht innerhalb einer Location-Angabe.
  
 ==== Schutz des X509-Endpunkts des IdP ==== ==== Schutz des X509-Endpunkts des IdP ====
Zeile 68: Zeile 58:
  SSLVerifyClient require  SSLVerifyClient require
  SSLVerifyDepth 3  SSLVerifyDepth 3
- SSLOptions +StdEnvVars +ExportCertData+ SSLOptions  StdEnvVars  ExportCertData
  Require expr (%{SSL_CLIENT_S_DN_O} == 'Organisation 1')  Require expr (%{SSL_CLIENT_S_DN_O} == 'Organisation 1')
 </Location> </Location>
Zeile 82: Zeile 72:
  
 ''Require'' erlaubt die Konfiguration von Bedingungen, die erfüllt sein müssen, damit der Zugriff gestattet wird und ermöglicht damit die Einschränkung der Authentifizierung auf bestimmte Nutzergruppen. Im folgenden wird diese Direktive genauer betrachtet. ''Require expr'' ersetzt im Allgemeinen die veraltete ''SSLRequire''-Direktive. ''Require'' erlaubt die Konfiguration von Bedingungen, die erfüllt sein müssen, damit der Zugriff gestattet wird und ermöglicht damit die Einschränkung der Authentifizierung auf bestimmte Nutzergruppen. Im folgenden wird diese Direktive genauer betrachtet. ''Require expr'' ersetzt im Allgemeinen die veraltete ''SSLRequire''-Direktive.
- 
 ==== Konfigurationsmöglichkeiten Require ==== ==== Konfigurationsmöglichkeiten Require ====
  
-Die Verwendung von ''Require'' ist in der [[https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#reqexpr|Apache Online-Dokumentation]] vollständig dokumentiert. Weitere Informationen zur Syntax der alten Direktive SSLRequire lassen sich unter [Apache-SSLRequirefinden. Die Syntax ist mit einigen Ausnahmen identisch.+Die Verwendung von ''Require'' ist in der [[https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#reqexpr|Apache Online-Dokumentation]] vollständig dokumentiert. Weitere Informationen zur Syntax der alten Direktive ''SSLRequire'' finden sich [[https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslrequire|hier]]. Die Syntax ist mit einigen Ausnahmen identisch.
  
-In dem Beispiel aus Kapitel [[#anchor-3|3.2.2]] wird beispielsweise die Einschränkung (%{SSL_CLIENT_S_DN_O} == 'Organisation 1') verwendet. Dabei wird mit %{SSL_CLIENT_S_DN_O} zunächst auf eine Umgebungsvariable zugegriffen (in diesem Fall, der O-Komponente des Subject-DN des Client-Zertifikats) welche dann auf Übereinstimmung mit einem bestimmten String verglichen wird. Eine Übersicht über die nutzbaren Umgebungsvariablen findet sich unter [Apache-SSL-Envvars]. In diesem Beispiel würde also Zertifikat 1 (O=Organisation 1) Zugriff erhalten, während Zertifikat 2 (O=Organisation 2) nicht akzeptiert werden würde.+In dem Beispiel oben wird beispielsweise die Einschränkung ''(%{SSL_CLIENT_S_DN_O} == 'Organisation 1')'' verwendet. Dabei wird mit ''%{SSL_CLIENT_S_DN_O}'' zunächst auf eine Umgebungsvariable zugegriffen (in diesem Fall, der O-Komponente des Subject-DN des Client-Zertifikats) welche dann auf Übereinstimmung mit einem bestimmten String verglichen wird. Eine Übersicht über die nutzbaren Umgebungsvariablen findet sich in der [[https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#envvars|Apache Online-Dokumentation]]. In diesem Beispiel würde also Zertifikat 1 (O=Organisation 1) Zugriff erhalten, während Zertifikat 2 (O=Organisation 2) nicht akzeptiert werden würde.
  
 Diese Einschränkungen können nun nach Belieben kombiniert werden, etwa wie im folgenden Beispiel: Diese Einschränkungen können nun nach Belieben kombiniert werden, etwa wie im folgenden Beispiel:
  
 +<code apache>
 Require expr ( (%{SSL_CLIENT_S_DN_O} == 'Organisation 1') \ Require expr ( (%{SSL_CLIENT_S_DN_O} == 'Organisation 1') \
  
  && (%{SSL_CLIENT_I_DN_CN} == 'Test Zwei CA') )  && (%{SSL_CLIENT_I_DN_CN} == 'Test Zwei CA') )
 +</code>
  
-Hier wird mit //%{SSL_CLIENT_I_DN_CN}// der CN des Issuer des Client-Zertifikats überprüft. Da beide Zertifikate von „Test Eins CA“ ausgestellt wurden, werden beide Zertifikate nicht akzeptiert. +Hier wird mit ''%{SSL_CLIENT_I_DN_CN}'' der CN des Issuer des Client-Zertifikats überprüft. Da beide Zertifikate von „Test Eins CA“ ausgestellt wurden, werden beide Zertifikate nicht akzeptiert.
 ===== Weiterverarbeitung des Ergebnisses in Shibboleth ===== ===== Weiterverarbeitung des Ergebnisses in Shibboleth =====
  
-Nachdem nun in Apache die Validierung des Client-Zertifikats vorgenommen und dieses akzeptiert wurde, kann der User auf den authn/x509-Endpunkt am IdP zugreifen. Dort steht dem IdP über die Umgebungsvariable javax.servlet.request.X509Certificate“ der Inhalt des Client-Zertifikats zur Verfügung.+Nachdem nun in Apache die Validierung des Client-Zertifikats vorgenommen und dieses akzeptiert wurde, kann der User auf den authn/x509-Endpunkt am IdP zugreifen. Dort steht dem IdP über die Umgebungsvariable ''javax.servlet.request.X509Certificat'' der Inhalt des Client-Zertifikats zur Verfügung.
  
 Im Folgenden werden einige Punkte beschrieben, die nun üblicherweise am IdP nach der eigentlichen Authentifizierung zu beachten sind: Im Folgenden werden einige Punkte beschrieben, die nun üblicherweise am IdP nach der eigentlichen Authentifizierung zu beachten sind:
Zeile 105: Zeile 95:
 ==== Extrahieren des „Principal“ aus dem Zertifikat ==== ==== Extrahieren des „Principal“ aus dem Zertifikat ====
  
-Zunächst muss über die //Subject-Canonicalization//ein Name für den Nutzer erstellt werden. Dies kann in {idp.home}/conf/c14n/x500-subject-c14n-config.xml konfiguriert werden. Hierbei stehen standardmäßig zwei Möglichkeiten zur Verfügung:+Zunächst muss über die //Subject-Canonicalization//ein Name für den Nutzer erstellt werden. Dies kann in ''{idp.home}/conf/c14n/x500-subject-c14n-config.xml'' konfiguriert werden. Hierbei stehen standardmäßig zwei Möglichkeiten zur Verfügung:
  
-Zunächst kann über eine Prioritätenliste auf etwaige Attribute im SubjectAltName des Zertifikats zugegriffen werden. Hier ist die Angabe von Werten zwischen 0 und 8 möglich, welche in [RFC-5280] definiert werden. 1 steht hier beispielsweise für E-Mail.+Zunächst kann über eine Prioritätenliste auf etwaige Attribute im SubjectAltName des Zertifikats zugegriffen werden. Hier ist die Angabe von Werten zwischen 0 und 8 möglich, welche in [[https://tools.ietf.org/html/rfc5280#section-4.1.2.6|RFC-5280]] definiert werden. 1 steht hier beispielsweise für E-Mail.
  
-Alternativ kann über eine zweite Prioritätenliste auf die einzelnen Komponenten im Subject-DN des Client-Zertifikats zugegriffen werden, wobei in der IdP-Konfiguration die jeweiligen OIDs angegeben werden müssen. Um also beispielsweise in den vorliegenden Zertifikaten die emailAddress – und wenn diese nicht im Subject-DN ist, alternativ den CN zu verwenden – könnte die folgende Regel definiert werden:+Alternativ kann über eine zweite Prioritätenliste auf die einzelnen Komponenten im Subject-DN des Client-Zertifikats zugegriffen werden, wobei in der IdP-Konfiguration die jeweiligen OIDs angegeben werden müssen. Um also beispielsweise in den vorliegenden Zertifikaten die ''emailAddress'' – und wenn diese nicht im Subject-DN ist, alternativ den CN zu verwenden – könnte die folgende Regel definiert werden:
  
 +<file xml ./conf/c14n/x500-subject-c14n-config.xml>
 <util:list id="shibboleth.c14n.x500.ObjectIDs"> <util:list id="shibboleth.c14n.x500.ObjectIDs">
- 
  <value>1.2.840.113549.1.9.1</value>  <value>1.2.840.113549.1.9.1</value>
- 
  <value>2.5.4.3</value>  <value>2.5.4.3</value>
- 
 </util:list> </util:list>
 +</file>
  
 Weiterhin ist es auch möglich, einige vorgegebene Transformationen anzuwenden (z. B. den Namen in Kleinbuchstaben transformieren) oder eigene Transformationen zu formulieren. Weiterhin ist es auch möglich, einige vorgegebene Transformationen anzuwenden (z. B. den Namen in Kleinbuchstaben transformieren) oder eigene Transformationen zu formulieren.
Zeile 125: Zeile 114:
 ==== Abfrage von Attributen aus einem LDAP-Server ==== ==== Abfrage von Attributen aus einem LDAP-Server ====
  
-Schließlich kann nun der in Kapitel [[#anchor-5|3.3.1]] erzeugte //Principal// dazu verwendet werden, weitere Attribute aus einem LDAP-Server abzufragen. In {idp.home}/conf/ldap.properties wird ein Suchfilter für den Attribute-Resolver definiert:+Schließlich kann nun der wie oben beschrieben erzeugte //Principal// dazu verwendet werden, weitere Attribute aus einem LDAP-Server abzufragen. In ''{idp.home}/conf/ldap.properties'' wird ein Suchfilter für den Attribute Resolver definiert:
  
 +<file properties ./conf/ldap.properties>
 idp.attribute.resolver.LDAP.searchFilter = (uid=$resolutionContext.principal) idp.attribute.resolver.LDAP.searchFilter = (uid=$resolutionContext.principal)
 +</file>
  
-Hierbei bezieht sich //$resolutionContext.principal// auf den in Kapitel [[#anchor-5|3.3.1]] erzeugten Namen. Dieser Filter wird dann normalerweise in den Data Connectors im Attribute-Resolver verwendet, um Informationen von einem LDAP-Server abzufragen. Die weitere Konfiguration unterscheidet sich dann nicht weiter von einer herkömmlichen Attribut-Abfrage.+Hierbei bezieht sich ''$resolutionContext.principal'' auf den wie oben beschrieben erzeugten Namen. Dieser Filter wird dann normalerweise in den Data Connectors im Attribute Resolver verwendet, um über eine LDAP-Schnittstelle Informationen aus einem Nutzerverzeichnis abzufragen. Die weitere Konfiguration unterscheidet sich dann nicht weiter von einer herkömmlichen Attribut-Abfrage.
  
-Eine weitere mögliche Verwendung des Principal ist eine Attribut-Definition in {idp.home}/conf/attribute-resolver.xml, die direkt auf diesen Wert zugreift:+Eine weitere mögliche Verwendung des Principal ist eine Attribut Definition in ''{idp.home}/conf/attribute-resolver.xml'', die direkt auf diesen Wert zugreift:
  
 +<file xml ./conf/attribute-resolver.xml>
 <AttributeDefinition id="uid" xsi:type="PrincipalName"> <AttributeDefinition id="uid" xsi:type="PrincipalName">
 +  <AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
 +</AttributeDefinition>
 +</file>
  
- <AttributeEncoder xsi:type="SAML1String"\\ +Hier wird der wie oben beschrieben erzeugte Principal als Eingangswert für das Attribut ''uid'' verwendet.
- name="urn:mace:dir:attribute-def:uid" encodeType="false" /> +
- +
- <AttributeEncoder xsi:type="SAML2String"\\ +
- name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid"\\ +
- encodeType="false" /> +
- +
-</AttributeDefinition>+
  
-Hier wird direkt der in Kapitel [[#anchor-5|3.3.1]] erzeugte Principal als Eingangswert für das Attribut uid verwendet.+{{tag>fixme}}
  • Zuletzt geändert: vor 3 Jahren