WCF如何传递令牌进行身份验证?

Posted

技术标签:

【中文标题】WCF如何传递令牌进行身份验证?【英文标题】:WCF how to pass token for authentication? 【发布时间】:2011-02-06 00:03:42 【问题描述】:

我有一个希望支持 basicHttpBinding 和 webHttpBinding 的 WCF 服务。当客户端成功登录时,服务器将生成一个令牌供客户端在以后的所有请求中传递给服务器。问题是客户端如何将令牌传递给服务器?我不想在每个 web 方法上添加一个额外的参数来保存令牌。

【问题讨论】:

【参考方案1】:

通常,执行此类操作的最佳方法是在 WCF 标头中传递此类“元信息”。您可以轻松地创建一个消息检查器来扩展 WCF(实际上并没有那么可怕和难做!),它将令牌注入到来自客户端的每个传出请求中,并从标头中检索它并在服务器端对其进行验证。

有很多不错的博客文章向您展示了如何创建消息检查器:

理查德·霍尔格伦的WCF postings Writing a WCF message inspector Automatic Culture Flowing with WCF by using Custom Behaviour

查看要实现的两个相关接口:

IClientMessageInspector 在客户端,有一个 BeforeSendRequestAfterReceiveReply 消息要实现 服务端IDispatchMessageInspector,有AfterReceiveRequestBeforeSendReply方法实现

【讨论】:

在标头中传递令牌不会引发安全问题? @Learning 我知道这是一个旧评论,但您至少应该使用安全连接,并且最好对只有您和客户知道如何实施的令牌应用某种加密.

以上是关于WCF如何传递令牌进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

下载文件时如何传递身份验证令牌?

如何在 WCF 服务中实现自定义身份验证

如何对 WCF 数据服务进行身份验证?

Web API 安全和身份验证 - 不记名令牌

如何使用基于令牌的身份验证对在浏览器中输入 url 的用户进行身份验证?

如何验证和授权每个 WCF 调用?