【问题标题】:.NET web service secure.NET Web 服务安全
【发布时间】:2009-02-05 15:42:14
【问题描述】:

有没有很好的例子来说明以下 Web 服务如何工作? 我希望 Windows/Web 客户端能够访问 Web 服务,但客户端应该传递用户名、密码和 IP 地址,并且 Web 服务应该能够确定它是否在允许的用户列表中在接受请求之前。

提前致谢!

【问题讨论】:

  • 它真的会“传递”IP地址吗?还是应该由连接暗示?
  • 据我了解,一旦客户端发起呼叫,网络服务就可以确定 IP 地址。我想要的是在网络服务中设置一个允许的 IP 地址列表,并在继续请求之前检查它是否是有效用户以及有效的 IP 地址。
  • 来自 cmets...“我现在无法使用 ssl”...“将要传递的信息非常机密”——除非您使用基于消息的加密相反,您有一个主要问题...

标签: .net web-services security authentication


【解决方案1】:

我们有一个 WebService 登录方法来验证提供的凭据。如果用户通过验证,则返回票证值。

然后,当使用其他所有 WebMethod 时,此票证将用作 SoapHeader。 http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapheader.aspx

【讨论】:

    【解决方案2】:

    使用 WCF,您可以通过使用 TransportWithMessageCredential 安全性(通过 SSL)并提供您自己的 password validator 来做到这一点。但是,此时您(我被告知)无法访问客户端 IP。为此,您需要在方法本身中检查 IP - 您可以使用 RemoteEndpointMessagePropertylike so 来执行此操作。

    如果您不想走TransportWithMessageCredential 路线,那么将用户名和密码作为参数传递给方法也是有效的(但很笨拙)(只要传输是安全的)。

    【讨论】:

    • 我现在无法使用 ssl,所以我正在尝试找出一种安全的方法来创建 Web 服务并只允许某些客户端访问它。将要传递的信息是极其机密的,如果有人设法得到它,我就会失业。
    【解决方案3】:

    您可以将 Web 服务设置为使用 NT 身份验证,这将获得代表用户名和密码的令牌。允许的用户将由 NT 安全性定义。就默认情况下将在 HTTP 标头中传递的 IP 地址而言。

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2014-07-02
      相关资源
      最近更新 更多