java域控连接AD遇到的问题

简介: java域控连接AD遇到的问题

项目是前后端分离的        springboot + vue

浏览器访问        可以直接拿到对应的域账户。

放在项目里面就直接报了这个错误,说是鉴权失败。401

对应的controller里面加了注解@CrossOrigin

但是没有效果的。感觉不是跨域的问题。因为只有前端访问这个接口的时候才会提示这个错误。

Access to XMLHttpRequest at 'http://localhost:18080/app/getExUserName' from origin 'http://localhost:8002' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

在对应的filter里面加载配置。放在不需要登录的地方,浏览器直接访问就可以获取到域账户,但是使用前端访问连接,或者工具访问都不可以。我检查了所有的filter  其实并不是冲突,也没有冲突。因为我们是用的sso做的单点,跟这个应该是有关系的。然后我就吧!这个请求的URL换成了登录时的URL然后就可以获取到域账号了(域账号放到redis),而且不影响项目正常流程。

"/sso/login", "/sys/login"

获取到的域账号,放到全局。做一个访问前询问是否有这个账号,如果没有取到就是放到redis的超时了。重新登录即可。

这里必须要做到精准定位到域账号。也就是请求时每次都要更新全局。(set其实这个可以优化)不然会出现取错账号的问题。

问题解决了  就很开心。

@Value("${jcifs.smb.client.domain}")

private String domain;

@Value("${jcifs.http.domainController}")

private String domainController;

@Value("${jcifs.smb.client.username}")

private String username;

@Value("${jcifs.smb.client.password}")

private String password;

@Bean

   public FilterRegistrationBean jcifsFilterRegistration() {

       FilterRegistrationBean<JcifsFilter> registration = new FilterRegistrationBean<>();

       registration.setFilter(new JcifsFilter(domain, domainController, username, password));

       //配置需要获取域控的请求路径也可以直接配置 '/*'(代表全部都会进行域控加载)

//        registration.addUrlPatterns("/*");//过滤所有请求

//        registration.addUrlPatterns("/app/getExUserName");//请求的URL

registration.addUrlPatterns("/sql_implement", "/sso/login", "/sys/login");

       registration.setName("NtlmHttpFilter");//第一个

       registration.setOrder(1);//级别

       return registration;

   }

启动就可以正常获取域账户


相关文章
|
3天前
|
NoSQL Java MongoDB
java连接MongoDB
java连接MongoDB
|
3天前
|
数据采集 Java 关系型数据库
Java代码高效连接数据库
Java代码高效连接数据库
23 2
|
3天前
|
IDE 关系型数据库 MySQL
【Java+MySQL】前后端连接小白教程
【Java+MySQL】前后端连接小白教程
40 0
|
3天前
|
NoSQL Java API
Redis官方推荐的Java连接开发工具Jedis
Redis官方推荐的Java连接开发工具Jedis
|
3天前
|
监控 安全 Java
Java与物联网:连接与控制设备
Java与物联网:连接与控制设备
30 0
|
3天前
|
Linux Windows
FinalShell连接Linux虚拟机报错java.net.ConnectException: Connection timed out: connect(亲测有效)
FinalShell连接Linux虚拟机报错java.net.ConnectException: Connection timed out: connect(亲测有效)
217 0
|
3天前
|
前端开发 Java 应用服务中间件
【异常解决】java程序连接MinIO报错The request signature we calculated does not match the signature you provided.
【异常解决】java程序连接MinIO报错The request signature we calculated does not match the signature you provided.
17 0
|
3天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
3天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
12 0
|
3天前
|
NoSQL Java 关系型数据库
Java基础教程(21)-Java连接MongoDB
【4月更文挑战第21天】MongoDB是开源的NoSQL数据库,强调高性能和灵活性。Java应用通过MongoDB Java驱动与之交互,涉及MongoClient、MongoDatabase、MongoCollection和Document等组件。连接MongoDB的步骤包括:配置连接字符串、创建MongoClient、选择数据库和集合。伪代码示例展示了如何建立连接、插入和查询数据。