【问题标题】:How to set a Security Token in WCF?如何在 WCF 中设置安全令牌?
【发布时间】:2011-05-06 19:22:37
【问题描述】:

我正在将应用程序从 .net 1.1 升级到 3.5。此应用程序连接到 WCF 服务。以前,Web 服务客户端配置为使用安全令牌,如下所示:

RegistrationWSWse registrationService = new RegistrationWSWse();
Microsoft.Web.Services2.Security.Tokens.UsernameToken token = new Microsoft.Web.Services2.Security.Tokens.UsernameToken("some username", "some password", Microsoft.Web.Services2.Security.Tokens.PasswordOption.SendPlainText );
registrationService.RequestSoapContext.Security.MustUnderstand=false;
registrationService.RequestSoapContext.Security.Tokens.Add(token);

现在我在 Visual Studio 中向 Web 服务添加了一个新的服务引用,但自动生成的代码没有提供任何设置安全标头的方法,如上所示。

这是需要在配置文件system.serviceModel 部分中配置的东西吗?


更新

我没有看到用户名/密码属性的原因是因为我使用的是服务接口,而不是实际的实现类。

我可以通过将实例转换为类型来设置这些东西,如下所示:

((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.UserName = userName;
((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.Password = password;

您必须做的另一件重要事情是更新您的客户端 app.config 文件。如果您不这样做,则不会在 SOAP 标头中设置用户名/密码。示例:

<security mode="TransportWithMessageCredential" />

【问题讨论】:

    标签: .net wcf security webservice-client


    【解决方案1】:

    查看this article on MSDNThis post 也有一些关于你的问题的好信息。

    【讨论】:

    • 感谢 Kamyar 的链接。问题是我正在与服务接口进行交互,而不是代理类。我只需要做一个演员来设置用户名/密码 - 见上文。
    • @Paul:很高兴你成功了。我也学到了一些新东西。谢谢。
    • Stackoverflow 的答案应该包含解释,而不仅仅是对其他网站的引用。
    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2014-11-16
    • 2011-05-07
    相关资源
    最近更新 更多