2017-09-04 29 views
6

Tôi muốn triển khai Đăng nhập một lần trên máy chủ Websphere-Liberty bằng cách sử dụng Java. Tôi muốn xác thực người dùng bằng LDAP.Đăng nhập một lần LDAP java trên máy chủ Liberty

Tôi đã tìm kiếm rất nhiều nhưng không thể tìm thấy ví dụ chính xác. Tôi đã kiểm tra từng ví dụ có sẵn trên tràn ngăn xếp là tốt. nhưng không may mắn.

Sẽ thật tuyệt vời nếu bạn có thể cung cấp mã demo hoặc mã mẫu cho cùng một loại.

Xin cảm ơn trước.

cập nhật: Tôi có thể thực hiện tương tự với sự trợ giúp của waffle .. nhưng waffle không hoạt động với Linux/Unix. .. ai đó làm ơn giúp tôi với?

+1

sử dụng https://wiki.jasig.org/display/casum/home, dễ dàng và đáng tin cậy –

+0

Bạn có muốn SSO trên máy tính để bàn với thông tin đăng nhập AD Windows không? Sau đó kiểm tra xác thực SPNEGO. Nếu bạn chỉ muốn có SSO giữa các ứng dụng khác nhau trên Liberty, thì nó được bật theo mặc định bằng LTPA, chỉ cần kết nối Liberty với cơ quan đăng ký LDAP. Bạn cần phải làm rõ một chút những gì bạn thực sự cần. – Gas

+0

Tôi đang tìm SSO trong tự do websphere trên máy chủ Linux. và nó phải dựa trên web chứ không phải trên máy tính để bàn. Bạn có mã nào để tham khảo không? –

Trả lời

1

Nếu bạn đang sử dụng LDAP, việc xác thực có thể được chuyển đi như Basic. Nếu bạn biết tên người dùng và mật khẩu, hãy thêm tiêu đề "Ủy quyền" với giá trị "Basic base64_token".

Mã thông báo cơ sở là một chuỗi được mã hóa base64 với tên người dùng và mật khẩu của bạn theo định dạng tên người dùng: mật khẩu. Lý tưởng nhất, điều này sẽ làm việc. Hãy cho tôi biết nếu nó không hoạt động. Trong trường hợp đó, chúng ta có thể khám phá các tùy chọn bằng SPNEGO.

Mã cho LDAP trong 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

Mã này có liên quan gì với SSO hoặc với các ứng dụng web? Chỉ cho biết cách thêm tiêu đề xác thực cơ bản vào yêu cầu. – Gas

+0

Câu hỏi cụ thể hỏi cách sử dụng xác thực với dịch vụ LDAP bằng Java. Tôi đã làm việc với và thành công trong việc giao tiếp với một dịch vụ LDAP bằng cách chuyển các chi tiết xác thực là Cơ bản. Điều này sẽ làm việc. Tôi đang đợi phản ứng của OP. – thatrockbottomprogrammer

1

cho riêng cửa sổ. Đăng nhập một lần có thể được thực hiện bằng cách sử dụng waffle.

Đối với chứng thực LDAP bạn có thể đi bằng MVC mùa xuân đến lớp java đơn giản với những đường nét bên dưới mã:

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

Đối với Single Sign On:

U cần phải thiết lập Kerberos và Spnego cấu hình tại máy chủ cấp độ . đối với máy chủ tự do, server.xml của nó cần sửa đổi.

3

waffle hỗ trợ dosent * nix. Bạn có thể sử dụng JASS (chỉ dành cho Java SE 8) với sự hỗ trợ của Krb5LoginModule sẽ cho phép bạn lưu vào bộ nhớ cache của vé OS.

Các vấn đề liên quan