2017-09-04 6 views
6

Je souhaite implémenter le serveur Websphere-Liberty à connexion unique via Java. Je veux authentifier les utilisateurs en utilisant LDAP.Connexion unique LDAP java sur le serveur Liberty

J'ai beaucoup cherché mais je n'ai pas trouvé d'exemple exact. J'ai également vérifié chaque exemple disponible sur le débordement de la pile. mais pas de chance.

Ce serait génial si on peut fournir un code de démonstration ou un exemple pour le même.

Merci d'avance. Mise à jour: J'ai été en mesure de mettre en œuvre la même chose avec l'aide de la gaufre .. mais la gaufre ne fonctionne pas avec Linux/Unix. .. Est-ce que quelqu'un peut m'aider s'il vous plait?

+1

utilisez https://wiki.jasig.org/display/casum/home, facile et fiable –

+0

Voulez-vous l'authentification unique de bureau avec les connexions Windows AD? Ensuite, vérifiez l'authentification SPNEGO. Si vous voulez juste avoir SSO entre différentes applications sur Liberty, alors il est activé par défaut en utilisant LTPA, il suffit de connecter Liberty au registre LDAP. Vous devez clarifier un peu ce dont vous avez vraiment besoin. – Gas

+0

Je suis à la recherche de SSO dans websphere liberty sur le serveur Linux. et Il devrait être basé sur le Web pas un ordinateur de bureau. Avez-vous du code pour référence? –

Répondre

1

Si vous utilisez LDAP, l'authentification peut être transmise comme Basique. Si vous connaissez le nom d'utilisateur et le mot de passe, ajoutez l'en-tête "Authorization" avec la valeur "Basic base64_token". Le jeton base64 est une chaîne codée en base64 avec votre nom d'utilisateur et votre mot de passe au format nom d'utilisateur: mot de passe. Idéalement, cela devrait fonctionner. Faites-moi savoir si cela ne fonctionne pas. Dans ce cas, nous pouvons explorer les options en utilisant SPNEGO.

code

pour LDAP en JAVA:

public class Main 
{ 
    public static void main(String[] args) 
    { 
    //Replace username and password with your username and password 
    token = Base64.getEncoder().encodeToString((username + ":" + password).getBytes()) 
    conn = (HttpURLConnection) endpoint.openConnection(); 

    // Set the necessary header fields, which in this case is Basic 
    conn.addRequestProperty("Authorization", "Basic " + token); 

    //Continue to do what you want to do after this. This should authenticate 
    // you to the server 
    } 
} 
+0

Qu'est-ce que ce code a en relation avec SSO ou avec des applications web? Montre simplement comment ajouter l'en-tête de base à la requête. – Gas

+0

La question spécifiquement demande comment utiliser l'authentification à un service LDAP avec Java. J'ai travaillé avec et réussi à communiquer avec un service LDAP en passant les détails d'authentification en tant que base. Cela devrait fonctionner. J'attends la réponse de OP. – thatrockbottomprogrammer

1

pour spécifiquement les fenêtres. L'inscription unique peut être faite en utilisant la gaufre.

Pour l'authentification Ldap, vous pouvez aller au printemps mvc à simple classe java avec ci-dessous des lignes de code:

String username = login.getUsername();// "ancb"; 
    String password = login.getPassword();// "*****"; 
    String base = "OU=******,DC=InfoDir,DC=DEV,DC=****"; 
    String dn = "CN=" + username + "," + base; 
    String ldapURL = "ldaps://****.systems.**.****:3269"; 

    // Setup environment for authenticating 
    Hashtable<String, String> environment = new Hashtable<String, String>(); 
    environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
    environment.put(Context.PROVIDER_URL, ldapURL); 
    environment.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    environment.put(Context.SECURITY_PRINCIPAL, dn); 
    environment.put(Context.SECURITY_CREDENTIALS, password); 

    String dynamicLdapaccount = "(CN="+ username +")" ; 

     DirContext authContext = new InitialDirContext(environment); 

Pour Single Sign On:

U besoin de configurer la configuration Kerberos et SPNEGO au niveau du serveur niveau . Pour le serveur liberty, son fichier server.xml doit être modifié.

3

waffle support de dose * nix. Vous pouvez utiliser JASS (Java SE 8 uniquement) avec la prise en charge de Krb5LoginModule qui vous permettra de mettre en cache le ticket du système d'exploitation.