„ShibIdPX509LdapAuthentication” változatai közötti eltérés
(→Integráció a felhasználónév / jelszó bejelentkezéssel) |
(→Integráció a felhasználónév / jelszó bejelentkezéssel) |
||
99. sor: | 99. sor: | ||
=== Shibboleth IdP webalkalmazás módosítása === | === Shibboleth IdP webalkalmazás módosítása === | ||
+ | Az X.509/LDAP autentikációs modul tartalmaz egy olyan szervletet, ami képes a felhasználónév/jelszó és az X.509 autentikáció együtt történő futtatására. Első lépésként ezt a szervletet kell beállítani a <code>WEB-INF/web.xml</code> webalkalmazás konfigurációban: | ||
+ | |||
+ | <servlet> | ||
+ | <servlet-name>UsernamePasswordX509LoginServlet</servlet-name> | ||
+ | <servlet-class>hu.niif.middleware.shibboleth.auth.UsernamePasswordX509LoginServlet</servlet-class> | ||
+ | <init-param> | ||
+ | <param-name>loginPage</param-name> | ||
+ | <param-value>login_.jsp</param-value> | ||
+ | </init-param> | ||
+ | <load-on-startup>4</load-on-startup> | ||
+ | </servlet> | ||
+ | |||
+ | <servlet-mapping> | ||
+ | <servlet-name>UsernamePasswordX509LoginServlet</servlet-name> | ||
+ | <url-pattern>/Authn/UserPasswordX509</url-pattern> | ||
+ | </servlet-mapping> | ||
+ | |||
+ | Ez a konfiguráció hivatkozik a <code>login_.jsp</code> fájlra, ez egy módosított Shibboleth bejelentkeztető form, amiben két plusz gomb kapott helyet. Ezekkel a gombokkal a felhasználó kérheti, hogy erre az egy autentikációra szeretne klienstanúsítványt használni, vagy a munkamenetben mindig. Utóbbi esetben a bejelentkezést lekezelő szervlet létrehoz egy cookie-t a felhasználó gépén, ami ezt a preferenciát megőrzi a böngésző bezárásáig. | ||
+ | |||
+ | {{INFO_EN|Amennyiben a felhasználó egyszer bejelölte a tanúsítványos autentikációt a teljes munkamenetre, azt nem tudja kikapcsolni, csak a böngésző újraindításával.}} | ||
=== Shibboleth IdP konfiguráció === | === Shibboleth IdP konfiguráció === | ||
+ | Az IdP konfigurációjában meg kell adni ezt a hibrid autentikációs módot, mégpedig a következőképpen (<code>${SHIB_HOME}/conf/handler.xml</code>): | ||
+ | |||
+ | <LoginHandler xsi:type="UsernamePassword" | ||
+ | authenticationDuration="240" | ||
+ | jaasConfigurationLocation="file://PATH/TO/IDP/conf/login.config" | ||
+ | authenticationServletURL="/Authn/UserPasswordX509"> | ||
+ | <AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</AuthenticationMethod> | ||
+ | </LoginHandler> | ||
+ | |||
+ | Ez a konfigurációs részlet azt közli az IdP-vel, hogy az autentikációs modul nem specifikált autentikációs mód esetén működik. Ezt a módot alapértelmezetté tehetjük a <code>${SHIB_HOME}/conf/relying_party.xml</code> fájlban: | ||
+ | |||
+ | ... | ||
+ | <DefaultRelyingParty provider="..." | ||
+ | defaultSigningCredentialRef="..." | ||
+ | defaultAuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified"> | ||
+ | ... |
A lap 2009. június 8., 12:17-kori változata
Tartalomjegyzék
Shibboleth 2.x IdP X.509/LDAP autentikációs modul
Ezen az oldalon az NIIF által fejlesztett X.509 klienstanúsítvány alapú Shibboleth autentikációs modul leírása szerepel.
Követelmények
Az X.509/LDAP autentikációs modul a következő követelmények alapján került kifejlesztésre:
- a felhasználók saját maguk által aláírt tanúsítványokat is használhassanak autentikációra
- ne kelljen PKI infrastruktúrát üzemeltetni a klienstanúsítványok használatához
- a tanúsítványok központilag menedzseltek, egyszerűen visszavonhatók legyenek
Ezen követelmények kielégíthetők a címtárban tárolt klienstanúsítványokkal, ugyanis a címtárba csak egy felettes szerv képes beírni a tanúsítványt, ott minden bejelentkezéskor ellenőrzésre is kerül, ezért könnyen visszavonható.
A felhasználó tanúsítvány alapú azonosításához (identification) szükséges, hogy a tanúsítvány tartalmazza a felhasználónevet, mégpedig az UID
(subject) mezőben.
Telepítés
Az autentikációs modul letölthető az aai webről.
Apache beállítása
Amennyiben az alapértelmezett szervlet elérési utat választjuk (/Authn/X509
), a következő opciókat kell megadni az Apache webszerver konfigurációjában:
<Location /idp/Authn/X509> SSLVerifyClient optional_no_ca #nincs CA ellenorzes SSLOptions +ExportCertData #tanusitvany exportalasa </Location>
IdP webalkalmazás beállítása
A letöltött modulban található shibboleth-x509auth-verzio.jar
java osztálykönyvtárat be kell másolni a Shibboleth webalkalmazás WEB-INF/lib
könyvtárába, valamint a WEB-INF/web.xml
fájlban meg kell adni az autentikációs szervlet paramétereit:
<servlet> <servlet-name>X509LdapAuthHandler</servlet-name> <servlet-class>hu.niif.middleware.shibboleth.auth.X509LdapLoginServlet</servlet-class> <init-param> <param-name>jaasConfigName</param-name> <param-value>X509LdapAuth</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet> <servlet-mapping> <servlet-name>X509LdapAuthHandler</servlet-name> <url-pattern>/Authn/X509</url-pattern> </servlet-mapping>
Note
Az IdP webalkalmazás az ${SHIB_HOME}/war/idp.war fájlban található, ebben kell elvégezni a módosításokat, majd újratelepíteni az alkalmazást a webkonténerbe. |
IdP konfiguráció
Az IdP konfigurációjában két dolgot kell módosítani: a JAAS autentikációs modul login.config
konfigurációját, valamint a handler.xml
-ben az autentikációs módokat.
Az X.509/LDAP JAAS modul beállításához a ${SHIB_HOME}/conf/login.config
fájl tartalmához a következő sorokat adjuk hozzá (az LDAP elérési paramétereket értelem szerint kitöltve; az értékek általában a ShibUserPassAuth
JAAS konfigurációból átmásolhatóak):
X509LdapAuth { hu.niif.middleware.jaas.X509LdapLoginModule required host="" port="" base="" ssl="" userField="" serviceUser="" serviceCredential=""; };
Note
Figyelni kell arra, hogy az itt megadott serviceUser olvasási joggal rendelkezzen a userCertificate LDAP attribútumra. |
A JAAS modul beállítása után a ${SHIB_HOME}/conf/handler.xml
fájlban meg kell adnunk az új autentikációs modulunkat, a következőképpen:
<LoginHandler xsi:type="RemoteUser" protectedServletPath="/Authn/X509" > <AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:X509</AuthenticationMethod> </LoginHandler>
Ha továbbra is alapértelmezetten felhasználónév/jelszó autentikációt szeretnénk használni, akkor a Shibboleth IdP-ben be kell állítani az alapértelmezett hitelesítési módot, a ${SHIB_HOME}/conf/relying_party.xml
fájlban:
... <DefaultRelyingParty provider="foo" defaultSigningCredentialRef="foo" defaultAuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"> ...
Shibboleth SP beállítása
Az egyes SP-k eldönthetik hogy ők kérik-e az X.509 autentikációt, ezt az authnContextClassRef
SP opcióval lehet jelezni a Shibboleth SP felé.
Ez a kérés azonban nem teljesen megbízható, ezért érdemes az IdP oldalon konfigurálni hogy egy adott SP kérése alapján az X.509 autentikációs módot használjuk (a ${SHIB_HOME}/conf/relying-party.xml
fájlban):
... <RelyingParty id="x509-protected-sp-entityid" provider="our-idp-entityid" defaultAuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:X509" /> ...
Felépítés
JAAS autentikációs modul
X.509 autentikációs szervlet
Integráció a felhasználónév / jelszó bejelentkezéssel
A fent leírt telepítési módszer nem biztosítja azt a lehetőséget, hogy egy felhasználó eldönthesse hogy ő jelszóval vagy klienstanúsítvánnyal autentikál. Amennyiben szeretnénk ezt a választási lehetőséget megadni abban az esetben, amikor az SP nem jelez általa preferált autentikációs módot, az alábbi plusz konfiguráció segítségével ezt megtehetjük.
Shibboleth IdP webalkalmazás módosítása
Az X.509/LDAP autentikációs modul tartalmaz egy olyan szervletet, ami képes a felhasználónév/jelszó és az X.509 autentikáció együtt történő futtatására. Első lépésként ezt a szervletet kell beállítani a WEB-INF/web.xml
webalkalmazás konfigurációban:
<servlet> <servlet-name>UsernamePasswordX509LoginServlet</servlet-name> <servlet-class>hu.niif.middleware.shibboleth.auth.UsernamePasswordX509LoginServlet</servlet-class> <init-param> <param-name>loginPage</param-name> <param-value>login_.jsp</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet> <servlet-mapping> <servlet-name>UsernamePasswordX509LoginServlet</servlet-name> <url-pattern>/Authn/UserPasswordX509</url-pattern> </servlet-mapping>
Ez a konfiguráció hivatkozik a login_.jsp
fájlra, ez egy módosított Shibboleth bejelentkeztető form, amiben két plusz gomb kapott helyet. Ezekkel a gombokkal a felhasználó kérheti, hogy erre az egy autentikációra szeretne klienstanúsítványt használni, vagy a munkamenetben mindig. Utóbbi esetben a bejelentkezést lekezelő szervlet létrehoz egy cookie-t a felhasználó gépén, ami ezt a preferenciát megőrzi a böngésző bezárásáig.
Note
Amennyiben a felhasználó egyszer bejelölte a tanúsítványos autentikációt a teljes munkamenetre, azt nem tudja kikapcsolni, csak a böngésző újraindításával. |
Shibboleth IdP konfiguráció
Az IdP konfigurációjában meg kell adni ezt a hibrid autentikációs módot, mégpedig a következőképpen (${SHIB_HOME}/conf/handler.xml
):
<LoginHandler xsi:type="UsernamePassword" authenticationDuration="240" jaasConfigurationLocation="file://PATH/TO/IDP/conf/login.config" authenticationServletURL="/Authn/UserPasswordX509"> <AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</AuthenticationMethod> </LoginHandler>
Ez a konfigurációs részlet azt közli az IdP-vel, hogy az autentikációs modul nem specifikált autentikációs mód esetén működik. Ezt a módot alapértelmezetté tehetjük a ${SHIB_HOME}/conf/relying_party.xml
fájlban:
... <DefaultRelyingParty provider="..." defaultSigningCredentialRef="..." defaultAuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified"> ...