Авторизация Сервиса 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;