SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Customiser	le	connecteur	SAML	
de	Liferay	
Quang	Tu	LE
Quang	Tu	LE	
Consultant	Technique	indépendant	
•  Java/Web	depuis	2000	
•  Liferay	depuis	la	version	4.2.2	(2006)	
		
@qtle linkedin.com/in/quangtule
Sommaire	
•  Contexte	
•  Besoin	
•  Solution	
•  Mise	en	place
Contexte	
•  Portail	intranet	du	Groupe	
– L’authentification	LDAP	
•  Application	mobile	
– Oauth2	(Password	Grant)	
– Code	pin	personnel,	reconnaissance	empreinte
Besoin	
•  se	connecter	de	façon	
«Social	Connect»	via	la	
fédération	d'annuaire		
•  fédération	d'annuaire		
–  WebSSO		
–  SAML	
–  Proxy	IDP
Solution	
•  Liferay	Connector	to	SAML	
– https://web.liferay.com/marketplace/-/mp/
application/15188711	
– Liferay	est	le	Service	Provider	(SP)	
– Fédération	d'annuaire	est		Identity	Provider	
Federation	(IDP	Proxy)	
– Customiser	le	comportement	du	connecteur	
SAML
Cinématique	d’authentification	
SamlSpSsoFilter
SamlSpSsoFilter	
•  intercepte	/c/portal/
login
pour	déclencher	login	SSO	
protected	void	doProcessFilter(	
HttpServletRequest	request,	HttpServletResponse	
response,	
FilterChain	filterChain)	
throws	Exception	{	
	
String	requestPath	=	
_samlHttpRequestUtil.getRequestPath(request);	
	
…	
else	if	(requestPath.equals("/c/portal/login"))	{	
login(request,	response);	
}	
else	if	(requestPath.equals("/c/portal/logout")	&&	
	
_singleLogoutProfile.isSingleLogoutSupported(request)
)	{
Solution	
•  			
/c/portal/loginGardian
SamlSpSsoFilter	customisé	
•  Customiser	afin	de	
intercepter	
/c/portal/loginGardian
au	lieu	de	
/c/portal/login
protected	void	doProcessFilter(	
HttpServletRequest	request,	HttpServletResponse	response,	
FilterChain	filterChain)	
throws	Exception	{	
	
String	requestPath	=	
_samlHttpRequestUtil.getRequestPath(request);	
	
…	
else	if	(requestPath.equals("/c/portal/loginGardian"))	{	
login(request,	response);	
}	
else	if	(requestPath.equals("/c/portal/logout")	&&	
	_singleLogoutProfile.isSingleLogoutSupported(request))	{
SamlSpSsoFilter	customisé	v2	
•  Configurable	via	une	configuration	OSGI	
@Component(
configurationPid =
"com.edf.liferay.saml.runtime.configuration.VeolSSOConfiguration",
configurationPolicy = ConfigurationPolicy.OPTIONAL,
immediate = true,
property = {
"after-filter=Virtual Host Filter", "dispatcher=FORWARD",
"dispatcher=REQUEST",
"init-param.url-regex-ignore-pattern=^/html/.+.(css|gif|html|ico|jpg|js|
png)(?.*)?$",
"servlet-context-name=", "servlet-filter-name=SSO SAML SP Filter",
"url-pattern=/*"
},
service = Filter.class
)
public class SamlSpSsoFilter extends BaseSamlPortalFilter {
Mise	en	place	
•  faire	un	override	partiel	du	fichier	lpkg	de	
Liferay	
•  https://portal.liferay.dev/docs/7-0/tutorials/-/
knowledge_base/t/overriding-lpkg-files	
•  Reconstruire	le	jar	com.liferay.saml.impl.jar	
présent	dans	le	lpkg,		
•  Le	déposer	dans	osgi/marketplace/
override
•  et	Liferay	va	le	substituer	au	démarrage
Comment	reconstruire	le	jar?	
•  Customiser	les	classes	concernées	
•  Customiser	le	composant	OSGI	(xml)	
•  Packager	flat	jar	à	partir	du	jar	original	
– META-INF/MANIFEST.MF	
– OSGI-INF/.xml
Mise	en	place	
Extrait depuis fichier lpkg
Customisés
Build.gradle
SamlSpSsoFilter.xml
SamlSpSsoFilter.xml
VeolSSOConfiguration.xml
VeolSSOConfiguration.xml
Conclusion	
•  Surcharger	1	jar	dans	son	package	lpkg	est	
possible!	
•  Chacun	peut	faire	à	sa	sauce	J		
•  Avec	modération.
Merci!	
	
	
		 																														Question?
SSO	avec	application	mobile	
SP	
IDP	
/c/portal/oauth2/gardianidp
veol://callback?tokenId=xxx
webview
3.Authentifier
1.Demande une ressource
2. AuthnRequest
4.Reponse
5.Redirect vers
la ressource
SSO	avec	application	mobile	
OauthProvider	
GRANT_TYPE=IMPLICIT
tokenId=xxx
AccessToken
RefreshToken

Weitere ähnliche Inhalte

Ähnlich wie Customiser le connecteur  SAML de Liferay

Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...LINAGORA
 
Lagom, reactive framework(chtijug2016)
Lagom, reactive framework(chtijug2016) Lagom, reactive framework(chtijug2016)
Lagom, reactive framework(chtijug2016) Fabrice Sznajderman
 
Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressourceAntoine Pouch
 
Nantes GTUG - Restlet & AppEngine
Nantes GTUG - Restlet & AppEngineNantes GTUG - Restlet & AppEngine
Nantes GTUG - Restlet & AppEngineGDG Nantes
 
Soirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB PetalsSoirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB PetalsNormandy JUG
 
Fédération des identités avec FederID
Fédération des identités avec FederIDFédération des identités avec FederID
Fédération des identités avec FederIDLINAGORA
 
Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2OW2
 
Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2Catherine Nuel
 
CAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesCAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesClément OUDOT
 
Presentation mug-mule studio
Presentation mug-mule studioPresentation mug-mule studio
Presentation mug-mule studioFastConnect
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasMicrosoft
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
2010 presentation ippon_corp
2010 presentation ippon_corp2010 presentation ippon_corp
2010 presentation ippon_corpGeoffray Gruel
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 
LemonLDAP::NG et le support SAML2
LemonLDAP::NG et le support SAML2LemonLDAP::NG et le support SAML2
LemonLDAP::NG et le support SAML2Clément OUDOT
 
RMLL 2009 - Présentation du WebSSO LemonLDAP::NG
RMLL 2009 - Présentation du WebSSO LemonLDAP::NGRMLL 2009 - Présentation du WebSSO LemonLDAP::NG
RMLL 2009 - Présentation du WebSSO LemonLDAP::NGClément OUDOT
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 

Ähnlich wie Customiser le connecteur  SAML de Liferay (20)

Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
Séminaire septembre 2010 - LinID et LinPKI, Les solutions Open Source d'ident...
 
Lagom, reactive framework(chtijug2016)
Lagom, reactive framework(chtijug2016) Lagom, reactive framework(chtijug2016)
Lagom, reactive framework(chtijug2016)
 
Lagom, reactive framework
Lagom, reactive frameworkLagom, reactive framework
Lagom, reactive framework
 
Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressource
 
Nantes GTUG - Restlet & AppEngine
Nantes GTUG - Restlet & AppEngineNantes GTUG - Restlet & AppEngine
Nantes GTUG - Restlet & AppEngine
 
Soirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB PetalsSoirée SOA - 2010-06-15 - Présentation de l'ESB Petals
Soirée SOA - 2010-06-15 - Présentation de l'ESB Petals
 
Fédération des identités avec FederID
Fédération des identités avec FederIDFédération des identités avec FederID
Fédération des identités avec FederID
 
Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2
 
Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2Jonas5 Serveur Applications Solutions Linux Ow2
Jonas5 Serveur Applications Solutions Linux Ow2
 
CAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesCAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemples
 
Presentation mug-mule studio
Presentation mug-mule studioPresentation mug-mule studio
Presentation mug-mule studio
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
2010 presentation ippon_corp
2010 presentation ippon_corp2010 presentation ippon_corp
2010 presentation ippon_corp
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
LemonLDAP::NG et le support SAML2
LemonLDAP::NG et le support SAML2LemonLDAP::NG et le support SAML2
LemonLDAP::NG et le support SAML2
 
RMLL 2009 - Présentation du WebSSO LemonLDAP::NG
RMLL 2009 - Présentation du WebSSO LemonLDAP::NGRMLL 2009 - Présentation du WebSSO LemonLDAP::NG
RMLL 2009 - Présentation du WebSSO LemonLDAP::NG
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
Sophia conf2013 cg
Sophia conf2013 cgSophia conf2013 cg
Sophia conf2013 cg
 
#2 Architecture OSGi
#2 Architecture OSGi#2 Architecture OSGi
#2 Architecture OSGi
 

Customiser le connecteur  SAML de Liferay