zoukankan      html  css  js  c++  java
  • 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域)

      
  • 相关阅读:
    java环境变量配置
    单文档中自定义文件打开对话框和保存对话框
    汇编小知识(二)
    汇编指令
    汇编小知识(一)
    data directory(数据目录)之 引出表
    data directory(数据目录)之 引入表
    PE Header中的Optional Header中的最后一个成员变量data directory(数据目录)
    紧跟在PE Header后面的Section Table(节表)
    PE Header中的OptionalHeader
  • 原文地址:https://www.cnblogs.com/anlegou/p/10511683.html
Copyright © 2011-2022 走看看