【问题标题】:In my WCF service, i need to call my void XXX method by passing credentials on security method在我的 WCF 服务中,我需要通过在安全方法上传递凭据来调用我的 void XXX 方法
【发布时间】:2017-09-27 03:23:47
【问题描述】:
 [OperationContract]
 string Security(string userName, string Password);

 [OperationContract]
 void XXX(XXX);

 [OperationContract]
 void YYY(YYY);

在我的 WCF 服务中,我需要通过在安全方法上传递凭据来调用 void XXX

【问题讨论】:

    标签: wcf


    【解决方案1】:

    虽然您可以将凭据作为每个方法的参数传递(更不用说可能不安全),但它变得相当乏味。而是使用 WCF 的自定义用户身份验证行为。每次调用方法(确实收到消息)时都会自动调用它们。它还使方法更简洁,因为它们没有在任何地方填充用户名/密码。

    MSDN:

    默认情况下,当使用用户名和密码进行身份验证时,Windows Communication Foundation (WCF) 使用 Windows 来验证用户名和密码。但是,WCF 允许自定义用户名和密码身份验证方案,也称为验证器。要合并自定义用户名和密码验证器,请创建一个派生自 UserNamePasswordValidator 的类,然后对其进行配置。

    无论您的服务是 DataContract 还是 MessageContract,这些行为都会起作用。

    这些凭据经过加密并存储在消息标头中,而不是其他参数通常驻留的消息正文中。

    无状态服务

    调用服务一次进行身份验证,然后再次执行一些操作的另一个问题是,您实际上强制服务是有状态的,你可能不想要。通过将有关身份验证的信息与操作一起放在同一消息中,发送的消息减半;提高性能,更重要的是,如果需要,允许您的服务成为无状态的选项,可能会进一步提高性能。

    告诉我更多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多