使用AeroGear框架进行Java EE 移动应用开发

AeroGear是JBoss所推出的一个移动开发框架,它为一些开发类库提供了移动设备的连接能力。它支持在iOS和Android设备上开发web、混合与原生移动应用的开发,还包括了相应的服务端资源,并且加入了对RESTEasy等现有项目的扩展。

在AeroGear项目下还有若干个子项目,包括Android Library、AeroGear Connectivity、AeroGear Controller、JavaScript Library、AeroGear Persistence、Security、AeroGear Server Integration以及iOS Library等等。

AeroGear Security模块提供了基于时间的一次性密码(OTP)功能,支持服务端与客户端的开发,其它的安全provider还包括PicketLink和PicketBox等类库。

来自JBoss的Jay Balunas与Marius Bogoevici在JavaOne 2012大会上的演讲中介绍了使用AeroGear与PicketLink框架实现Java EE移动应用的安全性的话题。InfoQ与Jay、Marius和Anil Saldhana进行了一次对话,谈论了使用AeroGear框架进行移动开发,以及如何保证移动应用安全性的话题。

InfoQ:在移动设备上开发安全的应用,和传统的客户端/服务器以及web应用程序相比有什么不同呢?

JBoss团队:移动设备带来了新的使用方式,例如离线操作,以及对流量更严格的控制要求,因为包含大量请求的chatty式应用会很快耗光你的电池。此外,HTML5的出现重新振兴了富客户端应用,而浏览器而成为了运行时平台。关于认证的方式,使用社交网站的帐号作为身份提供者已经成为了一种常见的需求。随着移动设备的不断涌现,员工们也希望能够使用他们的移动设备完成工作,因此各组织也积极地寻求将它们的服务端应用程序扩展到移动设备上的方法。

另外,移动设备遗失的可能性更大,因此设备上的数据必需被保护起来。移动设备可以在各种Wifi范围和通信服务提供者的范围中使用,因此必须对传输中的数据进行保护以避免被窃取。一台移动设备上可以安装多个应用,每个应用的私有数据应该保证不会泄漏到另外的应用中。通常来说移动操作系统会保证这一点,但还是要对这一点提高警惕。

如果在移动设备上要实现访问机密或专利数据的功能,移动web应用就必须使用现有的企业证书进行身份认证。AeroGear和PicketLink允许这些企业移动应用使用现有的移动应用认证标准。因此,大量的数据转移至客户端,更多地应用逻辑在客户端运行,以及我们所提到过的各种挑战,使得将应用程序的整个安全方案全部放在服务端这种老式的模型已经不再可行了。当然,服务端依然是安全的最后屏障,但现代化的移动应用安全方案需要在客户端与服务端之间存在一种更智能的协作模型。

InfoQ:创建AeroGear框架的主要目标和宗旨是什么?

JBAeroGear是作为一个开源项目创建的,它关注的是简化跨多个主流移动客户端进行移动应用开发的难度,并且将Java EE服务端的功能扩展到这些新的客户端中,供开发者使用。

以下是该项目的一些宗旨:

移动web,混合应用(专注于Apache Cordova)和原生应用(专注于iOS和Android)都是有效的客户端开发平台。

在多个客户端中使用一套通用的动词和概念,而针对特定的平台对开发体验进行优化调整。

将Java EE中最好的功能扩展到当前和今后的客户端中。

关注于企业应用,因此安全性、基于服务端的持久化和编程效率是关键所在。

InfoQ:在今年的JavaOne大会上,你们谈到了使用AeroGear和PicketLink框架为基于Java的移动应用提供端到端的安全性。你们能否深入地讲一讲这个话题,并谈一谈这两个框架是如何互相合作,以实现安全的移动应用的吗?

JBPicketLink提供的解决方案是针对一个通用目的的服务端企业级Java安全框架,而AeroGear建立在它之上,一方面它提供的服务端组件对PicketLink的功能进行了调整,以适用于移动开发的需要。另一方面又提供了客户端组件,基于它创建的富web、混合应用和原生Android/iOS应用将与服务端进行交互。

此外,如同之前提到的那样,对于企业移动应用中每天的活动来说,安全与身份管理是关键所在。AeroGear将配合PicketLink,为移动应用提供各种不同的认证方式,从传统的LDAP方式到当今的基于OAuth的安全选项。

InfoQ:是否有工具支持使用AeroGear框架开发移动web与混合应用呢?

