WCF每个端点的不同身份验证方法
问题描述:
我有一个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)
{
}
}
非常感谢
答
除了拆分服务外,看起来没有办法。我将通过将用户名作为“user @ app”传递并让服务器处理它来破解它。
答
分裂您服务伸到单独的服务元素,那么你可以为每个行为。
“服务元素”是什么意思? – FrenkyB 2017-06-20 05:38:51
它是app.config中Services元素下的每个Service元素。 – DaveB 2017-06-30 18:24:11