我有一个网络服务,需要根据来电者的ID设置结果。
很容易将服务器上的接口定义为:
public String[] getUserLogFile(int userId){
return logDAO.getLogs(userId);
}
登录时,Web服务返回userId。客户端可以在将来的呼叫中包含此userId。但是,如果客户端设置了自己的userId,则调用者可以尝试其他userId。这会带来安全问题。
识别Web服务调用者的最佳方法是什么?服务器是Java。客户端可以是iPad,.Net,Android等。
感谢。学家
答案 0 :(得分:1)
一个简单但有效的安全策略是使用SSL保护您的Web服务,然后在每次调用时传递basic authentication header。此设置的SSL部分是 严重 。您的客户端将在每次调用中包含以下格式的授权标头:
授权:基本QWxhZGluOnNlc2FtIG9wZW4 =
编码字符串是用户名和密码的连接,base 64编码
Base64(username:password)
这照顾了客户方的责任。在服务器端,您要检查授权标头的所有传入呼叫。如果存在,请对其进行解码,拆分用户名和密码,并使用这两条信息对请求进行身份验证。通常在身份验证时为用户创建安全主体,包含有关用户及其角色(或应用程序授权)的基本信息。为了提高效率,这项工作通常在网络过滤器中完成。我建议使用以下库来自动执行许多服务器端任务: