RESTful WCF 4服务中移动客户端的用户身份验证

So *_*ins 3 .net c# rest wcf restful-authentication

我正在尝试开发一个由移动客户端(iOS客户端,现在)使用的Web服务,我读到RESTful服务比SOAP服务轻得多,所以我想试试这个.

大多数方法都需要身份验证,但我不知道如何处理这个问题,因为我读REST应该是无状态的,所以如何验证从iOS访问服务的用户然后使用该身份验证来验证对其他人的连续调用网络方法?

注意:我将在IIS上使用WCF 4的WebHttp.

谢谢!

jos*_*wer 6

这样做有很多相当成熟的模式.

  • 最简单的这样做的方法是将提供的用户名:密码作为请求(查询字符串/形式的数据)的授权报头或一部分.这将要求您在每次通话时对用户进行身份验证/授权.或许对你不太理想,但是如果你正在使用WebHttp(如果你不是这个意思,我会认真看看WCF Web Api),在WCF中构建HttpModule或其他东西会相当容易通道堆栈拦截呼叫并验证用户.
  • 一种非常常见的方法是公开一个获取user:password并生成API令牌的端点.然后,用户获取该API令牌并使用它来验证后续调用.该令牌可以是从弱加密数据到由共享密钥,HTTP动词,请求资源等组成的散列中的任何内容.如果您使用谷歌"HMAC身份验证",您将找到几个这样的示例. Azure的身份验证方案是一个非常精细的令牌的示例.这种方法的好处在于,您有一个关注身份验证和构建令牌的端点,而您的其他端点只需要知道如何验证哈希或解密令牌; 一个很好的关注点分离.
  • 如果您希望API的使用者成为第三方应用程序,OAuth/OAuth2几乎是事实上的标准.