Dans cet article, je vais vous expliquer comment nous sommes passĂ©s de l'autorisation NTLM Ă l'autorisation Kerberos pour les applications sur Oracle Weblogic Server, simplifiant ainsi la connexion des utilisateurs en supprimant la nĂ©cessitĂ© de saisir un mot de passe. Tous les utilisateurs, ainsi que le serveur d'applications, sont dans le mĂȘme domaine; l'autorisation de domaine pour les applications du serveur Weblogic a Ă©galement Ă©tĂ© prĂ©cĂ©demment configurĂ©e. Toutes les configurations ont Ă©tĂ© vĂ©rifiĂ©es sur WLS 12.1.2.
Tout d'abord, un peu de théorie, trÚs briÚvement pour une meilleure compréhension du processus d'interaction.
Qu'est-ce que l'authentification unique?
La connexion unique (SSO) est un mécanisme par lequel une action d'authentification d'un seul utilisateur permet à un utilisateur d'accéder à tous les ordinateurs et systÚmes auxquels il est autorisé à accéder sans avoir à saisir plusieurs mots de passe. Les informations d'identification précédemment saisies seront réutilisées de maniÚre transparente par divers composants.
Qu'est-ce que Kerberos?
Kerberos est un protocole d'authentification réseau qui a été développé pour la premiÚre fois par le Massachusetts Institute of Technology. Kerberos est une méthode sécurisée d'authentification d'une demande de service sur le réseau et est conçue pour fournir une authentification forte pour les applications client-serveur utilisant la cryptographie avec une clé secrÚte.
Qu'est-ce que SPNEGO?
SPNEGO est un moteur de nĂ©gociation GSSAPI simple et sĂ©curisĂ©. Il s'agit d'une interface normalisĂ©e pour l'authentification (par exemple JNDI pour les recherches dans l'annuaire), l'implĂ©mentation par dĂ©faut de SPNEGO sur Windows est Kerberos (par exemple LDAP pour JNDI). La terminologie Microsoft utilise «Authentification Windows intĂ©grĂ©e» comme synonyme de SPNEGO. Dans l'authentification intĂ©grĂ©e Windows, les protocoles Kerberos ou NTLM peuvent ĂȘtre nĂ©gociĂ©s.
Lorsqu'un serveur reçoit une demande d'Internet Explorer (IE 6.1 ou supérieur), il peut demander au navigateur d'utiliser le protocole SPNEGO pour l'authentification. Ce protocole effectue l'authentification Kerberos sur HTTP et permet à Internet Explorer de déléguer des pouvoirs délégués afin que l'application Web puisse se connecter aux services Kerberized ultérieurs au nom de l'utilisateur.
Lorsque le serveur HTTP souhaite exécuter SPNEGO, il renvoie une réponse «401 Unauthorized» à la demande HTTP avec le titre «WWW-Authorization: Negotiate». Internet Explorer contacte ensuite le Ticket Service (TGS) pour obtenir un ticket. Il choisit le nom spécial du participant au service pour demander un ticket, par exemple:
HTTP/webserver@<DOMAIN NAME>
Le ticket retournĂ© est ensuite enveloppĂ© dans un jeton SPNEGO, qui est codĂ© et renvoyĂ© au serveur Ă l'aide d'une requĂȘte HTTP. Le jeton se dĂ©roule et le ticket s'authentifie.
Avantages de Kerberos
L'utilisation de Kerberos permet aux administrateurs de désactiver l'authentification NTLM dÚs que tous les clients du réseau peuvent authentifier Kerberos. Kerberos est plus flexible et efficace que NTLM et plus sécurisé.
Configurer l'authentification unique basée sur Kerberos dans un environnement de serveur d'applications Weblogic
Schéma d'interaction:

