- 1 信息安全简介
- 1.1 信息安全发展史
- 1.2 信息安全等级保护
- 2 安全 OS
- 2.1 UNIX 系统安全
- 2.1.1 设置健壮的密码
- 2.1.2 删除所有的特殊账户
- 2.1.3 关闭不需要的服务
- 2.1.4 远程登陆管理
- 2.1.5 限制 IP 访问
- 2.1.6 日志监控
- 2.2 Linux 系统安全
- Linux 安全设置手册
- Linux 服务器安全加固
- Linux 防火墙
- SELinux
- SSH 免密登陆
- 2.3 Windows 系统安全
- Windows 常见安全隐患
- 防火墙-Microsoft Defender
- 本章参考
- 3 访问控制技术
- 3.1 基于角色的访问控制 RBAC
- 基于 RBAC 的延展-用户组(租户)
- 示例 1:Python Django 后台管理
- 示例 2:Python flask_appbuilder 后台管理
- 3.2 认证
- 3.2.1 认证机制
- 3.2.2 OpenID
- 3.2.3 LDAP
- 3.2.4 Kerberos
- 3.2.5 数字签名
- 3.2.6 基于证书的认证
- 3.3 授权
- 3.3.1 OAuth
- 3.4 HTTPS
- 3.4.1 HTTPS 原理
- 3.4.2 证书
- 3.4.3 自签名证书
- 本节参考
- 案例
- 天网 MAZE 的信用卡机制
- S3 认证机制
- 云盘认证机制
- 双因子认证
- 扫码登陆
- 单点登陆 SSO
- 本章参考
- 4 安全编程
- 4.1 内存管理
- 4.2 安全编程实践
- 4.2.1 使用断言进行防止错误
- 4.3 语言相关的安全编码
- 4.3.1 net 中使用安全函数
- 4.3.2 PHP 代码执行漏洞
- 4.4 源码保护
- Java 源码保护
- python 源码保护
- 本章参考
- 5 安全算法
- 6 安全架构
- 云安全
- 云安全事件案例
- 云计算带来的安全挑战
- 应用:安全云/云查杀
- 业界案例
- 华为的安全白皮书
- 参考资料
- 附录
- 安全相关法律法规
- 个人信息安全
- 云安全标准与组织
- 国际
- 国内
3.2.1 认证机制
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论