[問題] JAVA與Windows AD溝通實作SSO

看板java作者 (pangshie)時間10年前 (2015/01/26 11:24), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
各位 30cm & E cup日安 我目前想用JAVA去跟Windows AD溝通 目前有實作出傳入帳號密碼去判斷有無該使用者 想請問一下各位大神 我想做的是使用者登入Windows之後 先去判斷該設備是否有加入AD中 若有就取出使用者的帳號去AD判斷該使用者是否有在AD中 若沒有則跳出登入視窗 整個過程除了Windows登入會輸入帳號密碼之外 其他地方不會取得密碼 單純只用帳號去做完整個流程 不知道JAVA有沒有辦法實作出這個功能 目前有方向應該是要透過JNDI 不過一直實作不出來 附上傳入帳號密碼的Code參考 import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingException; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; public class ADtest { public static void main(String[] args) { String ldapURL = "ldap://172.168.1.1"; String account = "Test"; String password = "12345678"; try{ LDAP_AUTH_AD(ldapURL, account, password); System.out.println("VerifySuccess!"); } catch (Exception e) { System.out.println(e.getMessage()); } } public static void LDAP_AUTH_AD(String ldap_url, String account, String password) throws Exception { if (account.isEmpty() || password.isEmpty()) throw new Exception("Username or Password is empty!"); Hashtable<String, String> env = new Hashtable<String, String>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, ldap_url); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, account + "@test.com"); env.put(Context.SECURITY_CREDENTIALS, password); LdapContext ctx = null; try { ctx = new InitialLdapContext(env, null); } catch (javax.naming.AuthenticationException e) { throw new Exception("VerifyFail!"); } catch (javax.naming.CommunicationException e) { throw new Exception("CannotFindServer!"); } catch (Exception e) { throw new Exception("OtherError!"); } finally { if (ctx != null) { try { ctx.close(); } catch (NamingException e) { } } } } } 感謝看完樂樂長的文章 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.248.193 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1422242686.A.2E5.html

01/26 19:26, , 1F
是Active Directory 、Single Sign-On 嗎?因為你都縮
01/26 19:26, 1F

01/27 01:01, , 2F
對,搭配Active Directory 去做Single Sign-On
01/27 01:01, 2F

01/27 15:36, , 3F
有人寫過類似的嗎 xDD
01/27 15:36, 3F
文章代碼(AID): #1KnRD-Bb (java)
文章代碼(AID): #1KnRD-Bb (java)