REST API密钥生成策略

Sal*_*lil 12 authentication api rest jax-rs

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

emg*_*lva 9

你可以看看Shiro:http://shiro.apache.org这是一个非常好的"安全"API框架(授权,身份验证和其他安全的东西).您可以实施"基本身份验证"以"登录"您的用户(通过用户名/密码),然后为他们提供API密钥,您可以使用该密钥执行"承载令牌身份验证"以允许他们访问资源你的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
Run Code Online (Sandbox Code Playgroud)

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

还有其他框架,即Java EE支持安全性,Spring也提供安全支持.看看Mat Raible的这个非常好的演示文稿,他将展示和演示这三个框架:http://www.slideshare.net/mraible/java-web-application-security-denver-jug-2013


Sal*_*lil -2

发现了一些不错的文章,消除了我对 API 密钥的生成以及使用它们进行身份验证的疑虑:

http://restcookbook.com/Basics/loggingin/ http://www.smartjava.org/content/protect-rest-service-using-hmac-play-20