写点什么

访谈与书摘:Masoud Kalali 的《GlassFish 安全》

  • 2011-02-03
  • 本文字数:2335 字

    阅读完需:约 8 分钟

Masoud Kalali 编著的《GlassFish 安全》涵盖的内容有:Java EE 安全模型;如何在Java EE 应用中设计开发安全的Web、EJB 模块,并将它们部署到 GlassFish 服务器环境中。Masoud 在书里还详细介绍了 GlassFish 应用服务器和 OpenDS 目录服务器的安装及配置,OpenDS 主要用来实现基于轻量级目录访问协议(LDAP)的用户认证和授权。

本书还介绍了用 OpenSSO 框架实现单点登录(SSO)的解决方案,其中包括用 RESTful Web Services 对用户进行认证和授权、通过 OpenSSO 解决方案确保 Java EE 应用和 Web Services 的安全。

InfoQ 就此书对 Masoud 进行了采访,和他讨论了写作动机、Java EE 6 里的安全新特性及其他一些话题。此外,InfoQ 还为读者准备了本书的书摘(第三章:设计、开发安全的Java EE 应用;778 KB 的PDF)。

InfoQ:你为什么编写这本书呢?

Masoud Kalali:写这本书的原因有很多,但最主要的还是以下几点:

开发人员清晰地理解安全、尤其是 Java EE 安全是很重要的,这就是写这本书最重要的原因。我认为对 Java EE 领域的开发人员来说,掌握 Java EE 安全的基础知识至关重要,所以在书里我用简单却详尽的方式对安全进行了阐述。

另一方面,GlassFish 是一款优秀的应用服务器产品,要在生产环境中使用 GlassFish,理解它的安全机制是很有必要的。

最后就是想用比参考文档更容易理解的方式,向那些对安全感兴趣的开发人员介绍 Java EE 6 引入的安全新特性。

InfoQ:对 Java EE 6 引入的安全新特性,你是怎么看的?

Masoud:和 Java EE 的其他服务、组件相比,安全并没有太多的变化。EJB 和 Web 层在 Java EE 5 和 Java EE 6 里都有非常大的变化,再看看安全,尽管 Java EE 6 在平台安全方面添加了一些新鲜气息,但我觉得我们仍然有进步的空间。

InfoQ:Web 层组件 Servlet 现在可以通过声明(@ServletSecurity 注解)和编程方式(HTTPServletRequest 接口增加的 login 和 authenticate 方法)支持认证。你如何看待 Web 层提供的这种安全支持?

Masoud:现在的开发和部署都从 XML 描述符转向了注解,增加注解符合这一趋势。但编程方式的安全增强则更有意思一些,login、logout 这些方法能让开发人员更好地控制认证和授权过程。很高兴 Java EE 平台能有更好的安全特性。

InfoQ:和 Spring 安全 3 等其他安全框架相比,Java EE 6 里的安全新特性怎么样?

Masoud:我觉得不能简单地把 Java EE 平台安全和 Spring 安全放在一起比较,顾名思义,前者是平台级的,后者只是基于平台构建、处理更细粒度需求的框架。当我们通盘使用 Spring 框架,或者软件架构师确信系统不需要十分细致的安全集成方案时,使用 Spring 安全就可以了。

Java EE 平台提供的安全机制无法满足需求的时候,我倾向于使用 OpenSSO 之类的产品,OpenSSO 不仅能非侵入式地和 Java 应用集成,还可以让 Java 应用从本地或通过 RESTful 接口调用其他编程语言,从而使用相同的基础设施。

InfoQ:安全相关的其他 JSR 是怎样和 Java 安全模型保持一致的呢?比如 JASPIC(Java Authentication Service Provider Interface for Containers, JSR 196 )和 JACC(Java Authorization Contract for Containers, JSR 115 )。

Masoud:众所周知,产品的可插拔性和扩展性在产品需要添加新特性的时候非常有用。我们发现,当产品 A 支持的契约接口同样被其他类似产品支持的时候,可插拔性会更加重要。

JSR-196 和 JSR-115 这两个规范提供的大纲和契约接口统一了 Java EE 应用服务器的认证和授权模型。

JSR-196 的目标对象不是应用开发人员,而是框架和安全产品的开发人员,因为它能简化不同认证模型和 Java EE 应用服务器之间的集成。使用 JSR-196 SPI,开发人员可以开发自己的认证模块、把该模块插入应用服务器、对认证模块进行配置,并拦截服务器和客户端之间传输的消息。可以在四个点进行消息拦截:

  1. 客户端,请求发送给服务器之前。
  2. 服务器端,目标服务接受客户端请求之前。
  3. 服务器端,给客户端返回响应之前。
  4. 客户端,处理服务器响应之前。

消息拦截的使用示例可以参看 GlassFish 应用服务器的消息安全, Metro Web Services 框架就是利用消息拦截提供了容易配置、容易管理的 Web Services 安全。

JSR-196 的另一个应用场景是把 OpenID 等“none-supported”的认证模型集成到应用服务器当中,然后在部署到应用服务器里的应用中使用这些认证模型。

