Да, абсолютно. WCF прекрасно поддерживает WS-Security. Какие токены ожидаются сервисом для аутентификации?
Предполагая, что это просто имя пользователя / пароль, вы просто настроили бы привязку для использования защиты TransportWithMessageCredential, где тип учетных данных клиента - UserName (примечание: для этого вы должны использовать HTTPS). Сначала определите привязку следующим образом:
<basicHttpBinding>
<binding name=“MyBinding”>
<security mode=“TransportWithMessageCredential”>
<transport clientCredentialType=“None” />
<message clientCredentialType=“UserName” />
</security>
</binding>
</basicHttpBinding>
Затем настройте конечную точку для использования этой привязки:
<endpoint address="https://somewhere.com/TargetService.asmx" binding="basicHttpBinding" bindingConfiguration="MyBinding" />
Затем во время выполнения, предполагая, что вы используете сгенерированный прокси (т.е. ClientBase), вы просто устанавливаете учетные данные клиента следующим образом:
TargetServiceClient client = new TargetServiceClient();
client.Credentials.UserName.UserName = "myusername";
client.Credentials.UserName.Password = "mypassword";