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

来自JBoss的AeroGear是一个移动开发框架,提供用于移动连接的开源库。 它支持移动Web和混合动力,iOS和Android上的本机应用程序,以及服务器端资源,并具有对RESTEasy等现有项目的扩展。

AeroGear项目下有几个子项目,包括Android库,AeroGear连接性,AeroGear控制器,JavaScript库,AeroGear持久性,安全性,AeroGear服务器集成和iOS库。

AeroGear安全模块提供基于时间的一次性密码(OTP),并在服务器和客户端提供支持。 其他安全提供程序包括PicketLink和PicketBox库。

JBoss团队的Jay Balunas和Marius Bogoevici在JavaOne 2012大会上发表了有关使用AeroGear和PicketLink框架实现Java EE移动应用程序安全性的讲话。 InfoQ与Jay,Marius和Anil Saldhana谈了有关使用AeroGear框架进行移动开发以及如何保护移动应用程序的信息。

InfoQ: 与传统的客户端/服务器和Web应用程序相比,为移动设备开发安全应用程序有何不同?

JBoss团队:移动设备引入了新的使用模式,例如脱机操作以及对流量的更严格的要求-健谈的应用程序更快地消耗了电池电量,等等。此外,HTML 5的出现使富客户端应用程序的概念焕发出了新的活力,浏览器作为运行时平台。 在身份验证方法方面,经常需要使用社交媒体网站作为身份提供者。 随着移动设备的兴​​起以及员工希望在工作中使用其设备,各种组织都在积极探索将其服务器端应用程序扩展到移动设备的方法。

另外,移动设备更容易丢失,因此需要在设备上保护数据。 移动设备可以在不同的Wi-Fi区域和小区提供商区域中运行,并且需要保护传输中的数据免遭窃听。 移动设备可以安装多个应用程序,一个应用程序的私有数据不应泄漏到另一应用程序中。 通常由移动操作系统来解决,但是必须采取所有必要的预防措施。

将机密或专有数据和功能扩展到移动设备需要移动Web应用程序使用现有企业凭据进行身份验证。 AeroGear&PicketLink使这些企业移动应用程序可以使用移动应用程序中的现有身份验证标准。 因此,随着大量数据存储在客户端上,并且有更多的应用程序逻辑在客户端上运行,以及我们已经提到的所有其他挑战,旧模型中,您的应用程序的整个安全解决方案可以驻留在服务器端。不再适用。 当然,服务器仍然是看门人,但是针对移动应用程序的现代安全解决方案需要客户端与服务器之间更智能的协作模型。

InfoQ: AeroGear框架的主要目标和理念是什么?

JB: AeroGear从一个开源项目开始,致力于使主要移动客户端的移动应用程序开发更加轻松,并为这些新客户端和开发人员扩展JavaEE服务器功能的功能。

我们的一些特定哲学是:

  • 移动Web,Hybrid(专注于Apache Cordova)和Native(专注于iOS和Android)都是有效的客户端开发平台。
  • 在客户之间使用一组通用的动词和概念,但是针对给定平台定制开发经验。
  • 将JavaEE的最佳部分扩展到当前的客户端以及更多客户端。
  • 关注企业,因此安全性,基于服务器的持久性和编程效率是关键。

InfoQ: 在今年的JavaOne大会上,您谈到了如何使用AeroGear和PicketLink框架在基于Java的移动应用程序中提供端到端安全性。 您能否进一步讨论,这两个框架如何相互补充以提供安全的移动应用程序?

JB: PicketLink为通用服务器端企业Java安全框架提供了解决方案。 AeroGear在此基础上构建,添加了既可以根据移动应用程序的需求定制PicketLink功能的服务器端组件,也可以添加客户端组件,以构建与Web应用程序交互的富Web,混合和本机Android / iOS应用程序。服务器端。

此外,如上所述,安全性和身份管理是企业在日常活动中使用移动设备的关键。 AeroGear将与PicketLink合作,为移动应用程序提供各种类型的身份验证,从传统的LDAP到更新的基于OAuth的安全选项。

