gpt4 book ai didi

使用 basicHttpBinding 时的 WCF 和 UserName 凭据

转载 作者:行者123 更新时间:2023-12-04 06:02:15 25 4
gpt4 key购买 nike

据我所知,为了使用带有 basicHttpBinding 的 UserName 凭据对 SQL Server 成员资格提供程序进行身份验证,我需要设置 TransportWithMessageCredentials 安全模式。但最近我看了WCF Security guide .在本书中,我找到了类似的示例,但没有使用 TransportWithMessageCredentials,而是使用了基本模式,并创建了一个自定义 HTTP 模块来对用户进行身份验证。

我想知道哪种方法值得使用?

最佳答案

两种方法的作用相同,但它们使用不同的方法。第一种方法使用 SOAP header 传递凭据,而第二种方法使用 HTTP header 传递凭据。

第二种方法涉及额外的网络往返(由 WCF 在内部处理),因为第一次调用被 401 状态代码拒绝并要求基本身份验证,并且只有第二次调用包含带有凭据的 header 。这是 HTTP 身份验证的工作方式,客户端不应该在服务器需要它们之前发送凭据(即使有可能进行预身份验证,但我认为 WCF 不使用它)。第二种方法不能与流传输模式一起使用。

这两种方法之间可能还有一个额外的区别。第一种方法对每个调用进行身份验证,而第二种方法对连接进行身份验证,因此如果您从同一个代理(和同一个连接)多次调用服务,则使用第二种方法仅对您进行一次身份验证,但使用第一种方法对每次调用进行身份验证。

编辑:

这两者之间没有偏好。您将使用更适合您需求的那个。如果您可以同时控制客户端和服务器,或者如果您知道客户端将使用一些更强大的 SOAP 堆栈,那么第一个更容易设置。如果您无法控制您的客户并且他们可以使用不同的平台,您可以找到第二个更具互操作性的平台。

作为旁注,第一个仅适用于 SOAP 协议(protocol),而第二个适用于 SOAP、POX 和 REST(POX 和 REST 需要不同的绑定(bind))。

关于使用 basicHttpBinding 时的 WCF 和 UserName 凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8817037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com