Liberty服务器上的LDAP java单点登录

问题描述:

我想在使用Java的Websphere-Liberty服务器上实现单点登录。我想要使​​用LDAP对用户进行身份验证。Liberty服务器上的LDAP java单点登录

我搜索了很多,但找不到确切的例子。我也检查了每个可用的堆栈溢出示例。但没有运气。

如果可以提供相同的演示或示例代码,那将会很棒。

在此先感谢。

更新:我能够在华夫饼的帮助下实现同样的功能,但华夫饼不适用于Linux/Unix。 .. 谁能帮帮我吗?

+1

使用https://wiki.jasig.org/display/casum/home,简单可靠 –

+0

您是否希望带有Windows AD登录的桌面SSO?然后检查SPNEGO认证。如果您只是希望在Liberty上的各种应用程序之间拥有SSO,那么它默认情况下会使用LTPA,只需将Liberty连接到LDAP注册表即可。你需要澄清一下你真正需要的东西。 – Gas

+0

我正在寻找在Linux服务器上的websphere liberty中的SSO。它应该是基于web的而不是桌面的。你有任何代码可供参考吗? –

如果您使用LDAP,身份验证可以像Basic一样传递。如果您知道用户名和密码,请将标题“Authorization”附加值“Basic base64_token”。

base64标记是一个字符串,它是用您的用户名和密码进行base64编码的,格式为username:password。理想情况下,这应该起作用。让我知道如果它不起作用。在这种情况下,我们可以使用SPNEGO探索选项。在JAVA

代码LDAP:

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

此代码与SSO或Web应用程序有什么关系?只是显示如何添加基本身份验证标头到请求。 – Gas

+0

该问题具体询问如何使用Java对LDAP服务进行身份验证。通过将身份验证详细信息作为基本身份传递,我已经成功地与LDAP服务通信。这应该工作。我在等待OP的回应。 – thatrockbottomprogrammer

了专门的窗口。单点登录可以通过使用华夫饼来完成。

对于LDAP身份验证可以通过Spring MVC的去简单的Java类与以下行代码:

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); 

对于单点登录:

ü需要设置Kerberos和SPNEGO配置在服务器级别。对于Liberty服务器,它的server.xml需要修改。

waffle dosent support * nix。 您可以使用支持Krb5LoginModuleJASS(仅适用于Java SE 8),它可以让您缓存OS票证。