InfoQ: 使用AeroGear框架开发移动Web和混合应用程序的工具支持什么?

JB: AeroGear附带了一组简化移动开发人员任务的工具和框架。

在IDE方面,JBoss Developer Studio(JBDS)为使用Aerogear开发移动应用程序提供了支持,我们正在努力在JBDS中集成用于更高级的混合和JavaScript开发的功能。 同时,Arquillian项目在各种“容器内”和“设备上”测试方法上也取得了进展。 然后在Forge上,我们希望在尝试使用混合RAD之前加快HTML5和REST插件的速度。

在谈论第三方工具或框架时,AeroGear专注于Apache Cordova用于混合应用程序。 对于JavaScript,我们在内部使用jquery,但查看的集成选项包括Backbone.js,Angular.js等。

InfoQ: 对移动应用程序进行单元测试和在模拟器上进行测试的测试支持是什么?

JB: Arquillian及其扩展Drone和Warp提供了用于运行服务器端和客户端测试的复杂生态系统。 这不仅包括基于Web的应用程序(包括HTML5应用程序),还包括通过Arquillian Android进行的本地移动应用程序。

InfoQ: PicketLink支持哪些安全框架/库?

JB: PicketLink是其自身的安全框架,因此它提供了用于实施各种安全标准的解决方案。 它支持包括传统用户/凭证模型在内的身份验证机制,以及包括Kerberos,SAML,OTP,DIGEST在内的高级机制以及包括精细权限模型,XACML,基于Drools规则的授权在内的访问控制机制。 PicketLink支持身份存储,这些身份存储可以是LDAP兼容的目录服务器和数据库。 还支持OAuth2资源授权。 与Apache DeltaSpike的集成使其可以潜在地与其他安全库(例如Apache Shiro)进行互操作。

InfoQ: 使用PicketLink时,安全性(特别是身份验证和授权)在移动设备中如何工作?

JB:我们不仅将对话仅限于PicketLink,还应在讨论中包括Aerogear。 这就是为什么。 根据设计,PicketLink在服务器端运行。 在那里,使用解耦的身份验证/授权模型,它可以将各种身份管理源和身份验证过程与不同的授权策略结合在一起,从而使开发人员可以保护应用程序逻辑的各种访问点-例如RESTful端点或业务方法。 除此之外,Aerogear在服务器端还提供了通过其控制器保护URL的机制。 但是移动应用程序也可以充分利用客户端的安全性(即使最终的安全仲裁者是服务器),因为PicketLink提供了用于编写身份验证和复杂的授权/权限模型的工具,可以在移动设备上使用它们,以最大程度地减少服务器混乱,通过在客户端上缓存权限并在其中执行某些授权,这对于移动应用程序具有明显的好处。 这就是Aerogear通过其客户端库增加价值的地方。

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

InfoQ:这 两个项目的未来路线图是什么?

JB:对于AeroGear,我们的初始版本集中在围绕查询和页面调度的安全持久性的基础上。 将PicketLink Identity Management和控件集成到我们的客户端访问API中,可以轻松安全地开发传统企业应用程序,但是可以在您选择的移动客户端(Web,混合或本地)中进行。 我们计划在2013年初发布1.0.0.Final版本。

真正令人兴奋的部分是我们可以在此基础上建立什么。 当前,我们正在讨论跨客户端数据同步,统一的本地推送(具有非本地后备和IDM集成),消息传递(CDI,JMS等),脱机安全持久性,客户端bean验证等功能。

对于PicketLink项目,路线图发布在此链接上

他们的目标也是在2013年初发布PicketLink v3。

关于被访者

Marius Bogoevici是Red Hat的一名高级软件工程师,并且是JBoss Developer Framework参考应用程序TicketMonster的架构师。
Anil Saldhana是JBoss的首席安全架构师。 他是JBoss社区项目PicketLink的创始人。
Jay Balunas是Red Hat的移动平台架构师,并且是AeroGear项目的创始人。

翻译自: https://www.infoq.com/articles/javaee-mobile-application-development-aerogear/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值