Не зная, какую привязку вы используете - в зависимости от того, поддерживает ли эта привязка и безопасность транспорта, и сообщения - да, конечно, вы должны иметь возможность выставить две конечные точки, одну с защитой транспорта, другую с защитой сообщений.
Поскольку это действительно одна служба с двумя конечными точками, ваша конфигурация должна выглядеть примерно так (я выбрал wsHttpBinding
в качестве примера - адаптируюсь по мере необходимости):
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="TransportSec">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
<binding name="MessageSec">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="YourService" >
<endpoint name="Transport"
address="Transport"
binding="wsHttpBinding"
bindingConfiguration="TransportSec"
contract="IYourService" />
<endpoint name="Message"
address="Message"
binding="wsHttpBinding"
bindingConfiguration="MessageSec"
contract="IYourService" />
</service>
</services>
</system.serviceModel>
По сути, вы определяете две конфигурации привязки , а затем у вас есть две конечные точки для одной службы, одна из которых использует конфигурацию привязки безопасности транспорта, а другая конечная точка использует конфигурацию привязки безопасности сообщений.
Разумеется, эти две конечные точки не могут иметь один и тот же адрес, поэтому вам нужно дать два отдельных (относительных) адреса каждой из конечных точек.