代码之家  ›  专栏  ›  技术社区  ›  user20358

使用服务引用调用安全服务

  •  1
  • user20358  · 技术社区  · 14 年前

    我在.NET类中使用了一个外部安全服务,方法是对它进行Web引用并将用户名令牌传递给它,如下所示:

    MyWebService objWS = new MyWebService();
    UsernameToken token = new UsernameToken("User","Password", PasswordOption.SendPlainText);
    objWS.RequestSoapContext.Security.Timestamp.TtlInSeconds = 60;
    objWS.RequestSoapContext.Security.Tokens.Add(token);
    objWS.RequestSoapContext.Security.MustUnderstand = false;
    

    当我引用同一个服务URL并尝试使用clientcredentials传递用户名和密码时,它失败了。

    我不知道外部服务。知道会出什么问题吗?

    谢谢你的时间…

    2 回复  |  直到 14 年前
        1
  •  0
  •   Yack    14 年前

    您是通过HTTPS调用服务吗?服务器可能需要客户端证书。 我发现了的这个示例用法。 UsernameToken

        2
  •  0
  •   user20358    14 年前

    解决方案是安装wse3,并在生成的代理中继承Microsoft.Web.Services3.WebServicesClientProtocol,而不是默认的System.Web.Services.Protocols.SoaphttpClientProtocol。

    然后,服务代理对象将获得安全属性。

    objWS.RequestSoapContext.Security
    

    然后我可以用它来传递用户名令牌。

    这是一个黑客,我还没有找到更好的方法。重新生成代理始终需要额外的步骤,即再次手动编辑代理,如上所述。