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

#wcf #authentication #https #wshttpbinding #basichttpbinding

#wcf #аутентификация #https #wshttpbinding #basichttpbinding

Вопрос:

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

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

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

Ответ №1:

Вы хотите использовать токен безопасности служба (ГНС) для аутентификации и получения Токена безопасности (возможно на основе SAML) задняя который идентифицирует пользователя, который затем может быть передан в другие сервисы и они могут просто использовать идентификационную информацию для идентификации и авторизации , потому что они доверяют СТС проверки личности пользователя фронт.

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

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

Комментарии:

1. Это бесплатно? Потому что, когда я гуглю WIF, это приводит меня на страницу MSDN с надписью «Оценка загрузки» …

2. 100% бесплатно. Добавлена ссылка для скачивания v1 для ответа.