Пользовательская двухфакторная аутентификация в WCF - PullRequest
2 голосов
/ 30 ноября 2011

Можно ли реализовать двухфакторную (или многофакторную) пользовательскую аутентификацию в WCF?Например, я хочу аутентифицировать клиента, используя два разных типа учетных данных:

1) Пользователь вводит логин и пароль

2) Служба WCF проверяет логин + пароль

3) Еслипредыдущий шаг успешен, сервер возвращает секретный запрос (или номер пароля OTP)

4) Пользователь вводит ответ на полученный запрос и отправляет его на сервер

5) Если ответ правильный - пользовательавторизован на сервере.Он может выполнять методы сервера.

Аутентифицированный пользователь имеет токен безопасности.При следующем вызове сервера клиент отправляет только токен безопасности сервера без явных учетных данных.

Я нашел только одну ссылку об этом в msdn - http://msdn.microsoft.com/en-us/library/ms788756.aspx

В .NET Framework 3.5, клиентские сообщенияможет содержать несколько токенов определенного типа, а также токены разных типов.

Эта функция позволяет использовать несколько сценариев, включая следующие:

Инкрементная отправка претензий.Для всех операций над службой может потребоваться наличие набора утверждений, но для некоторых операций могут потребоваться дополнительные утверждения.Вместо использования отдельных выданных токенов для каждой операции клиент может получить один выданный токен с начальным набором утверждений и использовать другой выданный токен с остальными утверждениями, необходимыми для вызываемой операции.

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

Но реальных примеров того, как его реализовать, не существует :(Я могу аутентифицироваться только с использованием пользовательских учетных данных.

1 Ответ

0 голосов
/ 30 ноября 2011

Да, вы можете сделать это. Два общих способа, о которых я могу думать, это:

  1. Аутентификация Active Directory - вы знаете, как она работает

  2. Аутентификация сертификата - Хост будет иметь хранилище сертификатов. Сертификат, предоставленный Клиентом, должен присутствовать в магазине. Если да, то пройти, иначе не получится.

Последний может быть использован при общении с деловым партнером ИЛИ при вызовах между компьютерами, где лучше применять другой уровень безопасности. Привязка может иметь вид WebServiceBinding (WS Binding) ИЛИ NetTCPBinding

Лот доступно много учебных пособий по созданию сертификатов и его работе. Пожалуйста, напишите, если вы застряли.

...