Аутентификация WCF Аутентифицировать пользователя/пароль один раз, а затем аутентифицировать другим способом?

В принципе, у меня есть следующий сценарий и информация:

  • Мы используем HTTPS.
  • Мы хотим аутентифицировать пользователя по пользователю/паролю при первом входе в систему.
  • После того, как они будут аутентифицированы, я хочу, чтобы любые будущие вызовы ДРУГИХ служб (не службы входа в систему) использовали имя пользователя и какой-то сеанс (на случай, если пароль изменится в середине сеанса).
  • Я хочу убедиться, что мои сеансы могут истечь по времени и управлять ими таким образом, что если пользователь попытается вызвать службу, а у него нет сеанса, он получит сообщение об ошибке (потому что он не вошел в систему). Не уверен, есть ли встроенный способ WCF для проведения сеансов таким образом, или мне придется сделать что-то настроенное с базой данных.
  • Я думаю, что мы хотим использовать WSHttpBinding (не BasicHttpBinding), уверен в этом на 90%.

Я просто не могу понять, как это сделать. Часто я нахожу информацию о клиентском коде, выполняющем client.ClientCredentials.UserName.UserName = username и client.ClientCredentials.UserName.Password = password. Но это просто не работает, потому что с чем проверяется мой сервер? Я пытаюсь получить эту информацию и проверить ее по базе данных пользователей/пропусков. Я не собираюсь использовать аутентификацию Windows или что-то в этом роде (потому что мне все равно, кто входит в компьютер, а только кто входит в приложение).


person michael    schedule 25.05.2011    source источник


Ответы (1)


Вы хотите использовать Secure Token Service (STS) для проверки подлинности и получения токена безопасности (возможно, SAML), который идентифицирует пользователя, который затем может быть передан другим вашим службам, и они могут просто использовать идентификационную информацию для идентификации и авторизовать, потому что они уверены, что служба STS заранее проверила личность пользователя.

Это обширная тема для обсуждения, поэтому я предлагаю выполнить поиск WCF STS и выполнить еще немного исследований, но это определенно то направление, в котором я бы рекомендовал двигаться. Если вы собираетесь создать собственную реализацию STS, я также рекомендую изучить использование компонентов Windows Identity Foundation (WIF), упрощающих разработку.

Вот ссылка для скачивания WIF v1 .0, которая является последней версией на момент ответа.

person Drew Marsh    schedule 26.05.2011
comment
Это бесплатно? Потому что, когда я гуглю WIF, я попадаю на страницу MSDN, на которой написано «Оценочная загрузка»... - person michael; 26.05.2011
comment
100% бесплатно. Добавлена ​​ссылка для скачивания v1 в ответ. - person Drew Marsh; 26.05.2011