我调查创造一个现有的asp.net应用程序一个WCF REST服务,通过各种客户端,包括Windows Phone 7的,Android设备,iPhone应用程序等会员/授权通过REST服务
创建一个简单的消耗WCF REST服务和从上述平台上使用它不是问题,并且工作得很好。我正在努力争取我的头脑是授权。
该asp.net应用程序使用成员资格提供程序来提供身份验证和授权,我很乐意从REST服务使用该API。
如何保护我的REST服务,以便第一次调用必须进行身份验证(传递用户名和密码),并且以下调用知道谁已登录。我猜测认证方法将不得不传回某种令牌,以便在随后的调用中识别调用者。这是否足够安全,因为整个站点/服务都通过SSL?
欢迎任何建议。
我认为我更喜欢令牌方法,而不是在每个请求上发送用户名和密码。我知道这不是严格的RESTful,因为我将不得不维持状态,但在这种情况下,我很乐意接受这种状态。 – DavidGouge 2011-03-24 23:03:02
我看不出为什么你说这个令牌(即,如果我了解你,在cookie中的会话ID)更好。它使你的应用程序有状态,这是绝对不安宁的,让客户的生活更难,不是更安全(比较会话劫持),让服务器的生活变得更难(负载平衡在状态满的应用程序中要困难得多)......你能详细说明你为什么认为它更好? – 2011-03-25 06:59:34
其实我并不是故意将会话ID放入cookie中,而是在头中加入一些加密的令牌。这不会改变REST的无状态特性。因为你不需要在每个请求中发送密码,所以它会降低密码被盗的可能性。它也允许SSO场景:用户已登录到需要调用REST调用的应用程序,因此应用程序使用加密的令牌而不是密码。实际上登录后从未使用密码。 – Tarlog 2011-03-25 09:25:12