Аутентификация WCF с несколькими провайдерами - PullRequest
2 голосов
/ 15 октября 2010

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

Я уверен, что имена пользователей обоих провайдеров не пересекаются (общедоступные имена входа - только цифры, а в интрасети будет что-то вроде «ДОМЕН \ Логин»). Первый сайт использует формы auth, а его провайдер возвращает GenericPrincipal. Сайты интрасети используют аутентификацию Windows, и у меня есть WindowsPrincipal, прикрепленный к Page.User.

Можно ли настроить WCF для использования двух провайдеров членства (пользовательский, который используется на переднем сайте, и Windows) из коробки, без написания другого пользовательского кода? Это важно, как мой WCF размещен? В настоящее время это служба Windows. Мне нужно переключиться на IIS 7?

1 Ответ

1 голос
/ 15 октября 2010

Я так не думаю - у вас может быть только один поставщик членства. Но у вас может быть собственный поставщик, который может аутентифицироваться в двух разных хранилищах на основе представленных учетных данных. Например, он может проверить, является ли имя пользователя доменом \ логином, а затем попытаться использовать активный каталог, в противном случае - поставщиком веб-сайта.

Еще одна идея состоит в том, чтобы иметь две разные конечные точки для службы. Каждый будет настроен с определенным поставщиком. Реализация сервиса останется прежней - внутри вы должны получить авторизацию на основе утверждений. Проверьте эту статью для получения дополнительной информации: http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel

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