Я создал службу токенов безопасности (STS), службу со ссылкой на STS и пример настольного приложения.
Это работает, как ожидалось. при использовании проверки подлинности Windows и безопасности сообщений, токен извлекается из STS, и метод службы вызывается успешно. Служба возвращает строку, содержащую идентификатор текущего пользователя, которая возвращает мое имя пользователя AD.
Однако у меня есть требование аутентифицироваться в базе данных, а не в AD. Я попытался создать CustomUserNameValidator (правильное ли это место в STS?) И сослаться на него в web.config. Затем я предоставляю учетные данные, как показано ниже:
SampleServiceReference.SampleServiceClient client = new SampleServiceReference.SampleServiceClient ();
client.ClientCredentials.UserName.UserName
= "Алекс";
client.ClientCredentials.UserName.Password
= "pass";
Я считаю, что сертификаты настроены правильно (все с использованием localhost), однако при вызове службы я получаю следующее исключение:
System.ServiceModel.FaultException: ID3242: токен безопасности может не быть аутентифицированным или авторизованным.
Все, что я пытался, кажется неудачным. Возможно ли то, что я описываю? Клиент службы также передает учетные данные клиента в STS, или я совершенно не понимаю, что здесь происходит?
Этот вопрос о переполнении стека аналогичен, однако я проверил URL-адрес аудитории и, похоже, все в порядке. WIF STS ID3242
Есть ли у кого-нибудь совет о том, как добиться пользовательской аутентификации при использовании STS?