2010-03-02 21 views
1

我有一个WCF服务。我的服务有2个端点,每个端点具有不同的联系人。该服务使用自定义用户名身份验证(在下面的customUserNamePasswordValidatorType属性中定义)问题是两个终端将使用相同的身份验证方法。WCF每个端点的不同身份验证方法

是否有反正我可以为每个端点定义不同的身份验证方法?

每个端点都由不同的且只有一个应用程序访问。因此,如果我可以将应用程序名称传递给身份验证方法,那么也可以起作用。

这是我的app.config

<services> 
     <service behaviorConfiguration="Behavior1" name="MyServer.Service"> 
     <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" /> 
     <endpoint address="" binding="netTcpBinding" bindingConfiguration="Binding1" contract="MyServer.IService" /> 
     <endpoint address="service2" binding="netTcpBinding" bindingConfiguration="Binding1" contract="MyServer.ISecondService" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:37100/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Behavior1"> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceMetadata /> 
      <serviceCredentials> 
      <userNameAuthentication customUserNamePasswordValidatorType="MyServer.Authentication" userNamePasswordValidationMode="Custom" /> 
      </serviceCredentials> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

这是自定义的验证方法。如果我可以在某处传入名为appName的第三个参数,那也可以。

public class Authentication : UserNamePasswordValidator 
{ 
    public override void Validate(string userName, string password) 
    { 

    } 
} 

非常感谢

回答

1

除了拆分服务外,看起来没有办法。我将通过将用户名作为“user @ app”传递并让服务器处理它来破解它。

0

分裂您服务伸到单独的服务元素,那么你可以为每个行为。

+0

“服务元素”是什么意思? – FrenkyB 2017-06-20 05:38:51

+0

它是app.config中Services元素下的每个Service元素。 – DaveB 2017-06-30 18:24:11