2017-09-04 83 views
6

我想在使用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的而不是桌面的。你有任何代碼可供參考嗎? –

回答

1

如果您使用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

1

了專門的窗口。單點登錄可以通過使用華夫餅來完成。

對於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需要修改。