LDAP java single sign-on en el servidor Liberty
single-sign-on websphere-liberty (3)
Quiero implementar Single sign en el servidor Websphere-Liberty utilizando Java. Quiero autenticar usuarios que usan LDAP.
Busqué mucho pero no pude encontrar el ejemplo exacto. También he comprobado cada ejemplo disponible en el desbordamiento de la pila. pero sin suerte.
Sería genial si uno puede proporcionar una demostración o código de ejemplo para el mismo.
Gracias por adelantado.
actualización: Pude implementar lo mismo con la ayuda de waffle ... pero waffle no funciona con Linux / Unix. .. ¿Alguien puede ayudarme por favor?
Si está utilizando LDAP, la autenticación puede transmitirse como Basic. Si conoce el nombre de usuario y la contraseña, agregue el encabezado "Autorización" con el valor "Basic base64_token".
El token base64 es una cadena que está codificada en base64 con su nombre de usuario y contraseña en el formato nombre de usuario: contraseña. Idealmente, esto debería funcionar. Avísame si no funciona. En ese caso, podemos explorar opciones usando SPNEGO.
Código para 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
}
}
específicamente para windows. El inicio de sesión único se puede hacer utilizando waffle.
Para la autenticación de Ldap, puede ir en mvc de primavera a una clase simple de Java con líneas de código debajo:
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);
Para inicio de sesión único:
U necesita configurar Kerberos y la configuración de Spnego en el nivel del servidor. para el servidor liberty su server.xml necesita modificación.
soporte de dosent de waffle * nix. Puede usar JASS (Java SE 8 solamente) con soporte de Krb5LoginModule que le permitirá almacenar en caché el ticket del sistema operativo.