首页 > 其他分享 >关于springboot 域认证

关于springboot 域认证

时间:2024-01-23 11:57:37浏览次数:33  
标签:UserName String 认证 关于 env ldap put springboot

最近项目,客户要求实现域认证,然后登录。网上资料自己整理一下,以备后续使用;

springboot 域认证,我采用的是ldap方式认证。

1.引入插件:

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-ldap</artifactId>
        </dependency>

2.编写ldap认证代码

 String UserName=loginBody.getUsername();
        String password=loginBody.getPassword();
        String host="10.123.7.6";  //AD域IP
        String domain="lysh.sinopec.com";  //AD域名后缀
        String port="389";  //端口
        String url=new String("ldap://"+host+":"+port);
        String user=UserName.indexOf(domain)>0?UserName:UserName+domain;

        //实例化
        Hashtable env=new Hashtable();
        DirContext ctx=null;
        env.put(Context.SECURITY_AUTHENTICATION,"simple");  //LDAP访问级别(none,simple,strong)
        env.put(Context.SECURITY_PRINCIPAL, UserName);//AD用户名
        env.put(Context.SECURITY_CREDENTIALS,password); //AD的密码
        env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");//LDAP工厂类
        env.put("com.sun.jndi.ldap.connect.timeout","3000"); //连接超时时间
        env.put(Context.PROVIDER_URL,url);
        try{
            ctx=new InitialDirContext(env); //初始化上下文
            System.out.println("---域认证,身份验证成功---");
            if(hasuser(UserName)) {
                String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), "",
                        "");
                ajax.put(Constants.TOKEN, token);
                return ajax;
            }else{
                return AjaxResult.error("该用户不存在,请联系管理员");
            }
        } catch (AuthenticationException e) {
            System.out.println("身份验证失败");
            e.printStackTrace();
            return null;

        }catch (javax.naming.CommunicationException e){
            System.out.println("AD域连接失败");
            e.printStackTrace();
            return null;
        }catch (Exception e){
            System.out.println("身份验证未知异常");
            e.printStackTrace();
            return null;
        }finally {
            try {
                ctx.close();

            } catch (NamingException e) {
                throw new RuntimeException(e);
            }
        }

3.修改代码中自己的域,域服务器ip,端口号,用户名,密码。

4.域认证通过后,可以结合自己的实际情况,进行业务处理。

标签:UserName,String,认证,关于,env,ldap,put,springboot
From: https://www.cnblogs.com/sguozeng/p/17981998

相关文章

  • shardingsphere springboot application.yml配置
    shardingsphere springbootapplication.yml配置 spring:sharding-sphere:datasource:names:mastermaster:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql:......
  • 使用Go进行HTTP客户端认证
    在Go语言中,HTTP客户端认证可以通过net/http包来实现。下面是一个简单的示例,展示如何使用Go进行HTTP客户端认证。首先,确保你已经安装了Go语言环境,并设置好了相关的环境变量。Go语言中的HTTP客户端认证主要涉及到设置请求头中的认证信息。以下是一个简单的示例代码,展示了如何使用Go发......
  • 关于如何防止重复订单提交
    这是个面试中非常常见的问题,也是并发请求中常见的情况,对于数据的一致性有很高要求系统都是要做的主要有以下四个解决思路:1、提交订单按钮置灰,短时间内不可重复提交;2、后端预生成全局唯一订单号。前端进入下单页面去请求获取该订单号,然后下单,后端通过此唯一订单号进行处理,已处理......
  • .NET Framework中关于WPF的更新信息
    .NETFramework3.0版中的新增功能更新:2007年11月单独发布.NETFramework3.0版是为了在.NETFramework和Windows软件开发包(SDK)中包含以下技术。WindowsCommunicationFoundationWindowsPresentationFoundationUnderstandingWindowsWorkflowFoundation......
  • springboot+mybtais+mysql
    一、通过maven引入相应的包pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http......
  • Springboot学习第二天
    今天的学习内容是如何在项目中设计统一响应接口返回值,达到统一的格式1.响应实体我们首先要定义一个公共的接口响应实体,以后所有的接口返回值,都是返回的这个公共响应实体。这样做的好处是可以统一返回值的风格,编译接口的维护。需要包含3个关键的成员变量:状态码返回信息数......
  • 在 SpringBoot 项目中使用 Mybatis 打印 SQL 日志
    前言我们在项目中使用的持久层框架大部分都是mybatis,如果在日志中能打印sql的话,对于我们排查问题会更加方便。第一种方式:修改mybatis配置修改配置mybatis:configuration:log-impl:org.apache.ibatis.logging.slf4j.Slf4jImpllogging:level:com.imooc.p......
  • springboot+vue--注册
    ***在UserController中声明一个(/register),接口中包括两个功能://用户名是否已被占用//注册**​publicResultregister(Stringusername,Stringpassword){}***在UserService(接口)中,实现两个方法:**​publicUserfindByUsername(Stringusername){}//根据用户......
  • Java21 + SpringBoot3集成easy-captcha实现验证码显示和登录校验
    目录前言相关技术简介easy-captcha实现步骤引入maven依赖定义实体类定义登录服务类定义登录控制器前端登录页面实现测试和验证总结附录使用Session缓存验证码前端登录页面实现代码前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系......
  • 关于spring.redis.cluster集群部分Master节点故障后 交易中断60秒解决方案
     背景  第一种方案:公司项目做性能测试,redis集群选用cluster集群模式,开始选用3主3从,共3台服务器,每个服务器一主一从。    服务器A  redis8001 8002    服务器B  redis8003 8004     服务器C  redis8005 8006    8001主    ......