Discussion:
Appliquer une Authentification Kerberos sur mes WebServices, de manière non intrusive ?
Sylvain RICHET
2011-08-30 14:14:41 UTC
Permalink
Bonjour à Tous,

*Ma problèmatique :*
Appliquer une Authentification Kerberos sur ma 10aine de Web Services
publiés, de manière non intrusive au niveau du code.

*Mon environnement Serveur*
- JONAS 5.1.5
- stack WS : JAX-WS, avec une implémentation CXF sous-jacente
- mes WS sont développés sous forme d'EJB

*Les questions que je me pose :*
- Puis-je faire cela de manière non intrusive, c.a.d *sans avoir à ajouter
de code *dans mes WS tant au niveau serveur, qu'au niveau client ?
- Si oui, comment ? Avec WS-Security ? Avec WS-Policy ? En enrichissant la
WSDL de mes WS ?
- Qui joue le rôle de SPN Kerberos ? Comment le déclarer ?

*Bien entendu, j'ai pas mal browsé. Peut-être mal ?

*1) Il semblerait que je puisse configurer CXF pour faire du Kerberos,
Ici<http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport%28includingSSLsupport%29-SpnegoAuthentication%28Kerberos%29>
(... mais rien de bien détaillé).

2) Ici <http://cxf.apache.org/docs/configuration.html>, il y a cette petite
*In some cases it also possible to achieve the same end by extending your
wsdl contract: you can add CXF specific extension elements to the wsdl:port
element and in that way fine tune the behaviour of the specified transport
*
Aurais-je donc la possibilité de poser de l'Auth Kerberos rien qu'en
enrichissant mes WSDL ?
C'est sans doute en rapport avec :
- WS-Security / WS-Policy
- WS Kerberos Token Profile

3) Apache CXF s'appuie sur WSS4J comme implémentation de WS-Security.
CXF s'appuie sur Spring pour tout ce qui est configuration, et probablement
celle lié à la sécurité.
Mais ici <http://www.jroller.com/gmazza/entry/cxf_usernametoken_profile>, il
*CXF provides two main options for adding UsernameToken security headers,
both of which will be covered below: standard WSS4J interceptors and
WS-SecurityPolicy.
The latter, which relies on a WS-Policy element defined within the WSDL,
offers a more automated approach to using security and is the preferred
approach if you have this element defined.
Use WSS4J interceptors when security is not defined in the WSDL or you need
more customized control of the security header construction.
*
Il semblerait donc qu'on ne soit pas obligé d'utiliser WSS4J...


*Bref, vous l'aurez compris : *
- je suis un peu (beaucoup) paumé dans tout ça, glurps
- je recherche un retour d'expérience


Je connais bien kerberos *en dehors du contexte des WS*.
Je veux dire par là que je sais implémenter/administrer une Authentification
Kerberos sur, par ex., une webapp tournant sous Apache
(avec un KDC sous Linux ou sous Windows), déclarer le SPN, récupérer le
KEYTAB, etc. etc....ok.

En revanche, je ne connais pas du tout WS-Security, WS-Policy, ...
C'est précisément là que ça pêche !


Merci d'avance à tous ceux qui prendront le temps de me répondre.
:-)
Sylvain RICHET
2011-08-30 14:24:44 UTC
Permalink
Bonjour à Tous,

*Ma problèmatique :*
Appliquer une Authentification Kerberos sur ma 10aine de Web Services
publiés, de manière non intrusive au niveau du code.

*Mon environnement Serveur*
- JONAS 5.1.5
- stack WS : JAX-WS, avec une implémentation CXF sous-jacente
- mes WS sont développés sous forme d'EJB

*Les questions que je me pose :*
- Puis-je faire cela de manière non intrusive, c.a.d *sans avoir à ajouter
de code *dans mes WS tant au niveau serveur, qu'au niveau client ?
- Si oui, comment ? Avec WS-Security ? Avec WS-Policy ? En enrichissant la
WSDL de mes WS ?
- Qui joue le rôle de SPN Kerberos ? Comment le déclarer ?

*Bien entendu, j'ai pas mal browsé. Peut-être mal ?

*1) Il semblerait que je puisse configurer CXF pour faire du Kerberos,
Ici<http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport%28includingSSLsupport%29-SpnegoAuthentication%28Kerberos%29>
(... mais rien de bien détaillé).

