2010-03-02 46 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