<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23,comments - 12,trackbacks - 0

    相信大部份的企業中還是以 Microsoft Exchange Server 2000 或以上版本作為公司的 EMail 服務系統,因為 Exchange Server 2000 可以快速的提供身份認證、郵件服務、行事曆、以及通訊錄服務。本篇以一個簡單的程式碼說明如何使用 Java + JNDI LDAP provider 透過 ActiveDirectory 進行身份認證。

    • 其實提供身份認證服務的是 ActiveDirecory 目錄服務系統,和 Exchange Server 是沒有關係的。但是因為在建置 Exchange Server 時會透過 ActiveDirectory 目錄服務記錄使用者相關資訊,才會有 Exchange Server 可以提供身份認證的錯覺。因此以下說明的測試只需 ActiveDirectory 存在即可。
    在進行測試前,請先安裝 >>JNDI LDAP provider 並完成所附程式的編譯作業後,即可進行測試。測試的方式為: java -cp . test.ADAuth email password 看 isLogon 結果為 true 或 false 即可。

    完成認證後,可透過建立的 目錄服務 物件擷取更多的 LDAP 目錄訊息,不過目前還在測試中...

    ADAuth.java 源碼列表

    package test;

    import javax.naming.*; import javax.naming.directory.*;

    import java.util.Hashtable;

    /** * 建立一個透過 ActiveDirectory 認證過的使用者物件 * * @author Ada */ public class ADAuth {

    /** * @return 認證是否通過 */ publicstaticboolean login( String email, String password ) {

    /** LDAP 環境變數 */ Hashtable env = null;

    /** 目錄 */ DirContext ctx = null;

    /** 認證狀態 */ boolean logged = true;

    env = new Hashtable(); env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // 記得修改 ActiveDirectory 實際提供主機位址 env.put( Context.PROVIDER_URL, "ldap://active.directory.server:389"); // 使用 username + password 進行認證 env.put( Context.SECURITY_AUTHENTICATION, "simple" ); // 使用者的完整 email ,也就是 AD 中的 ${sAMAccountName}@your.domain.name env.put( Context.SECURITY_PRINCIPAL, email ); // 認證當時的密碼 env.put( Context.SECURITY_CREDENTIALS, password );

    try { // 若可建立目錄物件,即表示完成登入 ctx = new InitialDirContext( env ); logged = true; } catch( AuthenticationException authe ) { // 授權失敗 logged = false; System.out.println( authe ); } catch( Exception e ) { // 不明錯誤 System.out.println( e ); } finally { try { // 記得把目錄關閉 ctx.close(); } catch ( Exception Ignore ) { } }

    return logged; }

    /** * 主執行程序 * @author Ada */ publicstatic void main( String[] args ) {

    // 一定要 email + 密碼才能登入 if( args.length == 2 ) { System.out.println( "is Logon? : " + login( args[0], args[1] ); } else { System.out.println( "EMail/Password not initialed!" ); } } }

    另一例:

    /*
    ?*?ADAuth.java
    ?*
    ?*?Created?on?2004年9月29日,?上午?11:37
    ?*/
    import?java.util.Hashtable;
    import?javax.naming.Context;
    import?javax.naming.AuthenticationException;
    import?javax.naming.directory.DirContext;
    import?javax.naming.directory.InitialDirContext;
    /**
    ?*
    ?*?@author??ajax
    ?*/
    public?class?ADAuth?{
    ????DirContext?ctx?=?null;
    ????Hashtable?env?=?null;
    ????/**?Creates?a?new?instance?of?ADAuth?*/
    ????public?ADAuth(String?acct,String?password)?{
    ????????env?=?new?Hashtable();
    ????????env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    ????????/*
    ?????????*?Ldap://後可接active?directory的server名稱或ip,port可以不用key,預設為389
    ?????????*/
    ????????env.put(Context.PROVIDER_URL,"Ldap://192.168.1.16:389");
    ????????env.put(Context.SECURITY_AUTHENTICATION,?"simple");
    ????????/*
    ?????????*?公司網域為?company.com.tw
    ?????????*
    ?????????*?所以有這一段?DC=company,DC=com,DC=tw
    ?????????*/
    ????????env.put(Context.SECURITY_PRINCIPAL,"cn="+acct+",cn=users,DC=公司AD的網域名");//,DC=com,DC=tw");
    ????????env.put(Context.SECURITY_CREDENTIALS,password);
    ????????try{
    ????????????ctx?=?new?InitialDirContext(env);
    ????????????System.out.println("驗証通過");
    ????????}catch(AuthenticationException?authe){
    ????????????System.out.println("驗証失敗");
    ????????}catch(Exception?e){
    ????????????System.out.println(e);
    ????????}finally{
    ????????????try{
    ????????????????ctx.close();
    ????????????}catch(Exception?Ignore){}
    ????????}
    ?????}
    ??????public?static?void?main(String[]?args){
    ??????????new?ADAuth("帳號","密碼");
    ??????}
    }

    posted on 2005-10-26 13:09 my java 閱讀(1900) 評論(0)  編輯  收藏 所屬分類: JNDI
    主站蜘蛛池模板: 日产国产精品亚洲系列| 亚洲成aⅴ人片在线影院八| 久久精品国产亚洲精品| 亚洲v高清理论电影| 亚洲色大情网站www| 日本不卡免费新一区二区三区| 巨胸喷奶水视频www网免费| 中文字幕亚洲乱码熟女一区二区| 亚洲激情校园春色| 成av免费大片黄在线观看| 日韩精品免费电影| 亚洲欧洲日本天天堂在线观看| 希望影院高清免费观看视频| 国产亚洲一区二区手机在线观看 | 亚洲综合久久1区2区3区| 最近免费中文字幕高清大全| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 日韩免费毛片视频| 污网站在线观看免费| 日韩精品福利片午夜免费观着| 久久精品亚洲综合专区| 午夜免费国产体验区免费的| 色播在线永久免费视频| 亚洲午夜电影在线观看高清| 99视频有精品视频免费观看| 亚洲一区二区女搞男| 一区视频免费观看| 亚洲第一视频在线观看免费| 久久无码av亚洲精品色午夜 | 亚洲AV无码国产精品麻豆天美 | 99精品视频在线视频免费观看| 亚洲欧洲日韩在线电影| 国产免费人成视频在线观看| 亚洲国产精品无码久久久秋霞1| 午夜性色一区二区三区免费不卡视频| 亚洲熟妇无码一区二区三区导航| 亚洲成a人一区二区三区| 无码精品人妻一区二区三区免费看 | 久久精品国产亚洲av瑜伽| 国产zzjjzzjj视频全免费 | 亚洲精品无码高潮喷水A片软|