Авторизация Сервиса WCF через Имя пользователя и Пароль

Отредактировано 3.9.2011, чтобы добавить еще один связанный вопрос

Привет,

Я очень новичок в WCF и сейчас делаю ускоренный курс.

Могу ли я, пожалуйста, второй взгляд пересмотреть мои планы?

Вот (запланированные) детали:

Цель состоит в том, чтобы сделать доступную через Интернет службу WCF, которая использует имя пользователя и пароль для авторизации, с учетными данными и содержимым сообщений, защищенными при передаче SSL.

Сервис WCF SOAP

  • Связывание: wsHttpBinding
  • Auth: UsernameAuthentication (пользовательская)
  • Режим безопасности: транспорт

Будут ли эти предметы изящно жить вместе? Я не был уверен, нужно ли мне изменить режим безопасности на "TransportWithMessageCredential".

Смежный вопрос: я пытаюсь получить идентификационную информацию, аналогично использованию HttpContext.Current.User. Это как я могу это сделать?

IIdentity myIdentity = 
OperationContext.Current.ServiceSecurityContext.PrimaryIdentity;

Пожалуйста, дайте мне знать, если мне нужно изменить режим привязки, аутентификации или безопасности.

Спасибо!

Изменить - Дополнительный вопрос: при первоначальном замысле клиент должен был отправить имя пользователя и пароль как часть сообщения. Учетные данные будут защищены с помощью SSL. затем в коде соответствующего сервисного метода я бы оценил, есть ли у них доступ или нет, и остановил бы их. Это кажется более простым способом реализации авторизации, но есть ли недостатки, о которых мне нужно знать?

1 ответ

Решение

Да, эти параметры должны быть хорошими - wsHttpBinding поддерживает безопасность транспорта с учетными данными имени пользователя и пароля.

Что касается личности: в вашем коде на стороне службы, вы можете проверить ServiceSecurityContext и найти личность звонящего по этому вопросу:

ServiceSecurityContext secCtx = ServiceSecurityContext.Current;
var identity = secCtx.PrimaryIdentity;
Другие вопросы по тегам