Anbindung des IdP an IdM‐ Systeme - DFN-AAI

Werbung
Anbindung
des
IdP
an
IdM‐
Systeme
VZG
13.11.2008,
7.
Shibboleth
Workshop
Franck
Borel,
VZG
Übersicht
VZG
• 
• 
• 
• 
• 
• 
• 
Vorraussetzungen
Betriebsumfeld
Architektur
des
IdP
Standardanbindungen
Eigene
Anbindung
ArpViewer
(uApprove)
von
SWITCH
Ausblick
2.2
Franck
Borel
–
[email protected]
2
Voraussetzung
•  Grundlage
ist
eine
funkRonierende
Benutzerverwaltung
– 
– 
– 
– 
Wiederholbare
Arbeitabläufe
Richtlinien
bei
der
Pflege
der
Benutzerdaten
Datenschutz
Benutzerverwaltung
muss
über
eine
Standardschni:stelle
ansprechbar
sein
•  Sonderfälle
beachten
–  Z.B.
Ein
Mitarbeiter
arbeitet
für
die
UB,
ist
aber
an
der
PH
angestellt
und
daher
nicht
im
LDAP‐Verzeichnis
des
Rechenzentrums
verzeichnet.
•  Datenbestand
–  Datenbereinigung
(DubleYen,
nicht
mehr
benöRgte
Accounts,
Sonderzugriffe
für
die
Administratoren)
–  Abbildung
der
AYribute
auf
den
Standard
eduPerson
VZG
•  Seman=k
–  Was
ist
ein
Angehöriger,
ein
Mitglied
einer
Hochschule?
(§9
LHG)
–  Welche
Rechte
hat
ein
Angehöriger,
ein
Mitglied
an
der
Hochschule?
Franck
Borel
–
[email protected]
3
Betriebsumfeld
JVM
Apache
Server
Tomcat
Server
Service
Host
Context
ajp
IdP
JAAS
mod_jk
Tomcat
Server
IdM
Service
Host
Context
VZG
ajp
Franck
Borel
–
[email protected]
IdP
JAAS
4
Betriebsumfeld
•  Pakeeilter,
Firewall,
DMZ
•  Apache
–  mod_jk,
mod_proxy
–  SSL
(ZerRfikate)
•  JVM
•  Tomcat
–  Filter,
Servlets,
Valves,
Load‐Balancing,
Monitoring,
neue
Versionen
aufspielen
(deployment)
•  IdP
–  Metadaten,
AuthenRfizierung,
AYribut‐Resolver
–  JAAS,
JDBC,
Spring
–  SSL
(ZerRfikate)
VZG
•  IdM
–  Typische
IdMs:
LDAP‐Server,
SQL‐Datenbanken,
Bibliothekssyteme
(PICA,
BiBer,
Libero),
AcRve‐Directory
Franck
Borel
–
[email protected]
5
Architektur
des
IdP
IdPSession‐Filter
Profile
AuthenRfizierung
Principal
Autorisierung
VZG
SchniYstelle
zum
IdM
IdenRty‐Management
Franck
Borel
–
[email protected]
6
KonfiguraRon
des
IdP
web.xml
IdPSession‐Filter
service.xml
Profile
Principal
handler.xml
Encoding
AuthenRfizierung
Filter
web.xml
VZG
Autorisierung
Resolver
aYribute‐
resolver.xml
aYribute‐
filter.xml
aYribute‐
resolver.xml
SchniYstelle
zum
IdM
IdenRty
Management
Franck
Borel
–
[email protected]
7
Standardanbindung
•  AuthenRfizierung
–  RemoteUser
–  UsernamePassword
–  IPAddress
–  PreviousSession
(Single‐Sign‐On)
VZG
•  Autorisierung
–  Konnektor
für
staRsche
Daten
–  Konnektor
zum
Speichern
von
persistenten
IDs
mit
Hilfe
einer
Datenbank
–  Konnektor
für
relaRonale
Datenbanken
–  LDAP‐Konnektor
Franck
Borel
–
[email protected]
8
StandardschniYstellen
zum
IdM
•  JAAS
–  LDAP
•  AciRve
Directory
–  Kerberos
•  JDBC
VZG
–  RelaRonale
Datenbanken
Franck
Borel
–
[email protected]
9
Standardanbindung
•  Was
kann
man
mit
der
Standardanbindung
alles
machen?
–  AuthenRfizierung
•  mit
Benutzername
und
Passwort
•  mit
der
IP‐Adresse
•  verschiedene
IdMs
mit
JAAS
abfragen.
Hierbei
gelten
die
Regeln
die
von
JAAS
vorgegeben
werden!
•  LDAP‐Server,
Kerberos,
AcRve‐Directory
und
relaRonale
Datenbanken
VZG
–  Autorisierung
•  LDAP‐Server,
AcRve‐Directory
und
relaRonale
Datenbanken
•  IdMs
in
Reihe
schalten
Franck
Borel
–
[email protected]
10
Standardanbindung
•  Was
geht
nicht?
–  AuthenRfizierung:
•  AuthNHandler
kombinieren:
z.B.
Benutzername/Passwort
+
IP‐Adresse
•  IdMs
in
Reihe
schalten
•  Andere
Parameter
neben
den
Benutzernamen
und
dem
Passwort
verwenden
(z.B.
IP‐Adresse,
OrganisaRon)
•  Beliebige
Protokolle
zur
Abfrage
des
IdM
verwenden
(z.B.
SOAP,
(X)SLNP)
•  Kombinierte
Abfragen:
Zusammentragen
von
InformaRonen
und
diese
auswerten.
•  X.509‐AuthenRfizierung
–  Autorisierung
VZG
•  Beliebige
Protokolle
zur
Abfrage
des
IdM
verwenden
(z.B.
SOAP,
(X)SLNP)
•  Kombinierte
Abfragen:
Zusammentragen
von
InformaRonen
und
diese
auswerten.
Franck
Borel
–
[email protected]
11
AuthenRfizierung
mit
JAAS
VZG
•  JAAS
ist
das
Akronym
für
Java
AuthenBcaBon
and
AutorizaBon
Service
•  Integriert
im
JDK
•  JAAS
orienRert
sich
an
den
Pluggable
AuthenBcaBon
Modules
(PAM)
•  Der
IdP
verwendet
JAAS
für
die
AuthenRfizierung
in
seiner
Standardanbindung
UsernamePassword
•  Die
Standardanbindung
bietet
eine
ferRge
SchniYstelle
zum
LDAP,
AcRve‐Directory
und
Kerberos
an.
•  Verschiedene
Konnektoren
können
konfiguriert
werden:
JAAS
fragt
der
Reihe
nach
die
an
den
Konnektoren
angehängten
IdMs
ab.
Der
erste
Treffer
wird
genommen
(!).
Franck
Borel
–
[email protected]
12
AuthenRfizierung
und
Autorisierung
mit
JAAS
VZG
•  Was
muss
beachtet
werden?
–  Der
IdP
unterstützt
nur
die
Weitergabe
der
Parameter
Benutzername
und
Passwort.
–  JAAS‐KonfiguraRon
wird
in
die
JAVA‐VM
geladen.
Deshalb
muss
bei
Änderungen
der
Servlet‐
Container
neu
gestartet
werden.
–  Logging
ist
nicht
möglich!
JAAS
ist
Teil
der
JVM.
–  Werden
verschiedene
Benutzerverwaltungen
abgefragt,
muss
garanRert
sein,
dass
die
Benutzernamen
eindeu=g
sind.
Franck
Borel
–
[email protected]
13
AuthenRfizierung
mit
JAAS
<servlet>
<servlet-name>UsernamePasswordAuthHandler</servlet-name>
<servletclass>
edu.internet2.middleware.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet
</servlet-class>
<init-param>
<param-name>jaasConfigName</param-name>
<param-value>ShibUserAuth</param-value>
</init-param>
</servlet>
web.xml
<LoginHandler xsi:type="UsernamePassword" jaasConfigurationLocation="file:///myopt/shibboleth-idp-2.1.0/conf/login.config">
<AuthenticationMethod>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</AuthenticationMethod>
</LoginHandler>
VZG
handler.xml
ShibUserAuth {
edu.vt.middleware.ldap.jaas.LdapLoginModule required
host=„ldap1.example.org ldap2.example.org ldap3.example.org“
base=“ou=people,dc=example,dc=org”
tls=“true”
userField=“uid”
}
Franck
Borel
–
[email protected]
login.config
14
Autorisierung
mit
LDAP
<resolver:DataConnector id="myLDAP" xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc”
ldapURL="ldap://ldap.example.org"
baseDN="ou=people,dc=example,dc=org"
principal="uid=myservice,ou=system”
principalCredential="myServicePassword">
<FilterTemplate>
<![CDATA[
(uid=$requestContext.principalName)]]>
</FilterTemplate>
VZG
</resolver:DataConnector>
Suchfilter
Franck
Borel
–
[email protected]
aYribute‐
resolver.xml
EindeuRge
ID
Adresse
des
LDAP
Nutzer
mit
welchem
der
Konnektor
an
den
LDAP
gebunden
wird
Passwort
für
die
Bindung
des
Konnektors
15
Autorisierung
mit
LDAP
•  Was
kann
man
noch
machen?
VZG
–  Definieren,
welche
AYribute
zurückgegeben
werden
sollen
–  LDAP
SSL/TSL
Franck
Borel
–
[email protected]
16
AuthenRfizierung
und
Autorisierung
mit
JDBC
•  Defini=on:
JDBC
ist
eine
DatenbankschniYstelle
der
Java‐Plaworm,
die
eine
einheitliche
SchniYstelle
zu
Datenbanken
verschiedener
Hersteller
bietet
und
speziell
auf
relaRonale
Datenbanken
ausgerichtet
ist.
•  Was
gibt
es
zu
beachten?
VZG
–  JDBC‐Bibliothek
liegt
beim
IdP
nicht
bei!
–  Wenn
Sie
nicht
selber
programmieren
wollen,
müssen
Sie
den
RemoteUser
AuthenBcaBon‐Handler
verwenden!
–  Die
AuthenRfizierung
geschieht
über
die
StandardauthenRfizierung
von
Tomcat
und
dem
JDBCRealm
(KonfiguraRon
wie
bei
Shibboleth
1.3)
–  Für
die
Autorisierung
gibt
es
einen
ferRgen
Konnektor.
Franck
Borel
–
[email protected]
17
AuthenRfizierung
mit
JDBC
VZG
<servlet-mapping>
<servlet-name>RemoteUserAuthHandler</servlet-name>
<url-pattern>/Authn/RemoteUser</url-pattern>
</servlet-mapping>
…
<security-constraint>
<display-name>Shibboleth IdP</display-name>
<web-resource-collection>
<web-resource-name>user authentication</web-resource-name>
<url-pattern>/Authn/RemoteUser</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint> <role-name>user</role-name> </auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
web.xml
<security-role>
<role-name>user</role-name>
</security-role> Franck
Borel
–
[email protected]
18
AuthenRfizierung
mit
JDBC
<LoginHandler xsi:type="RemoteUser">
<AuthenticationMethod>urn:oasis:names:tc:SAML:
2.0:ac:classes:unspecified
</AuthenticationMethod>
</LoginHandler>
context.xml
handler.xml
<Realm className="org.apache.catalina.realm.JDBCRealm” driverName="org.gjt.mm.mysql.Driver”
connectionURL="jdbc:mysql://localhost/authority?
user=dbuser&password=dbpass”
Name
des
userTable="users" Datenbankteibers,
der
im
userNameCol="user_name”
lib‐Verzeichnis
des
VZG
Tomcat
sein
muss.
userCredCol="user_pass”
userRoleTable="user_roles" roleNameCol="role_name”/>
URL
zur
Datenbank
Tabelle
mit
den
Nutzer;
Name
des
Nutzers;
Passwort
des
Nutzer,
Role
des
Nutzer
=
roleName
in
der
web.xml
Franck
Borel
–
[email protected]
19
Autorisierung
mit
JDBC
<resolver:DataConnector xsi:type="dc:RelationalDatabase"
xmlns="urn:mace:shibboleth:2.0:resolver:dc"
id="MyDatabase”>
<ApplicationManagedConnection jdbcDriver="org.hsqldb.jdbcDriver"
jdbcURL="jdbc:hsqldb:res:/data/database/shibdb"
jdbcUserName="sa" />
<QueryTemplate>
<![CDATA[
SELECT * FROM PEOPLE WHERE netid='${principal}'
]]>
</QueryTemplate>
</resolver:DataConnector>
VZG
AYribute‐
resolver.xml
Franck
Borel
–
[email protected]
20
Eigene
Anbindung
VZG
•  Wann
reichen
die
Standardanbindungen
nicht
aus?
–  Weitere
Parameter
notwendig,
z.B.
IP‐Adresse,
OrganisaRons‐Name
–  IdM
kommt
mit
den
Standardprotokollen
(SQL,
LDAP)
nicht
klar,
z.B.
SOAP‐SchniYstelle
–  AuthenRfizierungs‐
und
Autorisierungsanfragen
können
nicht
mit
einer
Abfrage
beantwortet
werden
(Beispiel
MyLogin)
–  Sie
wollen
die
Nutzer
über
JDBC
authenRfizieren
aber
auch
die
neuen
Features
verwenden.
Franck
Borel
–
[email protected]
21
Eigene
Anbindung
•  Was
tun,
wenn
keine
der
Standardanbindungen
ausreicht?
VZG
–  Eigene
Anbindung
für
die
AuthenRfizierung
schreiben:
•  Über
RemoteUser:
unterstützt
nicht
forced
re‐
authenBcaBon,
und
passiv
authenBcaBon)
•  Eigenen
AuthenRcaRonHandler
schreiben.
•  Eigene
JAAS‐AuthenRfzierung
schreiben
(nicht
klar,
ob
beliebige
Parameter
durchgereicht
werden
können!)
Franck
Borel
–
[email protected]
22
Eigene
Anbindung
•  Was
tun
mit
der
Autorisierung?
–  Bewährtes
Verfahren:
•  AuthenRfizierung
und
Autorisierung
gleichzeiRg
ausführen
und
das
Ergebnis
zwischenspeichern
(z.B.
Datenbank)
•  AYribute
werden
über
die
JDBC‐SchniYstelle
abgefragt
•  Eigenen
Resolver
schreiben:
Verlangt
gute
Kenntnisse
in
Spring
und
XML‐Schema!
VZG
•  Beispiele:
–  Flex
–  MyLogin
Franck
Borel
–
[email protected]
23
Flex
IdP
(1)
(2)
login.jsp
Flex
AuthNHandler
(3)
AA
Service‐
Provider
(6)
login.php
(4)
VZG
(5)
Resolver
db
Franck
Borel
–
[email protected]
IdM
24
MyLogin
Filter
(1)
preselecRon.jsp
login.jsp
AuthenRfizierung
(2)
IdP
login.php
RZ
SSO
(5)
KRZ
AA
(4)
(3)
SP
VZG
Resolver
db
UB
(2)
IP
AYribute
db
Franck
Borel
–
[email protected]
25
MyLogin
VZG
•  Demo
Franck
Borel
–
[email protected]
26
ArpViewer
(uApprove)
•  Wozu?
VZG
–  DatenschutzbesRmmungen:
Der
Nutzer
willigt
ein,
dass
besRmmte
Daten
an
den
Anbieter
weitergegeben
werden.
–  InformaRonen
sammeln:
Welche
AYribute
wurden
an
welchen
Anbieter
weitergegeben?
–  Transparenz:
Nutzer
weiß,
welche
AYribute
an
den
Anbieter
weitergegeben
werden.
•  FunkRonsweise:
Filter
(Pfad
/*)
+
Datenbank
oder
Datei.
•  Wird
für
2.2
aus
Datenschutzgründen
notwendig
sein.
Franck
Borel
–
[email protected]
27
ArpViewer
(uApprove)
Ablauf
Hat
der
Nutzer
die
Richtlinien
noch
nie
akzepRert?
Oder
wurden
die
Richtlinien
zwischenzeitlich
geändert
Nein
Jep!
Hat
der
Nutzer
eingewilligt,
dass
alle
AYribute
an
jeden
SP
weitergeben
werden
dürfen.
VZG
Nein
Weiter
(FilterChain)
Nein
Jep!
Jep!
Zeige
Richtlinien
an
Franck
Borel
–
[email protected]
Nein
Hat
der
Nutzer
eingewilligt,
dass
die
AYribute
an
diesen
SP
weitergeben
werden
dürfen.
Haben
sich
die
Regeln
in
der
ARP
geändert,
so
dass
AYribute
weitergegeben
werden,
dem
der
Nutzer
noch
nicht
zugesRmmt
hat?
Jep!
28
ArpViewer
(uApprove)
VZG
•  Demo
Franck
Borel
–
[email protected]
29
VZG
Ausblick
2.2
•  IP‐AuthenRfizierung
und
REMOTE_USER
soll
ebenfalls
über
JAAS
laufen
•  X.509‐AuthenRfizierung
•  Service‐Provider
kann
AYribute,
die
er
benöRgt
in
die
Metadaten
eintragen
lassen.
Ein
Filter
wie
ArpViewer
(uApprove)
soll
dafür
sorgen,
dass
der
Nutzer
die
Übertragung
der
AYribute
akzepReren
oder
verweigern
kann.
Franck
Borel
–
[email protected]
30
Finale
Danke,
dass
Sie
zugehört
haben!
VZG
Franck
Borel
‐
[email protected]
Anzutreffen
auf:
hYp://www.gbv.de
hYp://aar.ub.uni‐freiburg.de
hYp://www.aai.dfn.de
Franck
Borel
–
[email protected]
31
AuthenRfizierung
mit
JAAS
Context
e.i.m.shibboleth.idp.session.IdPSessionFilter
VZG
e.i.m.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet
Franck
Borel
–
[email protected]
32

Herunterladen