【问题标题】:WCF Soap webservice and authenticationWCF Soap Web 服务和身份验证
【发布时间】:2011-12-27 15:48:04
【问题描述】:

我正在创建一个使用 basicHttpBinding(SOAP) 的 WCF 服务。我希望对网络服务的每个请求都需要一个帐户名和一个密钥,本质上是一个用户名和密码。目前,这些值作为参数传递给每个公开的方法。这是处理这种情况的正确方法吗?它似乎违反了 DRY,我猜有一种更简单的内置方式。我已经看到了一些通过拦截请求将用户名和密码插入标头的示例,但这种方法似乎为客户端连接增加了相当多的工作量。

谢谢!

【问题讨论】:

    标签: wcf authentication soap basichttpbinding


    【解决方案1】:

    与其在请求中发送用户名和密码,为什么不提供一个返回令牌并传递它的登录方法?

    如果您想尽量减少 DRY,您可以执行以下操作:

    首先,创建一个类似于以下的通用类,所有请求合约都继承自(除了登录和注销):

    [MessageContract]
    public abstract class AuthenticatedRequest <T> {
        [MessageHeader]
        public string Token { get; set;]
    }
    

    现在创建一个名为private bool IsAuthenticated(string Token) 的私有函数来检查令牌。这最大限度地减少了检查身份验证的过程。

    【讨论】:

    • 嗨贾斯汀,抱歉耽搁了。我需要从每个 web 服务方法中调用这个“IsAuthenticated”方法吗?在每个请求中传递用户名/密码有什么本质上的错误吗?对于客户来说,这似乎也是最简单的方法。目前我正在寻找一个只有几个公开方法的网络服务。
    • 如果你传递一个令牌,你就有一个会话的概念,这可能有利于跟踪。通常,如果您可以减少使用临时代理(即令牌)传输用户名和密码的次数,它会更安全。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2013-01-31
    • 2012-07-28
    相关资源
    最近更新 更多