使用 Apache Shiro 保护 RESTful Web 服务

Posted

技术标签:

【中文标题】使用 Apache Shiro 保护 RESTful Web 服务【英文标题】:Securing RESTful web service using Apache Shiro 【发布时间】:2013-12-29 21:14:55 【问题描述】:

我目前正在使用 Jersey 框架作为后端(对于 Ipad\Iphone 应用程序)使用 Java 构建 RESTful Web 服务,此时我试图找出我的安全性(身份验证和授权)实现API,我遇到了 Basic、digest 和 Oauth,但当时我的 API 还没有完全开发,所以我认为 Oauth 对我来说似乎有点矫枉过正......

我的问题是,虽然 Apache Shiro 看起来很容易掌握,但从长远来看,随着我的 API 逻辑的增长,它是否可以用于保护 RESTful Web 服务?

【问题讨论】:

好奇的问题:是什么促使您从头开始构建整个 API 平台? 嗯,API 实际上是我公司正在开发的 Ipad 应用程序的后端。所以它只是为前端提供服务,如果不是从头开始,那还有什么? 与从头开始构建相比,有很多很棒的选择:Sails.js 等开源项目或Apigee 等免费 API 后端提供程序;两者都已设置好并准备好管理身份验证等事务。 谢谢!嗯,这很酷我想研究 Apigee,如果它可以节省我的开发时间并从头开始设置它,如果你能建议一个像我这样的新手让我开始做这件事的地方会非常有帮助吗? 它真的会——有点像救生员。他们的医生现在好多了。从这里开始:apigee.com/usergrid 您可以在沙盒集合中玩耍并开始添加数据/用户/任何方式。 【参考方案1】:

Shiro 非常可定制。它提供了用于进行身份验证和授权的接口。如果您需要将身份验证从 Basic 更改为 Oauth,您只需实现一个新类并将其插入即可。

要查看的接口是 RealmAuthenticatingRealmAuthorizingRealmSubjectAuthenticationTokenSimpleAuthorizationInfo

【讨论】:

听起来很有希望,所以我可以从基本或摘要开始,然后转到 Oauth。我考虑的另一点是我被要求在 REST API 中实现 SSO,而 shiro 声称它是裁缝为它而生!

以上是关于使用 Apache Shiro 保护 RESTful Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

用于保护 REST api 的 Apache Shiro

Apache Shiro 使用手册Shiro架构介绍

Apache Shiro 使用手册Shiro架构介绍

Apache Shiro权限框架理论介绍

一颗赛艇——Apache Shiro框架简单总结

使用 Java 和 apache HttpClient 的 Apache Shiro authcBasic 身份验证