Аутентификация при использовании службы токенов безопасности - PullRequest
5 голосов
/ 10 мая 2011

Я создал службу токенов безопасности (STS), службу со ссылкой на STS и пример настольного приложения.

Это работает, как и ожидалось, при использовании аутентификации Windows и безопасности сообщений, токен получениз STS и метод обслуживания вызывается успешно.Служба возвращает строку, содержащую личность текущего пользователя, которая возвращает мое имя пользователя AD.

Однако у меня есть требование для аутентификации в базе данных, а не в AD.Я попытался создать CustomUserNameValidator (в STS, это правильное место?) И сослаться на него в web.config.Затем я предоставляю учетные данные, как показано ниже.

SampleServiceReference.SampleServiceClient client = new SampleServiceReference.SampleServiceClient(); client.ClientCredentials.UserName.UserName = "alex"; client.ClientCredentials.UserName.Password = "pass";

Я считаю, что сертификаты настроены правильно (все используют localhost), однако при вызове службы я получаю следующее исключение:

System.ServiceModel.FaultException: ID3242: маркер безопасности не может быть аутентифицирован или авторизован.

Все, что я пытаюсь выполнить, кажется неудачным.Возможно ли то, что я описываю?Клиент службы также передает учетные данные клиента в STS, или я совершенно не понимаю, что здесь происходит?

Этот вопрос о стековом потоке аналогичен, однако я проверил URL-адрес аудитории и, похоже, все в порядке. WIF STS ID3242

Кто-нибудь получил какой-либо совет о том, как мне выполнить пользовательскую аутентификацию при использовании STS?

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Вот простой пример того, что вам нужно здесь: http://claimsid.codeplex.com

Посмотрите на образец 8 или 4.

Небольшое разъяснение.Аутентификация по имени пользователя и паролю выполняется на STS, а не на вашем сервисе.Ваша служба будет аутентифицироваться с помощью токена безопасности, полученного от STS.

2 голосов
/ 10 мая 2011

Посмотрите на StarterSTS .

Предоставляется полный исходный код, который аутентифицируется на основе стандартных баз данных SQL на основе ролей aspnetdb. Существует несколько видеороликов, которые помогут вам запустить его.

Этот проект был затем превращен в ASP MVC - IdentityServer . Это не так хорошо, как файлы справки и т. Д.

...