2) Ici <http://cxf.apache.org/docs/configuration.html>, il y a cette petite
*In some cases it also possible to achieve the same end by extending your
wsdl contract: you can add CXF specific extension elements to the wsdl:port
element and in that way fine tune the behaviour of the specified transport
*
Aurais-je donc la possibilité de poser de l'Auth Kerberos rien qu'en
enrichissant mes WSDL ?
C'est sans doute en rapport avec :
- WS-Security / WS-Policy
- WS Kerberos Token Profile

3) Apache CXF s'appuie sur WSS4J comme implémentation de WS-Security.
CXF s'appuie sur Spring pour tout ce qui est configuration, et probablement
celle lié à la sécurité.
Mais ici <http://www.jroller.com/gmazza/entry/cxf_usernametoken_profile>, il
*CXF provides two main options for adding UsernameToken security headers,
both of which will be covered below: standard WSS4J interceptors and
WS-SecurityPolicy.
The latter, which relies on a WS-Policy element defined within the WSDL,
offers a more automated approach to using security and is the preferred
approach if you have this element defined.
Use WSS4J interceptors when security is not defined in the WSDL or you need
more customized control of the security header construction.
*
Il semblerait donc qu'on ne soit pas obligé d'utiliser WSS4J...


*Bref, vous l'aurez compris : *
- je suis un peu (beaucoup) paumé dans tout ça, glurps
- je recherche un retour d'expérience


Je connais bien kerberos *en dehors du contexte des WS*.
Je veux dire par là que je sais implémenter/administrer une Authentification
Kerberos sur, par ex., une webapp tournant sous Apache
(avec un KDC sous Linux ou sous Windows), déclarer le SPN, récupérer le
KEYTAB, etc. etc....ok.

En revanche, je ne connais pas du tout WS-Security, WS-Policy, ...
C'est précisément là que ça pêche !


Merci d'avance à tous ceux qui prendront le temps de me répondre.
:-)
Laurent HUET
2011-08-30 16:27:24 UTC
Permalink
Bonjour,
Post by Sylvain RICHET
Bonjour à Tous,
/Ma problèmatique :/
Appliquer une Authentification Kerberos sur ma 10aine de Web Services
publiés, de manière non intrusive au niveau du code.
/Mon environnement Serveur/
- JONAS 5.1.5
- stack WS : JAX-WS, avec une implémentation CXF sous-jacente
- mes WS sont développés sous forme d'EJB
/Les questions que je me pose :/
- Puis-je faire cela de manière non intrusive, c.a.d /sans avoir à
ajouter de code /dans mes WS tant au niveau serveur, qu'au niveau client ?
Perso, je dirais oui tant que l'authentification se fait au niveau de la
couche transport (HTTP ?).
Coté serveur, cela doit ressembler à ce que tu as déja fait (Apache en
reverse proxy devant Jonas, configuration Jonas ?).
Coté client, peut-être cela :
http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport%28includingSSLsupport%29-SpnegoAuthentication%28Kerberos%29
Post by Sylvain RICHET
- Si oui, comment ? Avec WS-Security ? Avec WS-Policy ? En
enrichissant la WSDL de mes WS ?
Faire du WS-*, c'est beaucoup plus lourd que de rester sur de
l'authentification sur HTTP ...
Dans ce cas, l'authentification ne se fait plus au niveau de la couche
transport mais au niveau du XML.
Les intercepteurs CXF WSS4J permettent de modifier le XML pour ajouter
dans le header SOAP les éléments liés à la sécurité.

Bon courage en tout cas !

Laurent
Sylvain RICHET
2011-08-31 07:34:39 UTC
Permalink
Merci Laurent pour ce focus sur la distinction niveau HTTP / Niveau XML.

Quant au lien CXF/SPNEGO, je l'avais déjà parcouru, en ayant un peu de mal à
le re-situer, et donc à le comprendre.

