0

我有一个 Web 服务,需要根据调用者的 id 设置结果。

将服务器上的接口定义为:

public String[] getUserLogFile(int userId){
    return logDAO.getLogs(userId);
}

登录时,Web 服务返回一个 userId。客户端可以在将来的调用中包含此 userId。但是,如果客户端设置了自己的 userId,调用者可以尝试其他 userId。这带来了安全问题。

识别 Web 服务调用者的最佳方法是什么?服务器是Java。客户端可以是 iPad、.Net、Android 等。

谢谢。J。

4

1 回答 1

1

一个简单但有效的安全策略是使用 SSL 保护您的 Web 服务,然后在每次调用时传递一个基本的身份验证标头。此设置的 SSL 部分至关重要。您的客户将在每次调用中包含以下形式的授权标头:

授权:基本 QWxhZGluOnNlc2FtIG9wZW4=

编码字符串是用户名和密码的串联,base 64 编码

Base64(username:password)

这照顾了客户端的责任。在服务器端,您要检查授权标头的所有传入呼叫。如果存在,对其进行解码,拆分用户名和密码,并使用这两条信息来验证请求。通常在身份验证时为用户创建一个安全主体,其中包含有关用户及其角色(或应用程序授权)的基本信息。为了提高效率,这项工作通常在网络过滤器中完成。我会推荐以下库,它们可以为您自动执行许多服务器端任务:

于 2012-11-20T06:27:00.360 回答