JBAeroGear在推出时就有一系列工具和框架作支持,简化了移动开发者面临的各种任务。

关于IDE方面,JBoss Developer Studio(JBDS)提供了对使用AeroGear开发移动应用的支持,我们正致力于将更多的高级混合应用开发与JavaScript开发的功能整合到JBDS中。同一时间Arquillian项目也取得了进展,它提供了各种“容器内”和“设备上”的测试方式。我们也正在争取先将HTML5和REST功能以插件形式提供给Forge,之后才会尝试创建一个混合式应用的快速开发工具。

关于第3方工具与框架方面,AeroGear开发混合应用时会专门于Apache Cordova。在JavaScript方面,我们在内部已经使用了jQuery,但也在考虑将Backbone.js、Angular.js和其它类库整合进来。

InfoQ:在对移动应用进行单元测试,以及在模拟器上进行测试方面有没有提供某种形式的支持呢?

JB:Arquillian以及它的扩展Drone和Warp为运行服务端测试与客户端测试提供了一套精密的系统。它不仅支持基于web的应用(包括HTML5应用),也能够通过Arquillian Android支持原生移动应用的测试。

InfoQ:PicketLink支持怎样的安全框架与类库?

JBPicketLink本身就是一个安全框架,因此它自带的方案就能够实现各种安全标准了。它支持各种认证机制,包括传统的用户/凭据模型,以及各种高级认证机制,包括Kerberos、SAML、OTP、DIGEST等。它还支持各种访问控制机制,包括细粒度的权限模型、XACML、基于规则的Drools认证等等。PicketLink支持兼容LDAP的目录服务器和数据库的身份信息存储。对资源进行OAuth2授权也是受支持的。另外,它还能够与Apache DeltaSpike进行整合,这样就能够与其它安全性类库(例如Apache Shiro)进行互操作了。

InfoQ:在使用PicketLink时,安全功能——尤其是认证与授权是如何在移动设备中工作的呢?

JB我们谈论的内容不仅限于PicketLink,也应该包括AeroGear。原因在于:PicketLink在设计上是在服务端进行操作的。那么,只要使用一个解耦的认证/授权模型,它就能够整合多种身份管理源与认证过程,并可设定不同的授权策略,以允许开发者对应用逻辑的各种访问点,例如RESTful的终结点或业务方法调用进行保护。除此之外,AeroGear在服务端为保护它的controller中的URL也提供了机制。但移动应用也可以利用客户端的安全性(即使最终的安全性主宰者还是在服务端)。PicketLink还提供了编写认证与复杂的授权/权限模型,在移动设备上使用它可以将服务端的通信降至最少,因为权限信息可以缓存在客户端,因此某些授权操作就可以在这里实现。这种方式能够为移动应用带来实实在在的好处。AeroGear通过这种客户端类库的方式为系统增添了价值。

另一方面,也可以在服务端进行安全性检查,以保持移动应用的轻量级。PicketLink为复杂的授权工作流提供了对OAuth2的支持。

InfoQ:这两个项目未来的路线图是怎样的呢?

JB对于AeroGear,我们的首个发布会专注于安全持久化的基础,以及查询和分页。将PicketLink的身份管理和控制功能整合到我们的客户端API中,可以使完全地开发传统的企业应用变得简单,而且是在你所选择的移动客户端(web、混合应用或原生应用)实现的。我们计划在2013年早期发布最终的1.0.0版本。

基于这个框架所能开发出来的应用是非常令人激动的,我们现在正在讨论一些新功能,比如跨客户端的数据同步、统一的原生push(在非原生环境下能够自动降级,并加入了IDM的整合)、消息传递(CDI、JMS等等)、离线的安全持久化、客户端对象验证,以及更多的功能。

关于PicketLink项目,路线图可以在这个链接中找到。

他们的目标也是在2013年早期发布最终的PicketLink v3版本。

关于受访者

Marius Bogoevici是Red Hat的一名高级软件工程师,他也是JBoss Developer Framework参考应用TicketMonster的架构师。

Anil Saldhana是JBoss的首席安全架构师,他也是JBoss社区中PicketLink项目的创始人。

Jay Balunas是一Red Hat的一名移动平台架构师,也是AeroGear项目的创始人。

查看英文原文:Java EE Mobile Application Development using the AeroGear Framework

你可能感兴趣的:(使用AeroGear框架进行Java EE 移动应用开发)