- Lorsqu'un utilisateur enregistrĂ© (PC) demande une ressource Ă Oracle WebLogic Server (WLS), il envoie la requĂȘte HTTP GET d'origine.
- Le serveur Oracle WebLogic Server (WLS) exécutant le code de jeton SPNEGO nécessite une authentification et émet une réponse 401 Access Denied, WWWAuthenticate: Negotiate.
- Un client (navigateur sur PC) demande un ticket de session Ă TGS / KDC (AD).
- TGS / KDC (AD) fournit au client le ticket Kerberos nécessaire (à condition que le client soit autorisé), enveloppé dans le jeton SPNEGO.
- Le client renvoie la requĂȘte HTTP GET + NĂ©gociez le jeton SPNEGO dans l'en-tĂȘte d'autorisation: NĂ©gociez base64 (jeton).
- La vĂ©rification de l'authentification Web SPNEGO sur le serveur Weblogic affiche un en-tĂȘte HTTP avec le jeton SPNEGO. SPNEGO vĂ©rifie le jeton SPNEGO et obtient les informations utilisateur.
- Une fois que Weblogic a reçu les informations utilisateur, il valide l'utilisateur dans Microsoft Active Directory / KDC. Une fois le processus d'authentification terminé, Weblogic exécute le code Java correspondant (servlets, JSP, EJB, etc.) et vérifie l'autorisation.
- Le code du gestionnaire de jeton Oracle WebLogic Server accepte et traite le jeton via l'API GSS, authentifie l'utilisateur et répond avec l'URL demandée.
Passons maintenant Ă la pratique
1. Nous effectuons les réglages cÎté serveur du domaine du contrÎleur sur lequel les services TGS / KDC sont configurés.
- Créer un utilisateur dans Active Directory (le mot de passe ne doit pas expirer)
- Définissez le SPN approprié pour le nom du serveur WLS
Effectuer la vérification établie par SPN
setspn âl HTTP_weblogic
devrait renvoyer deux enregistrements
Générer un fichier Keytab
ktpass -princ HTTP_weblogic@mycompany.com -pass PASSWORD -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -kvno 0 -out c:\krb5.keytab
Copiez ce fichier sur le serveur WLS
2. Configuration du serveur WLS
- Vous devez crĂ©er le fichier krb5.ini dans le dossier% windir%: C: \ Windows. Ce fichier contient des paramĂštres de configuration pour les clients, par exemple, oĂč se trouve le KDC. Le fichier ressemblera Ă ceci:
[libdefaults] default_realm = <DOMAIN NAME> ticket_lifetime = 600 [realms] <DOMAIN NAME> = { kdc = <HOSTNAME OF AD/KDC> admin_server = <HOSTNAME OF AD/KDC> default_domain = <DOMAIN NAME> } [domain_realm] . <DOMAIN NAME>= <DOMAIN NAME> [appdefaults] autologin = true forward = true forwardable = true encrypt = true
- Créez le fichier de configuration krb5Login.conf:
com.sun.security.jgss.krb5.initiate { com.sun.security.auth.module.Krb5LoginModule required principal="user@MYCOMPANY.COM" useKeyTab=true keyTab=krb5.keytab storeKey=true debug=true; }; com.sun.security.jgss.krb5.accept { com.sun.security.auth.module.Krb5LoginModule required principal="user@MYCOMPANY.COM" useKeyTab=true keyTab=krb5.keytab storeKey=true debug=true; };
Veuillez noter que le nom de domaine doit ĂȘtre en
majuscule . Pour les versions antérieures, utilisez com.sun.security.jgss.initiate dans la configuration précédente au lieu de com.sun.security.jgss.krb5.initiate.
- Les fichiers krb5Login.conf et krb5.keytab doivent ĂȘtre situĂ©s Ă la racine du rĂ©pertoire de domaine du serveur WLS.
- Modification du fichier setDomainEnv
Trouvez l'ensemble de lignes JAVA_OPTIONS =% JAVA_OPTIONS% et ajoutez Ă la fin
-Djava.security.auth.login.config=< >\krb5Login.conf -Djavax.security.auth.useSubjectCredsOnly=false -Dweblogic.security.enableNegotiate=true
- Dans ce cas, nous n'envisageons pas de configurer l'autorisation WLS dans AD, nous pensons que cela fonctionne, si vous avez besoin de peindre cet élément, écrivez dans les commentaires.
- Configuration de SPNEGO dans WLS
Pour ce faire, accédez à la console d'administration de WebLogic Server
Accédez à la section Security Realms> myrealm> Providers et cliquez sur le bouton Ajouter
Sélectionnez le type de «WebLogic Negotiate Identity Assertion provider»
Vérifiez que les deux paramÚtres sont sélectionnés.

Nous appuyons sur le bouton RĂ©organiser et contrĂŽlons les flĂšches pour dĂ©finir la sĂ©quence des types d'autorisation. En premier lieu doit ĂȘtre installĂ© WebLogic Negotiate Identity Assertion Provider en deuxiĂšme lieu Fournisseur qui effectue l'authentification LDAP (autorisation de domaine)

- Ensuite, vous devez indiquer à l'application la méthode d'autorisation CLIENT-CERT, ces modifications sont appliquées dans le fichier web.xml de l'application
<security-constraint> <display-name>Security Constraint for SSO </display-name> <web-resource-collection> <web-resource-name>My webapp</web-resource-name> <description>Group of Users</description> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>valid-users</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>CLIENT-CERT</auth-method> </login-config> <security-role> <description>Role description</description> <role-name>valid-users</role-name> </security-role>
Le rĂŽle doit ĂȘtre prĂ©installĂ© dans le systĂšme. Dans notre cas, le rĂŽle intĂ©grĂ© pour ADF (utilisateurs valides) est utilisĂ© et, en fonction des groupes de domaines, des autorisations sont accordĂ©es.
Pour identifier les problÚmes d'autorisation, vous devez activer le débogage. Pour ce faire, accédez à la section.
Environnement -> Serveurs, sélectionnez notre serveur -> Débogage -> weblogic (développer) -> Sécurité -> atn, cochez la case et activez-le.

Pour activer et désactiver le débogage, un redémarrage n'est pas nécessaire.
Connectez-vous Ă la machine du domaine, cliquez sur le lien de l'application et connectez-vous sans entrer de mot de passe. Il convient de noter que le bouton Quitter de l'application ne fonctionnera pas dans cette configuration.