我建立一个自托管WCF服务,这暴露2端点为每个服务REST WCF认证
- SOAP
- REST
的SOAP使用WS- * SOAP身份验证(身份验证标头) 我该如何去实现REST身份验证?
我想到了某种形式的登录方法将返回某种类型的饼干,但我想不出如何使这个透明单位所有我的电话..
感谢。去这个
我建立一个自托管WCF服务,这暴露2端点为每个服务REST WCF认证
的SOAP使用WS- * SOAP身份验证(身份验证标头) 我该如何去实现REST身份验证?
我想到了某种形式的登录方法将返回某种类型的饼干,但我想不出如何使这个透明单位所有我的电话..
感谢。去这个
一种方式是通过一个通用变成你的响应包装,以及一个辅助函数来检查验证,像这样:
[DataContract]
public sealed class AuthenticatedRequest<T> {
[DataMember(Order=0)]
public string SessionToken {get; set;}
[DataMember(Order=1)]
public T RequestBody {get; set; }
public static bool IsAuthenticated() {
. . .
}
}
请在RESTful系统是无状态的,因此您需要对每个请求重新进行身份验证。
我建议你使用HTTP基本认证,如果这不足以满足你的场景,那么也许你可以通过HTTPS进行HTTP基本认证。
基本/摘要式身份验证是一个不错的主意,但它有一个WCF的问题(只适用于Windows帐户) – MindFold 2010-08-29 13:09:14
好的,环顾四周后,我找到了答案,我传递了一个特殊的身份验证头,类似于Amazon S3。
其构建起来并不那么简单,但可以让我在没有SSL的情况下工作,并且将成为无状态并支持所有客户端。
这样做会违反RESTful系统的限制。 – 2010-08-29 12:38:33
它会违反什么特定约束? – 2010-08-29 14:07:03
请求必须是无状态的。在服务器上维护会话违反了该约束。如果返回的令牌在每次请求时都会重新发送,并且仅用于确认身份验证,那么对可伸缩性和自描述性的影响将很小。只是不要开始将其他状态关联到该会话。 – 2010-08-29 17:53:28