WCF Различный метод аутентификации для каждой конечной точки - PullRequest
1 голос
/ 02 марта 2010

У меня есть сервис 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)
    {

    }
}

Большое спасибо

Ответы [ 2 ]

1 голос
/ 02 марта 2010

Похоже, что нет другого пути, кроме разделения службы. Я собираюсь взломать его, передав имя пользователя как «user @ app» и заставить сервер справиться с этим.

0 голосов
/ 02 марта 2010

Разделите ваши сервисы на отдельные сервисные элементы, чтобы вы могли создать поведение для каждого из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...