:-)
Post by Laurent HUET
Bonjour,
Bonjour à Tous,
*Ma problèmatique :*
Appliquer une Authentification Kerberos sur ma 10aine de Web Services
publiés, de manière non intrusive au niveau du code.
*Mon environnement Serveur*
- JONAS 5.1.5
- stack WS : JAX-WS, avec une implémentation CXF sous-jacente
- mes WS sont développés sous forme d'EJB
*Les questions que je me pose :*
- Puis-je faire cela de manière non intrusive, c.a.d *sans avoir à ajouter
de code *dans mes WS tant au niveau serveur, qu'au niveau client ?
Perso, je dirais oui tant que l'authentification se fait au niveau de la
couche transport (HTTP ?).
Coté serveur, cela doit ressembler à ce que tu as déja fait (Apache en
reverse proxy devant Jonas, configuration Jonas ?).
http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport%28includingSSLsupport%29-SpnegoAuthentication%28Kerberos%29
- Si oui, comment ? Avec WS-Security ? Avec WS-Policy ? En enrichissant
la WSDL de mes WS ?
Faire du WS-*, c'est beaucoup plus lourd que de rester sur de
l'authentification sur HTTP ...
Dans ce cas, l'authentification ne se fait plus au niveau de la couche
transport mais au niveau du XML.
Les intercepteurs CXF WSS4J permettent de modifier le XML pour ajouter dans
le header SOAP les éléments liés à la sécurité.
Bon courage en tout cas !
Laurent
Olivier Lamy
2011-08-30 14:45:25 UTC
Permalink
Hello,
Perso pour implémenter une problématique de sécurité avec cxf j'ai
plus utilisé des interceptors cxf.
Bon dans un contexte jax-rs (REST) et en ajoutant une annotation
maison (petite intrusion dans le code) contenant les paramêtres
d'authz et karma nécessaires sur la méthode appelée. (voir les sources
redback [2] doc [3])

HTH,
--
Olivier Lamy
Talend : http://talend.com
http://twitter.com/olamy | http://linkedin.com/in/olamy

[1] http://cxf.apache.org/docs/interceptors.html
[2] http://svn.codehaus.org/redback/redback/trunk/redback-rest/
[3] http://redback.codehaus.org/integration/rest.html

PS: si maintenant tu cherches à avoir plus de détails sur WS-Security,
WS-Policy, ... Je peux te mettre en relation avec Colm O Heigeartaigh
qui travaille dans la même boite que moi et qui s'occupe de
l'implémentation de tout ce qui est sécurité dans cxf.
Post by Sylvain RICHET
Bonjour à Tous,
Appliquer une Authentification Kerberos sur ma 10aine de Web Services
publiés, de manière non intrusive au niveau du code.
Mon environnement Serveur
- JONAS 5.1.5
- stack WS : JAX-WS, avec une implémentation CXF sous-jacente
- mes WS sont développés sous forme d'EJB
- Puis-je faire cela de manière non intrusive, c.a.d sans avoir à ajouter de
code dans mes WS tant au niveau serveur, qu'au niveau client ?
- Si oui, comment ? Avec WS-Security ? Avec WS-Policy ? En enrichissant la
WSDL de mes WS ?
- Qui joue le rôle de SPN Kerberos ? Comment le déclarer ?
Bien entendu, j'ai pas mal browsé. Peut-être mal ?
1) Il semblerait que je puisse configurer CXF pour faire du Kerberos, Ici
    (... mais rien de bien détaillé).
In some cases it also possible to achieve the same end by extending your
wsdl contract: you can add CXF specific extension elements to the wsdl:port
element and in that way fine tune the behaviour of the specified transport
Aurais-je donc la possibilité de poser de l'Auth Kerberos rien qu'en
enrichissant mes WSDL ?
- WS-Security / WS-Policy
- WS Kerberos Token Profile
3) Apache CXF s'appuie sur WSS4J comme implémentation de WS-Security.
CXF s'appuie sur Spring pour tout ce qui est configuration, et probablement
celle lié à la sécurité.
CXF provides two main options for adding UsernameToken security headers,
both of which will be covered below: standard WSS4J interceptors and
WS-SecurityPolicy.
The latter, which relies on a WS-Policy element defined within the WSDL,
offers a more automated approach to using security and is the preferred
approach if you have this element defined.
Use WSS4J interceptors when security is not defined in the WSDL or you
need more customized control of the security header construction.
Il semblerait donc qu'on ne soit pas obligé d'utiliser WSS4J...
- je suis un peu (beaucoup) paumé dans tout ça, glurps
- je recherche un retour d'expérience
Je connais bien kerberos en dehors du contexte des WS.
Je veux dire par là que je sais implémenter/administrer une Authentification
Kerberos sur, par ex., une webapp tournant sous Apache
(avec un KDC sous Linux ou sous Windows), déclarer le SPN, récupérer le
KEYTAB, etc. etc....ok.
En revanche, je ne connais pas du tout WS-Security, WS-Policy, ...
C'est précisément là que ça pêche !
Merci d'avance à tous ceux qui prendront le temps de me répondre.
:-)
Continuer la lecture sur narkive:
Loading...