Autorisation transparente pour une application sur Oracle Weblogic Server

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:



  1. Lorsqu'un utilisateur enregistrĂ© (PC) demande une ressource Ă  Oracle WebLogic Server (WLS), il envoie la requĂȘte HTTP GET d'origine.
  2. 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.
  3. Un client (navigateur sur PC) demande un ticket de session Ă  TGS / KDC (AD).
  4. TGS / KDC (AD) fournit au client le ticket Kerberos nécessaire (à condition que le client soit autorisé), enveloppé dans le jeton SPNEGO.
  5. Le client renvoie la requĂȘte HTTP GET + NĂ©gociez le jeton SPNEGO dans l'en-tĂȘte d'autorisation: NĂ©gociez base64 (jeton).
  6. 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.
  7. 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.
  8. 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)


  • RedĂ©marrez le serveur

  • 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.

  • DĂ©boguer

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.

  • Nous redĂ©marrons le serveur pour appliquer les modifications de configuration.
  • DĂ©ployer l'application avec une mĂ©thode d'autorisation modifiĂ©e (nouveau web.xml)
  • Pour dĂ©sactiver ce type d'autorisation pour la console d'administration, apportez les modifications suivantes% Ora_Home% \ wlserver \ server \ lib \ consoleapp \ webapp \ WEB-INF \ web.xml.

    Changer la ligne

      <auth-method>CLIENT-CERT,FORM</auth-method>  <auth-method>FORM</auth-method> 

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.

Source: https://habr.com/ru/post/fr414939/


All Articles