WCF 4.0是否有模拟类/模块/ WCF REST Starter Kit的RequestInterceptor?WCF 4.0的模拟WCF REST入门套件的RequestInterceptor?
回答
没有任何内容将1-1映射到它,但是您可以使用WCF核心中的IDispatchMessageInspector来实现RequestInspector将执行的大多数场景。 http://blogs.msdn.com/b/carlosfigueira/archive/2011/04/19/wcf-extensibility-message-inspectors.aspx的帖子中有一些关于消息检查员的详细信息。
爱德华多,你问:@carlosfigueira:我可以用它来实现认证子系统吗?
我正在研究同一个问题,并且至少为您和即将推出的基于授权标头的解决方案(如下所述)提供解决方案(我相信您正在考虑“拦截”)。
,以确保基于模型REST WebHttp编程WCF 4端点最简单的方法是这样的:
- 问题一个共享密钥和API密钥给每一个客户作为凭证使用。 API密钥与用户名真正相同。
- 通过SSL运行所有端点以确保您始终具有通道/消息/数据安全性
- 要求客户端使用共享密钥来生成包含时间戳记及其API的HMAC-SHA1(或equiv)散列签名字符串键。
- 要求客户端传递的这些所有3作为查询字符串参数在每个请求中:
- 签名
- 时间戳
- API密钥
- 实施例:https://127.0.0.1/RestEndpoint?Sig= {sigString} & ApiKey = {apiKey } & TimeStamp = {timeStamp} &您的所有其他参数...
- 在你的服务端,实现认证方法,它的所有3个字符串,然后:
- 查找该API密钥,并返回客户端的共享秘密,你有一个DB或其他地方。
- 将时间戳与DateTime.Now进行比较以确保请求不超过15分钟以抵御重播攻击。
- 使用这3个字符串,重新创建签名字符串并将其与客户端传入的字符串进行比较。
- 如果它们匹配,请求者是真实的。现在
,更好的方式来做到这一点是通过使用HTTP授权请求报头存储的3串,并有一个全球性的拦截十岁上下的过程看所有请求。这将防止没有身份验证块的暴露端点的可能性(至少,其可能性较低)。
使用查询字符串来传递所有这些信息的问题是查询字符串的最大长度为2k(因客户端/浏览器而异),并且查询字符串在调试时非常难以读取......但只是得到使用到它。
有人认为更复杂的方法是STS模型,您需要客户端将这3个身份验证字符串传递给安全令牌服务端点。响应消息会传回一个会话令牌,客户端会在每个呼叫中传递一个会话令牌来代替3个字符串。确实,对于客户端而言,在每次调用时都不需要生成HMAC哈希签名,但服务器端仍必须对令牌进行身份验证,并且会话概念会导致干净的RESTful无状态行为。
我会尽我所能发布实现查询字符串和auth头文件方法的代码块。
我回来了一个更新。
我碰巧重视代码的简单性,并且在成功解决了这个问题后,我不能说我比查询字符串方法更喜欢它。将一次调用放入每个调用AuthN方法并与AuthZ方法并行的服务端点似乎比一些人认为的更容易。
无论如何,足够的意见......对解决方案。该解决方案是正确的在我们的#2的眼睛在这个环节,但于我们而言不是很好的描述......所以我会给予信贷“user634119”示例代码这里找到: Headers in OperationContext
首先,我们需要添加一个serviceBehavior我们的web.config文件:
<behaviors>
<serviceBehaviors>
<behavior>
<serviceAuthenticationManager serviceAuthenticationManagerType="WCF.BasicAuthorization, WCF"></serviceAuthenticationManager>
<serviceAuthorization impersonateCallerForAllOperations="false" principalPermissionMode="Custom" serviceAuthorizationManagerType="WCF.BasicAuthentication, WCF">
</serviceAuthorization>
</behavior>
</serviceBehaviors>
</behaviors>
下使一个类(称为BasicAuthorization如serviceBehaviors引用上述块):
//Authorize the call against the URI resource being requested...
public class BasicAuthorization : ServiceAuthorizationManager
{
public override bool CheckAccess(OperationContext operationContext,
ref Message message)
{
//some code
}
}
下使身份验证类:
// Authenticate the header signature as described in my previous post
public class BasicAuthentication : ServiceAuthenticationManager
{
public override ReadOnlyCollection<IAuthorizationPolicy> Authenticate(
ReadOnlyCollection<IAuthorizationPolicy> authPolicy, Uri listenUri,
ref Message message)
{
//some code
}
}
在验证方法,使用HttpRequestMessageProperty拉动请求头细节出并执行在我的第一应答描述的相同的3个步骤。
我一直在阅读/关注如何保护用WCF 4.0实现的基于REST的服务。没有一个提供了一个简单的解决方案。但是这似乎是实现身份验证和授权的最优雅的解决方案。 – 2013-10-09 14:45:56
- 1. 使用CDATA和WCF REST入门套件
- 2. WCF REST入门套件未能安装
- 3. WCF REST RequestInterceptor身份验证
- 4. WCF 4.0中的RequestInterceptor REST服务应用程序
- 5. 错误的请求:使用入门套件的WCF REST服务
- 6. 是否可以使用来自WCF REST入门套件的RequestInterceptor实现重定向器/反向代理
- 7. WCF REST StarterKit和RequestInterceptor线程安全
- 8. WCF REST安全模拟
- 9. WCF REST入门套件 - 支持多种资源?
- 10. 使用WCF REST服务入门套件检索EF4 POCO
- 11. WCF REST入门套件是否仍然最新?
- 12. wcf rest入门套件预览2错误:需要VS 2008 SP1
- 13. WCF REST入门套件是否死在水中......现在呢?
- 14. wcf休息入门套件2
- 15. 如何验证RequestInterceptor(WCF REST入门工具包)中的Content-MD5头(从实际内容) - REST Web服务
- 16. WCF 4.0:WebMessageFormat.Json不能与WCF REST模板一起使用
- 17. 如何创建HTTP POST请求的主体内容与WCF REST(入门套件)
- 18. 如何单元测试使用WCF Rest入门套件构建的WCF客户端
- 19. WCF 4.0 WCF 4.0的新增功能
- 20. WCF Rest .NET 4.0未处理的异常
- 21. 改变默认的WCF REST 4.0 helppage
- 22. 上传文件从Android(2.3.4)到WCF 4.0 REST服务与WCF模板40
- 23. RequestInterceptor中的ProcessRequest永不结束[WCF]
- 24. WCF休息入门套件OnGetItems:格式化的IEnumerable <KeyValuePair .. XML
- 25. 如何使用WCF 4.0模板上传文件(REST)
- 26. WCF Rest 4.0联机模板中的错误处理
- 27. WCF REST入门工具包具有丑陋的URI
- 28. 来自WCF REST入门工具包Silverlight兼容的HttpClient?
- 29. 如何从.NET 1.1调用WCF REST 4.0
- 30. 在REST WCF .net 4.0中相当于ActionFilterAttribute
我可以用它来实现验证子系统吗? – pyon 2011-05-17 15:03:59