Java AD域登录实现正常本地登录操作

本文档整理了Java实现AD域登录的操作步骤,包括新建测试类、AD域的身份验证逻辑,以及验证成功后如何代入项目登录接口。需要注意的是,验证成功后保存用户名以确保正常登录。代码实现后,可以使用AD域账号进行登录测试。
摘要由CSDN通过智能技术生成

前言

因为最近公司需要项目进行域账号的登录,查找了许多资料,都是零零散散的,所以在这里整理一下步骤,希望帮到大家

新建一个测试类

package com.numberone.web.controller.common;


import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.Hashtable;

/**
 * Created by kelvan.cai on 2019/6/10 0010.
 */
public class AdLogin {
   
    public static void main(String[] args) {
   
        String userName = "123@qq.com";//AD域认证,用户的登录UserName
        String password = "123";//AD域认证,用户的登录PassWord
        String host = "*.*.*.*";//AD域IP,必须填写正确 *号改为自己的IP
        String domain = "@qq.com";//域名后缀,例.@noker.cn.com 对应userName@
        String port = "389"; //端口,一般默认389
        String url = new String("ldap://" + host + ":" + port);//固定写法
        String user = userName.indexOf(domain) > 0 ? userName : userName
                + domain;//网上有别的方法,但是在我这儿都不好使,建议这么使用
        Hashtable env = new Hashtable();//实例化一个Env
        DirContext ctx = null;
        env.put(Context.SECURITY_AUTHENTICATION, "simple");//LDAP访问安全级别(none,simple,strong),一种模式,这么写就行
        env.put(Context.SECURITY_PRINCIPAL, user); //用户名
        env.put(Context.SECURITY_CREDENTIALS, password);//密码
        env.put(Context.INITIAL_CONTEXT_FACTORY,
                "com.sun.jndi.ldap.LdapCtxFactory");// LDAP工厂类
        env.put(Context.PROVIDER_URL, url);//Url
        try {
   
            ctx = new InitialDirContext(env);// 初始化上下文
            System.out.println("身份验证成功!");
        } catch <
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
使用Java获取AD登录账户,我们可以使用LDAP(Lightweight Directory Access Protocol)协议与AD进行通信。 首先,我们需要使用Java的LDAP库来连接AD的LDAP服务器。可以使用如下代码创建一个LDAP连接: ``` java import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.directory.Attributes; import javax.naming.directory.DirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; public class ADLogin { public static void main(String[] args) { String ldapURL = "ldap://ad_domain_controller_ip:port"; String baseDN = "DC=your_domain,DC=com"; String username = "your_username"; String password = "your_password"; try { // 创建LDAP连接 LdapContext context = new InitialLdapContext(ldapEnv, null); // 创建搜索控件 SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); // 设置要搜索的属性,这里我们只搜索sAMAccountName属性 String[] returningAttributes = {"sAMAccountName"}; // 执行搜索 NamingEnumeration<SearchResult> results = context.search(baseDN, "(sAMAccountName=" + username + ")", returningAttributes, searchControls); // 获取搜索结果 if (results.hasMore()) { SearchResult searchResult = results.next(); Attributes attributes = searchResult.getAttributes(); String loginAccount = attributes.get("sAMAccountName").get().toString(); System.out.println("登录账户:" + loginAccount); } else { System.out.println("未找到登录账户"); } // 关闭LDAP连接 context.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们创建了一个LDAP连接并指定AD的服务器地址、名,以及要使用的用户名和密码。然后,我们执行一个搜索操作,通过用户名查找对应的登录账户属性(这里仅查找了sAMAccountName属性)。最后,我们从搜索结果中获取登录账户的值并进行输出。 需要注意的是,在执行代码之前,需要确保你已经包含了Java的LDAP库并正确地替换了相关的服务器地址、名、用户名和密码信息。 通过以上方法,我们可以使用Java来获取AD登录账户。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值