返回介绍

3.2.1 认证机制

发布于 2024-10-03 16:34:02 字数 2970 浏览 0 评论 0 收藏 0

SASL

SASL(Simple Authentication and Security Layer,简单认证和安全层)是一种用来扩充 C/S 模式验证能力的机制。在 Postfix 可以利用 SASL 来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。

SASL 支持多种认证方法,主要包括以下几种:

  • Anonymous:匿名,无须认证
  • PLAIN:最简单也是最危险的机制,信息采用明文密码方式传播。
  • DIGEST-MD5:与 HTTP Diges 兼容的安全机制。
  • GSSAPI: Generic Security Services Application Program Interface(通用安全服务应用程序接口),GSSAPI 本身是一套 API,由 IETE 标准化。其最主要的实现是基于 kerberos。所以一般 GSSAPI 暗指 Kerberos.

JAAS

Java Authentication Authorization Service(JAAS,Java 验证和授权 API)提供了灵活和可伸缩的机制来保证客户端或服务器端的 Java 程序。Java 早期的安全框架强调的是 通过验证代码的来源和作者,保护用户避免受到下载下来的代码的攻击。

JAAS 强调的是通过验证谁在运行代码以及他/她的权限来保护系统免受用户的攻击。它让你能够将一些标准的安全机制,例如 Solaris NIS( 网络信息服务 )、Windows NT、LDAP(轻量目录存取协议),Kerberos 等通过一种通用的,可配置的方式集成到系统当中去。

JAAS 已经整合进了 Java 2 SDK 1.4,作为标准的 用户认证 与授权模型。

一旦执行代码的用户通过了认证,JAAS 授权组件将和核心 Java 访问控制 模型一起工作,来保护对敏感资源的访问。

JAAS 核心类和接口

  • JAAS 相关的核心类和接口分为三类,公共、认证和授权。
  • 公共类:Subject,,Principal,Credential
  • 认证类和接口:LoginContext,LoginModule,CallbackHandler,Callback
  • 授权类 :Policy,AuthPermission,PrivateCredentialPermission

详细的描述请参考《JAAS Reference Guide》。

范例程序的代码分为两部分,一部分为主程序,执行用户认证过程,

源程序如下(CountFiles.java) :

package samples;

import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import com.sun.security.auth.callback.TextCallbackHandler;

public class CountFiles {
  static LoginContext lc = null;
  public static void main(String[] args) {

    //使用配置文件中名字为`CountFiles`的条目
    try {
      lc = new LoginContext("CountFiles", new TextCallbackHandler());
   } catch (LoginException le) {
     le.printStackTrace();
     System.exit(-1);
   }

   try {
     lc.login();
     //如果没有异常抛出,则表示认证成功
   } catch (Exception e) {
     System.out.println("Login failed: " + e);
     System.exit(-1);
   }

   //以认证用户的身份执行代码 CountFilesAction.run
   Object o = Subject.doAs(lc.getSubject(), new CountFilesAction());
   System.out.println("User " + lc.getSubject( ) + " found " + o + " files.");
   System.exit(0);
  }
}

说明:主程序包含了三个重要的步骤:首先构造一个 LoginContext 对象,然后使用这个对象进行登录,最后,把用户作为 doAs 方法一个参数,CountFilesAction 为用户想要执行的具体操作。

源程序如下 (CountFilesAction.java) :

package samples;

import java.io.File;
import java.security.PrivilegedAction;

class CountFilesAction implements PrivilegedAction {
  public Object run() {
   File f = new File(".");
   File[] files = f.listFiles();
   return new Integer(files.length);
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文