web-services - 创建 TOKEN 系统以验证 Web 服务调用的最佳方法?

标签 web-services security authentication authorization token

我想创建一个可以被各种平台调用的Web服务架构,例如移动设备,winforms应用程序,iphone,黑莓,你说的。因此,使用 WCF 和 wsHttp 绑定(bind)之类的东西可能会杀死这一点,我需要降级到 basicHttp 绑定(bind)以实现兼容性。

话虽如此,我需要一个系统在初始登录(身份验证)时生成一个 token ,然后将此 token 用于所有后续调用,我猜,以验证身份验证并允许执行该方法。

任何人都有关于如何解决这个问题的提示或建议? 1) 生成 token 以及安全 token 涉及什么? 2) token 可以使用多长时间,一些用户可能会使用他们的应用程序数小时,甚至可能“休眠”他们的计算机

谢谢你的建议。

最佳答案

如果您只使用服务器在初始身份验证时提供的一个 token ,则如果它被拦截,它可以用于任何请求。您唯一的防御是到期时间。

除此之外,这取决于您的实现选项是什么。

一个更安全的系统是为每个请求添加一个时间戳(可能还有一个随机数),对其进行签名,并将其包含在每个请求中。它要求客户端处理身份验证凭据,了解签名实现并对每个请求进行签名。

您可以交替地让服务器对每个请求进行身份验证(可以使用 OpenID 完成),或者分发一些 token 并在需要更多 token 时重新进行身份验证(可以使用 OAuth 完成)。如果客户端可以存储凭据,则这些对用户来说是不可见的。这些更复杂,需要加密传输(例如 SSL)用于某些交互,以及可以说出 HTTP 重定向并处理 cookie 或其他存储状态的客户端。客户端不必知道如何签名,但如果您可以使用 SSL,那么您可能一开始就不需要复杂性。

如果您不需要与客户端无关,您可能想要签署请求。

对于签署实现、示例和库,请查看 Amazon Web Services、OpenID 或 OAuth。

关于 token 到期时间,这取决于您的需求。更长的 token 生命周期会增加窗口重放攻击。 nonce 使 token 一次性使用,但需要服务器上的更多状态。

关于web-services - 创建 TOKEN 系统以验证 Web 服务调用的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1432664/

相关文章:

php - 如何在 php 中读取传入的 SOAP 请求

php - 请批评这个PHP登录脚本

web-services - 保护使用 Web 服务的移动应用程序的最佳实践

php - 如何使用 Javascript 获取 URL 变量

javascript - 使用 javascript 确定用户是否登录到 Joomla

javascript - asp.net Web 服务和 json 结果中的额外报价!

web-services - 一个网络服务监控工具

java - JAX-WS 客户端 - 将连接超时和请求超时设置为命令行选项

.net - 内存随机化作为应用程序安全增强?

mysql - 无法连接到主机 'Name Cheap' 上运行的 MySQL