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虚拟机上的对象的方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值