JAVA安全基础知识
一、什么是LDAP
LIGHTWEIGHT DIRECTORY ACCESS Protocol轻量级目录访问协议(目录服务)
类似于这样的树型组织结构,通过LDAP协议连接后像文件夹目录一样
LDAP实现:AD域环境
LDAP默认端口:389
二、JNDI是什么?
Java Naming and Directory Interface Java命名和目录接口(命名服务接口)
用于根据名字找到位置、服务、信息、资源、对象等----KeyValue对
基本操作:
1.发布服务(名字和资源的映射):bind()
2.用名字查找资源:lookup()
为什么要使用JNDI?
一般链接数据库时都是使用jdbc进行连接,但是如果要链接其他数据库时再使用jdbc进行连接的话就需要改动大量代码,但是使用JNDI就可以避免这样的链接问题。
JDBC直接连接数据库的弊端
1.参数变动引发URL修改
2.数据库产品切换,驱动包修改
3.连接池参数的调整
下图是JDBC连接数据库的一个结构图
而利用JNDI连接数据库的结构如下图所示:
JNDI因为是一个命名服务,它可连接的资源是多种多样的,不是只有JDBC,还可以是LDAP目录服务、RMI远程方法调用、DNS、XNam、Novell目录服务、CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、DSML v1&v2、NIS等
由此观之,LDAP和JNDI的关系:
通过JNDI的接口传一个名字就能获得LDAP目录服务里面的存储的数据
三、什么是JNDI注入
1.JNDI动态协议转换
env.put(Context.PROVIDER_URL,"ldap://localhost:7389/dc=example,dc=com");
DirContext ctx = new InitialDirContext(env);
ctx.lookup("rmi://localhost:7389/ou=employees,dc=example,dc=com");
明明env设置的时使用的是ldap协议,但是lookup时却是rmi协议,这就叫动态协议转换。
支持自动转换的协议
协议名称 | 协议URL | Context类 |
DNS协议 | dns:// | com.sun.jndi.url.dns.dnsURLContext |
RMI协议 | rmi:// | com.sun.jndi.url.rmi.rmiURLContext |
LDAP协议 | ldap:// | com.sun.jndi.url.ldap.ldapURLContext |
LDAP协议 | ldaps:// | com.sun.jndi.url.ldaps.ldapsURLContextFactory |
IIOP对象请求代理协议 | iiop:// | com.sun.jndi.url.iiop.iiopURLContext |
IIOP对象请求代理协议 | iiopname:// | com.sun.jndi.url.iiopname.iiopnameURLContextFactory |
IIOP对象请求代理协议 | corbaname:// | com.sun.jndi.url.corbaname.corbanameURLContextFactory |
2.JNDI命名引用
1.在LDAP里面可以存储一个外部的资源,叫做命名引用,对应Reference类
比如远程HTTP服务的一个.class文件
2.如果JNDI客户端基于LDAP服务,找不到对应的资源,就去指定的地址请求,如果是命名引用,会把这个文件下载到本地
3.如果下载的.class文件包含无参构造函数或静态方法块,加载的时候就会自动执行
四、什么是RMI
RMI即远程方法调用,是允许运行在一个JAVA虚拟机上的对象调用运行在另外一个远程JAVA虚拟机上的对象的方法。
JAVA安全基础知识相关推荐
- java培训基础知识都学哪些
很多人都开始学习java技术,觉得java语言在未来的发展前景空间非常大,事实却是如此,那么针对于零基础的同学, 学习java技术需要学哪些呢?下面我们就来看看java培训基础知识都学哪些? java ...
- 你觉得什么才是 Java 的基础知识?
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...
- 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc
计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...
- java ee基础知识_Java EE:基础知识
java ee基础知识 想要了解一些基本原则,即与Java EE相关的技术术语. 对于许多人来说,Java EE / J2EE仍然最多意味着Servlet,JSP或Struts. 没有冒犯或双关语! ...
- hashcode是什么意思_什么才是 Java 的基础知识?
作者:晓风轻 链接:zhuanlan.zhihu.com/p/28615617 近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java ...
- JAVA NIO基础知识
本文来说下JAVA NIO基础知识. 文章目录 NIO概述 NIO简介 NIO的特性/NIO与IO区别 读数据和写数据方式: NIO核心组件简单介绍 Java NIO 之 Buffer(缓冲区) Bu ...
- java 反射基础知识
java 反射 基础知识 反射:reflection 反射关键类 java 反射部分应用 反射:reflection 在运行中分析类. 在运行中查看和操作对象. 基于反射自己创建对象. 调用不可以访问 ...
- Java 进阶基础知识
我断断续续花费一周的时间整理了这份 Java 进阶基础知识的思维导图.以前觉得这是一个简单的事情,感觉不就是跟着书上的知识点抄一遍嘛,但真的自己动手写过后,才发现并不是那么一回事. 说说自己整理心得吧 ...
- java类与接口思维导图_详解java接口基础知识附思维导图
接口: 官方的含义是---->java接口是一系列方法的声明,是一些方法特征的集合 疑问: 那为什么不用抽象类呢?把他们共有的方法集合起来放在一个抽象类里面,同样可以调用哇,但是反过来想一想如果 ...
- Java语言基础知识(一)
前言 Java是一门高级计算机语言,由美国Sun公司(Stanford University Network)在1995年推出(现Sun公司已经被Oracle公司收购 ).要想学好Java,基础是至关 ...
最新文章
- 两所大学中的智能车竞赛校内赛
- centos6创建用户,设置ssh登录
- matebook14支持触摸屏吗_华为MateBook 14 2021发布,触摸屏成标配
- struts2(三) 输入校验和拦截器
- Scala类中的+方法
- Storm【技术文档】-Worker Executor Task的关系
- mybatis的增删改操作及需要注意的问题
- 聊聊excel生成图片的几种方式
- 画手cv什么意思_lt;3招gt;助你搞定工科出国留学申请简历(CV)!
- UI完美配色专辑|色彩是影响设计使用者情绪和行为行为的最重要因素之一
- fetchtype 动态控制_hibernate 关于 注解配置@Basic(fetch=FetchType.LAZY) 不起效果
- 【OpenCV学习】cvConvert的使用
- Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
- c语言 opengl函数魔方,《基于OpenGL的3D旋转魔方实现汇总》.doc
- RISC-V MCU 智能语音物联网家居控制系统
- XXX packages are looking for funding run `npm fund` for details解决方法
- 小伙伴要我给他介绍一些非常酷炫而有趣又容易上手的前端框架
- 荣耀4a鸿蒙,赵明:6 月起芯片供应将全面恢复,荣耀未来会考虑用华为鸿蒙系统...
- 云原生--k8s之pod
- PixelUtils:像素转换工具