SASL

LDAP V3协议使用SASL的支持可插拔认证。这意味着LDAP客户端和服务器可以被配置在谈判和使用认证机制可能是非标准和/或定制,取决于客户端和服务器所需的保护水平 。不支持SASL的LDAP v2协议。

目前有几个SASL机制的定义:

  • Anonymous (RFC 2245)
  • CRAM-MD5 (RFC 2195)
  • Digest-MD5 (RFC 2831)
  • External (RFC 2222)
  • Kerberos V4 (RFC 2222)
  • Kerberos V5 (RFC 2222)
  • SecurID (RFC 2808)
  • S/Key (RFC 2222)

LDAP服务器的支持SASL机制

前面的列表的机制,流行LDAP服务器(如OpenLDAP的,从甲骨文,和微软的)支持外部,DIGEST - MD5,并作为强制性LDAP的默认机制的Kerberos V5。RFC 2829建议使用DIGEST - MD5 v3服务器。

下面是一个简单的程序,找出LDAP服务器支持的SASL机制的列表。

/ /创建初始上下文
DirContext ctx =new InitialDirContext();

/ /读取从根DSE supportedSASLMechanisms
Attributes attrs = ctx.getAttributes(  
   
   
   
   
     "ldap://localhost:389", new String[]{"supportedSASLMechanisms"});

下面是在一个支持外部SASL机制的服务器上运行这个程序产生的输出。

   
   
   
   
{supportedsaslmechanisms=supportedSASLMechanisms: EXTERNAL, GSSAPI, DIGEST-MD5}

指定的认证机制

要使用特定的SASL机制,可以指定其互联网编号分配机构(IANA)注册机制的名称 Context.SECURITY_AUTHENTICATION环境属性。您也可以指定一个LDAP提供机制的清单尝试 。这是通过指定的空间分隔机制名称的有序列表 。LDAP提供程序将使用它找到一个实施的第一个机制。

下面是一个例子,要求LDAP提供商试图让DIGEST - MD5机制的执行情况,如果是这样的不可用,使用GSSAPI的一个。

   
   
   
   
env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5 GSSAPI");

从应用程序的用户,你可能会得到这样的认证机制,或者,您可能会通过调用类似前面显示的方法来要求LDAP服务器。LDAP提供者本身并不会咨询此服务器来获得相应的信息。它只是试图找到并使用指定的机制的实现。

在平台的LDAP提供内置,DIGEST - MD5的,和GSSAPI(Kerberos V5的)SASL机制的支持。您可以添加额外的机制的支持。

指定的认证机制的输入

一些机制,如外部不需要额外的输入-单机制的名称是足够的认证进行。外部的例子显示了如何使用外部的SASL机制 。

大多数其他机制需要一些额外的输入。根据这一机制,可能会有所不同类型的输入。以下是一些常见的输入机制。

  • 验证ID。执行身份验证的实体的身份。
  • 授权标识。访问控制检查如果认证成功,应作出实体的身份。
  • 认证证书。例如,密码或钥匙。

如果程序(如代理服务器)是代表另一个实体验证,身份验证和授权的ID可能会有所不同。验证ID指定使用的 Context.SECURITY_PRINCIPAL环境属性。它的类型java.lang.String 。

验证ID的密码/关键是指定使用的 Context.SECURITY_CREDENTIALS环境属性。它的类型是java.lang.String时,char数组的(char[]),或字节数组(byte[] )。如果密码是一个字节数组,然后它转化成一个 char 数组使用UTF - 8编码。

如果已设置的“java.naming.security.sasl.authorizationId”属性,然后使用它的值作为授权ID。它的值的类型必须是java.lang.String的。默认情况下,空字符串使用的授权ID,指示服务器,来自客户端的身份验证凭据的授权ID 。

DIGEST - MD5的示例演示如何使用Context.SECURITY_PRINCIPAL和Context.SECURITY_CREDENTIALS DIGEST - MD5验证的属性 。

如果一个机制需要输入已经描述过的以外,然后你需要定义一个回调机制,使用对象,您可以检查出在回调例如 JNDI教程 。这节课的下一部分将讨论如何使用SASL DIGEST - MD5认证机制。 SASL的政策 , GSS API(Kerberos V5的) 和 CRAM - MD5 机制是覆盖在JNDI教程。









你可能感兴趣的:(String,互联网,服务器,Authentication,byte,credentials)