WCF 4.0';s模拟WCF静止启动器套件';请求截取器?
WCF 4.0是否对WCF REST Starter Kit的RequestInterceptor有模拟类/模块/任何东西?没有任何东西可以将1-1映射到它,但是您可以使用WCF core中的IDispatchMessageInspector来实现RequestInspector将执行的大多数场景。上的帖子有一些关于消息检查器的详细信息。爱德华多,你问:@carlosfigueira:我可以用它来实现一个身份验证子系统吗 我正在处理同一个问题,至少有一个解决方案(如下所述)供您使用,还有一个即将推出的基于授权标头的解决方案(我相信您正在考虑“拦截”该解决方案) 保护基于WCF 4 REST WebHttp编程模型的端点的最简单方法是:WCF 4.0';s模拟WCF静止启动器套件';请求截取器?,wcf,wcf-rest-starter-kit,Wcf,Wcf Rest Starter Kit,WCF 4.0是否对WCF REST Starter Kit的RequestInterceptor有模拟类/模块/任何东西?没有任何东西可以将1-1映射到它,但是您可以使用WCF core中的IDispatchMessageInspector来实现RequestInspector将执行的大多数场景。上的帖子有一些关于消息检查器的详细信息。爱德华多,你问:@carlosfigueira:我可以用它来实现一个身份验证子系统吗 我正在处理同一个问题,至少有一个解决方案(如下所述)供您使用,还有一个即将
- 签名
- 时间戳
- API密钥
- 示例:{sigString}&ApiKey={ApiKey}&TimeStamp={TimeStamp}&这里的所有其他参数
- 查找API密钥并返回您在数据库或其他地方拥有的客户端共享机密
- 比较时间戳和日期时间。现在确保请求的时间不超过15分钟,以抵御重播攻击
- 使用这3个字符串,重新创建签名字符串,并将您的签名字符串与客户端传入的签名字符串进行比较
- 如果它们匹配,则请求者是真实的
我将尽最大努力发布实现查询字符串和auth头方法的代码块。我回来更新了 我碰巧看重代码的简单性,在成功解决了这个问题之后,我不能说我更喜欢它而不是查询字符串方法。在调用AuthZ方法的同时,向每个调用AuthN方法的服务端点删除一个调用似乎比一些人想象的要容易 不管怎样,关于解决方案的意见已经够多了。这个解决方案就在我们的眼前,在这个链接上是Stackoverflow,但在我们的上下文中没有很好地描述……因此,我要感谢“user634119”,因为这里的示例代码: 首先,我们需要将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>
接下来创建一个身份验证类:
// 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
}
}
//按照我上一篇文章中的描述对标题签名进行身份验证
公共类基本身份验证:ServiceAuthenticationManager
{
公共覆盖只读集合身份验证(
只读集合授权策略,Uri listenUri,
参考信息(信息)
{
//一些代码
}
}
在Authenticate方法中,使用HttpRequestMessageProperty提取请求标头的详细信息,并执行我在第一次答复中描述的相同的3个步骤。我可以使用它实现身份验证子系统吗?我已经阅读/遵循了大量关于保护WCF 4.0实现的基于REST的服务的教程。没有一个能提供简单的解决方案。但这似乎是实现身份验证和授权的最优雅的解决方案。
// 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
}
}