2012-04-19 3 views
0

Я пытаюсь найти стандартное решение в WCF по следующему сценарию:Пользовательская аутентификация WCF - токен

У меня есть 2 службы. Service1 хочет отправить запрос на услугу2. Я хочу, чтобы этот сервис1 отправил учетные данные для аутентификации перед ответом service2 на его запрос.

Я не хочу использовать ssl или копировать сертификаты между всеми сетевыми службами.

Это мое решение:

Я создам одну «службу безопасности».

Служба 1 будет проходить проверку подлинности в службе безопасности.

При успешной аутентификации эта служба безопасности предоставит service1 специальный токен, подписанный службой безопасности.

Service1 приложит этот токен к каждому из его запросов.

Service2 проверит этот токен, и, если он удастся, обработает запрос.

Ответ заключается в том, есть ли способ в C# (WCF) для реализации этого механизма.

Благодаря

+0

См. Этот вопрос: http://stackoverflow.com/questions/964433/how-to-add-a-custom-header-to-every-wcf-calls – Jaapjan

ответ

0

Если вы говорите о службах WCF, посмотрите, какие виды безопасности WCF supports. Это None, Transport, Message, TransportWithMessageCredential, TransportCredentialOnly, Both. Вы сказали, что вас не интересует транспортная безопасность. Итак, в списке есть еще защита сообщений.

WCF supports the following credential types when you are using message level security: 

Windows. The client uses a Windows token representing the logged in user’s Windows identity. The service uses the credentials of the process identity or an SSL certificate. You will use this in the sample application that demonstrates the first scenario (internal self-hosted service). 
UserName. The client passes a user name and password to the service. Typically, the user will enter the user name and password in a login dialog box. The service can validate the user name and password using a Windows account or the ASP.NET membership provider. You will use this in the sample application that demonstrates the third scenario (public Web-hosted service). 
Certificate. The client uses an X.509 certificate and the service uses either that certificate or an SSL certificate. 
IssueToken. The client and service use the Secure Token Service, which issues tokens the client and service trust. Windows CardSpace uses the Secure Token Service. 
None. The service does not validate the client. 

Следующая то, что вы не сказали, но очень важно, чтобы определить тип аутентификации, то, как вы собираетесь разместить свои услуги, особенно обслуживание 2. Проверка подлинности Windows, это хорошо для внутренних самодостаточно услуг, но я Я не уверен, что это ваше дело. Таким образом, если ваша служба будет размещена в IIS, имя пользователя подходит вам. И поддержка digest authentication - это то, что вам нужно. Прочитайте Digest Authentication on a WCF REST Service. И если это будет не служба IIS или вам нужно альтернативное решение, это может быть Security Token Service. Но последнее лучшее решение - аутентификация на основе утверждений, ссылка вы можете найти в других ответах.

+0

Я хочу использовать свой собственный тип аутентификации. Аутентификация будет выполняться только тогда, когда service1 запрашивает токен из службы проверки подлинности. – fransua

Смежные вопросы