springboot整合微軟的ad域,采用ldap的api來整合,實現用戶登錄驗證、


流程:

1.用戶調登錄接口,傳用戶名和密碼2.用戶名和密碼在ad驗證,驗證通過后,返回當前用戶的相關信息。(注:ldap為java自帶的api不需要maven引入其他的)3.根據返回的用戶信息,實現自己系統的業務邏輯

@RequestMapping("/getMsg")
   @ResponseBody
    public String getAllPersonNamesWithTraditionalWay(@RequestParam String username,@RequestParam String password) {
        Hashtable env = new Hashtable();

        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        //ldap://192.168.153.129:389/dc=contoso,dc=com
        env.put(Context.PROVIDER_URL, "ldap://192.168.153.129:389/dc=contoso,dc=com");
        env.put(Context.SECURITY_PRINCIPAL, username);
        env.put(Context.SECURITY_CREDENTIALS, password);
        DirContext ctx;
        String name="";
       NamingEnumeration results = null;
        try {
            ctx = new InitialDirContext(env);
            SearchControls controls = new SearchControls();
            controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
            results = ctx.search("", "(&(objectclass=person)(userprincipalname=" + username+ "))",controls);
            SearchResult searchResult = (SearchResult) results.next();
            Attributes attributes = searchResult.getAttributes();
            name = attributes.get("userprincipalname").get().toString().split("@")[0];
        }
        catch (AuthenticationException e)
        {
            String erroMsg=  e.toString();
            e.printStackTrace();
            return erroMsg;
        }
        catch (NameNotFoundException e) {
            String erroMsg=  e.toString();
            e.printStackTrace();
            return erroMsg;
        } catch (NamingException e) {
            e.printStackTrace();
            String erroMsg=  e.toString();
            return erroMsg;
        } finally {
            if (results != null) {
                try {
                    results.close();
                } catch (Exception e) {
                }
            }
        }
        return name;
    }

返回了登錄用戶的name字段。還有其他字段如下圖)

 

微軟ad域樣子:(我是通過虛擬機安裝了windos sever 2008 r2 然后在其系統上,安裝了AD域)

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM