【问题标题】:WCF Different authentication method for each endpointWCF 每个端点的不同身份验证方法
【发布时间】:2011-01-22 19:18:18
【问题描述】:

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

无论如何我可以为每个端点定义不同的身份验证方法吗?

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

这是我的 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)
    {

    }
}

非常感谢

【问题讨论】:

    标签: .net wcf app-config


    【解决方案1】:

    看起来除了拆分服务别无他法。我将通过将用户名传递为“user@app”并让服务器处理它来破解它。

    【讨论】:

      【解决方案2】:

      将您的服务拆分为单独的服务元素,然后您可以为每个元素创建一个行为。

      【讨论】:

      • “服务元素”是什么意思?
      • 就是app.config中Services元素下的每个Service元素。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2011-04-09
      相关资源
      最近更新 更多