Аутентификация WCF / ASP.NET - PullRequest
9 голосов
/ 27 января 2011

Мой сценарий - это трехуровневое приложение, где уровень данных - это база данных SQL Server, средний уровень - приложение WCF, размещенное в службе Windows, и, наконец, презентация - приложение Asp.Net MVC.

Как обычно, средний уровень - это тот, который выполняет всю бизнес-логику. Доступ к базе данных, определение бизнес-правил и т. Д.

Хорошо, пока все хорошо! НО теперь вот вопрос: как вы справляетесь с безопасностью в таком сценарии? Я имею в виду, что пользователь должен войти в приложение ASP.NET, но я хочу аутентифицировать его не только в ASP, но и на среднем уровне WCF, поскольку предполагается, что к службе WCF должен обращаться больше приложений.

Я хочу, чтобы пользователь вошел в приложение Asp.Net и позволил WCF также узнать учетные данные. Есть ли какая-то сессия в WCF, в которой можно указать зарегистрированного пользователя?

Как профессионалы справляются с безопасностью в этом случае? Я знаю, что вы можете защитить службы WCF с помощью защиты сообщений, но как Asp.Net и WCF синхронизируются с одним зарегистрированным пользователем? Я хочу защитить операции WCF в зависимости от пользователя для средств авторизации.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Я бы предложил использовать для вашей безопасности такой подход, как HMAC (код аутентификации хэш-сообщения) или аналогичный подход на основе токенов. Идея заключалась бы в том, чтобы подписать ваши запросы на уровне WCF, который можно использовать для аутентификации запроса и идентификации пользователя, выполняющего запрос.

Существенными элементами будут токен и некоторый общий секрет, используемый для подписания каждого запроса. Маркер позволит вам идентифицировать пользователя на стороне WCF и искать общий секрет для проверки запроса. Вы также можете добавить временные метки / одноразовые номера, чтобы предотвратить повторные атаки и тому подобное.

Я использовал этот подход для некоторых служб REST, построенных на WCF, с дополнительным преимуществом, заключающимся в том, что клиентам не нужно хранить имена пользователей и пароли, только маркеры безопасности, используемые для связи. В вашем случае вам нужно разобраться, как обмениваться токенами между уровнем ASP.NET и уровнем WCF, но он предоставит вам унифицированный метод аутентификации для любого потребителя ваших служб WCF.

0 голосов
/ 27 января 2011

Посмотрите здесь для аутентификации по имени пользователя.

Веб-сайт ASP.NET + приложение Windows Forms + служба WCF: учетные данные клиента // для получения информации

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