我需要为使用JAX-RS标准实现的REST API提供授权和身份验证,这些标准应从移动客户端和某些设备中使用。我有多个具有唯一设备标识的设备,它们可以发布一些数据。移动客户端仅使用GET请求来显示该数据。我更关心POST部分,我要在此对客户端进行身份验证。另外,我想保持简单。我正在考虑使用具有API key 的基于HTTPS的简单HTTP基本授权。我的问题是如何生成此API key ?

最佳答案

您可以看一下Shiro:http://shiro.apache.org这是“保护” API(授权,身份验证和其他有关安全性的东西)的很好的框架。您可以实现“基本身份验证”以“登录”您的用户(通过用户名/密码),然后向他们提供API key ,您可以使用该API key 执行“承载者 token 身份验证”,以允许他们访问以下用户的资源您的API。为此,您将定义shiro所谓的“过滤器”,该过滤器是通过API资源定义的...在“shiro.ini”中定义如下:

[main]
authcBasicRealm = com.yourapp.shiro.UserAuthenticatorRealm
tokenValidatorFilter = com.yourapp.shiro.BearerAuthenticationTokenFilter
tokenValidatorRealm = com.yourapp.shiro.BearerAuthenticationTokenRealm

[urls]
/rest/hello/login/** = ssl[8443], noSessionCreation, authcBasic
/rest/hello/hello = ssl[8443], noSessionCreation, tokenValidatorFilter

您需要实现/扩展一些Shiro默认过滤器,以使其与您的数据库一起使用来获取用户身份验证数据等。可喜的是,它们提供了许多工具来处理安全性问题,例如:生成API key ,盐和加密等。看看他们的教程,它们总体上很好。

还有其他框架,即Java EE支持安全性,Spring也提供安全性支持。看一下Mat Raible的一个非常不错的演示,他演示并演示了这三个框架:http://www.slideshare.net/mraible/java-web-application-security-denver-jug-2013

关于api - REST API key 生成策略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17949872/

10-10 17:47
查看更多