我们一提到安全,首先想到的两件事情就是认证和授权,正如我前面所说的,JSR-196 为 Java EE 应用服务器提供了统一的验证机制。JSR-115 提出的 SPI 则允许模块开发人员用自己的逻辑定义主体、定义角色、检查主体是否具有特定的角色,从而为支持 JSR 的 Java EE 应用服务器增加新的授权模型。

InfoQ:你希望 Java EE 后续的版本中能增加哪些安全特性呢?

Masoud:我希望能让开发人员更自由地控制整个认证和授权过程,不论使用缺省配置还是使用自己的配置和定制。目前,有些框架有专门的安全层,比如 Seam ;还有些框架给开发人员提供了很不错的安全方法定制,比如 Spring 安全;我期望能有一些基于角色的访问控制,也期望 SSO 能更加广泛地应用。OpenSSO、Oracle 访问管理器、IBM Tivoli 访问管理器等访问管理产品现在都开始支持刚刚提到的这些功能、以及很多其他的安全集成特性了。

InfoQ:谢谢你接受我们的采访。最后一个问题,你喜欢的 IT 类图书和非 IT 类图书分别是什么?

Masoud:说到 IT 类图书,我喜欢《大型软件体系结构:使用UML 实践指南》,最喜欢的非IT 类图书则是《魔戒》系列。

查看英文原文: Interview and Book Excerpt: Masoud Kalali’s GlassFish Security


感谢王丽娟对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011-02-03 00:002158

评论

发布
暂无评论
发现更多内容

多线程、分布式、高并发都不懂?你拿什么跳槽?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

云时代的到来会淘汰运维人员吗?运维工作可以一直做吗?

行云管家

云计算 运维 云服务 IT运维 云时代

终于有人把TCP协议与UDP协议给搞明白了

编程菌

Java 编程 程序员 计算机 java技术宅

经济学人:若比特币价格清零会怎样?

CECBC

金融助力补链强链 科技发挥关键作用

CECBC

机会!痛点!难点!中国游戏泛娱乐企业出海攻略全解析

环信

游戏出海 直播 社交APP出海 泛娱乐社交

给Arm生态添把火,腾讯Kona JDK Arm架构优化实践

腾源会

开源 腾讯 jdk 腾讯开源 KonaJDK

银行小程序隐私安全如何做?诊疗一体,一步到位

WeTest

太为难我了,阿里面试了7轮(5年经验,拿下P7岗offer)

Java 编程 程序员 架构 面试

去哪儿网数据同步平台技术演进与实践

Qunar技术沙龙

数据库 数据中台 ES 数据同步 Kafk

腾讯WeTest零售行业质量解决方案

WeTest

架构师训练营-毕业设计

俞立夫

“区块链”赋能智慧社区,多维度提升管理质效

旺链科技

区块链 智慧社区

工具 | 使用 CLion 编译调试 MySQL 8.0

RadonDB

MySQL 数据库

EMQ 映云科技成为开源项目 Vue.js 定期捐赠者

EMQ映云科技

Java 开源 大前端 emq

底层即真理!Netty+Redis+ZooKeeper解读高并发架构

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

架构实战营毕业总结

俞立夫

架构实战营

好评如潮,PerfDog两年迭代正式启动商业化探索

WeTest

云原生 | 混沌工程工具 ChaosBlade Operator Node 篇

RadonDB

数据库 云原生 混沌工程

阿里这份15w字Java核心面试笔记!GitHub凭借百万下载量位居榜首

Java~~~

Java 架构 面试 微服务 多线程

容器化 | ClickHouse on K8s 部署篇【建议收藏】

RadonDB

数据库 Kubernetes Clickhouse

二本渣渣5面阿里,从准备简历到“直怼”面试官,经历了什么?

Java 程序员 架构 面试 计算机

堡垒机品牌就认行云管家!为什么呢?

行云管家

云计算 系统运维 堡垒机 IT运维 云计算运维

Fil今日价格行情?Fil未来多少钱一枚?

区块链 分布式存储 IPFS fil价格 fil行情

容器化 | ClickHouse on K8s 基础篇

RadonDB

数据库 Kubernetes Clickhouse

八家知名大厂联合手写的Java面试手册刚上线!竟就到达巅峰?

Java~~~

Java 架构 面试 JVM 多线程

基于KubeEdge实现中国移动10086客服云边协同平台

华为云原生团队

云计算 开源 运维 边缘计算 边缘技术

多张图片的形式

冇先生

业界良心啊!第五次更新的Spring Cloud Alibaba升级太多内容

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

IM开发技术学习:揭秘微信朋友圈这种信息推流背后的系统设计

JackJiang

即时通讯 IM 微信朋友圈

牛客网论坛最具争议的Java面试成神笔记,GitHub已下载量已过百万

Java~~~

Java 架构 面试 算法 架构师

访谈与书摘:Masoud Kalali的《GlassFish安全》_Java_Srini Penchikala_InfoQ精选文章