我在Jboss AS上运行了一个Java应用程序。我正在编写ios应用程序,我需要代码进行身份验证。
在Java应用程序上使用REST服务是否可行的方法是检查userName和密码哈希值。
现在我试试这个: 在Java上我写了REST方法:
@GET
@Path("/checkAuth/{userName}/{passHash}")
@Produces("application/json")
public AuthResult checkAuth(@PathParam("userName") String userName, @PathParam("passHash") String passwordHash) {
// code for checking hash of Password with that in SQL base
}
在IOS应用上:
NSString *authRequest = [ NSString stringWithFormat: pathToRestWithParams, login, md5PassHash];
NSURL *restURL = [NSURL URLWithString:authRequest];
NSMutableURLRequest *restRequest = [NSMutableURLRequest requestWithURL:restURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:180];
NSHTTPURLResponse *response = nil;
NSError *restError = nil;
NSData *authResult = [NSURLConnection sendSynchronousRequest:restRequest returningResponse:&response error:&restError];
安全吗?
我想为任何用户添加将返回会话密钥(在Java应用程序上生成)的Java代码。此会话密钥将与REST请求一起发送,以便从ios应用程序更新数据。
更安全吗?
答案 0 :(得分:0)
我的意见是否,因为它通过窃取会话ID更容易受到中间攻击的影响,而且MD5已经过时,现在你可以使用 SHA-256或512 对于散列和盐渍密码散列将提高安全性。 请参阅this link for more secure hashing
为了获得良好的安全性,您需要将加密(如AES-256 )应用于您的有效负载,尤其是对于身份验证服务和其他敏感数据传输。
的详情,请参阅此链接