我有一個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)
{
}
}
非常感謝
「服務元素」是什麼意思? – FrenkyB 2017-06-20 05:38:51
它是app.config中Services元素下的每個Service元素。 – DaveB 2017-06-30 18:24:11