如何在Web服务中实现安全性?

时间:2011-06-09 13:44:41

标签: web-services authentication

我有一个由移动应用程序调用的REST服务;我需要用户登录,然后该服务生成一个与用户ID相关联的唯一令牌,并且这对userId / token会传递给每次后续调用WS。

我不太喜欢这个解决方案,因为即使非常困难,如果我更改了uid并获得了正确的令牌,我可以“登录”为另一个用户,所以我试图了解哪个是最佳做法处理移动(和非)应用程序的Web服务身份验证。

2 个答案:

答案 0 :(得分:1)

您的问题不在于方法,而在于您的服务不检查UID和令牌的组合,而是检查令牌。这是一个编程问题,而不是方法论问题。

您需要多么安全的服务?你在谈论最高机密的安全级别吗?银行业?我的足球俱乐部网站?对于高级别的安全性,您可以使用数字证书,但它会使配置方法更加复杂。但是......即使您要从UID / Token(或AppId,User等)进行更改,您仍需要修复正确令牌+错误UID工作的事实。如果必须进行双形式身份验证,那就错了。如果您在服务器端没有正确的编程,更改方法将无法解决任何问题,以避免绕过系统。

您可能还想了解如何配置令牌。它是否应该脱机,或者是一种可以接受的REST注册方法。这可以回到您需要的安全级别。

答案 1 :(得分:1)

您可能想要忘记令牌/ ID解决方案并考虑使用SSL /基本身份验证路由。 SSL将提供加密和安全通信,但不会保护对服务器端特定Web服务的访问。 为此,您可以在每次调用时尝试标准的基本http用户/密码身份验证。这样您就不必担心通过每个REST调用维护状态。每个调用都将明确引用该用户。是的,您需要在每次调用时重新验证用户,这有点痛苦,但您可以缓存结果。 但是,我远不是这方面的专家。