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

时间:2017-09-27 03:23:48

标签: wcf

 [OperationContract]
 string Security(string userName, string Password);

 [OperationContract]
 void XXX(XXX);

 [OperationContract]
 void YYY(YYY);

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

1 个答案:

答案 0 :(得分:0)

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

MSDN:

  

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

无论您的服务是DataContract还是MessageContract,这些行为都会有效。

这些凭据加密并存储在邮件标题中,而不是存储在其他参数通常驻留的邮件正文中。

无国籍服务

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

告诉我更多