如何将用户凭据传递给 Web 服务?
Posted
技术标签:
【中文标题】如何将用户凭据传递给 Web 服务?【英文标题】:How to pass user credentials to web service? 【发布时间】:2013-06-10 20:11:49 【问题描述】:我正在使用 Windows 应用程序中的 WSDL 使用 Web 服务。当我尝试使用方法时,出现以下错误:-
HTTP 请求未经客户端身份验证方案授权 '匿名的'。从服务器收到的认证头是'"
"远程服务器返回错误:(401) Unauthorized."
我有用户凭据,但不知道如何在 windows 应用程序中使用 c# 代码传递它。
【问题讨论】:
您如何使用您的网络服务? WCF? wsdlsoap 绑定...我猜。我正在从 wsdl.xml 文件中读取它。或者你的意思是我使用什么类型的应用程序来使用 Web 服务,然后是它的 Windows 应用程序。 【参考方案1】:这是它对我的工作方式:-
配置文件设置如下:-
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="bindingName" >
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://10.10.10.10:1880/testpad/services/Testwebservice"
binding="basicHttpBinding" bindingConfiguration="bindingName"
contract=testService.GetData" name="test_Port1" />
</client>
</system.serviceModel>
</configuration>
我在这里传递用户凭据:-
var ser = new GetDataClient();
ser.ClientCredentials.UserName.UserName = "userid";
ser.ClientCredentials.UserName.Password = "Pa$$word1";
【讨论】:
对我有用的是这个answer【参考方案2】:您可以尝试使用here 提到的方法生成您的服务客户端代理。一旦有了 WCF 客户端代理的实例,它就会有一个属性 ClientCreditials
,您可以根据需要对其进行填充。
希望这会有所帮助。
【讨论】:
以上是关于如何将用户凭据传递给 Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
如何在每个请求中将 winform 自定义用户凭据传递给 WCF 服务?
如何从使用 JS 制作的 Windows 8 Native 应用程序将当前 Windows 凭据传递给 WCF REST 服务?
为啥 IIS 中的 Windows/集成身份验证不将用户凭据传递给 s-s-rS 和 SQL?