Тип пользовательских учетных данных клиента (имя пользователя в строке запроса) - PullRequest
1 голос
/ 04 июня 2009

Я копался в безопасности WCF в явно бесполезной попытке создать поведение службы / конечной точки, которое позволяет мне указывать учетные данные имени пользователя / пароля клиента (но не для их аутентификации, я счастлив использовать встроенный функциональность для этого). Я намерен указать имя пользователя (без пароля) в строке запроса для использования с JSONP.

Пока что из-за этого мой мозг просто утекает из ушей. Кто-нибудь может указать мне правильное направление?

Пока мы здесь, кто-нибудь может объяснить разницу между clientCredentials и serviceCredentials?

Я использую WCF с .NET 3.5 SP1.

Редактировать: Я прошел через статью MSDN [Как: создать пользовательские учетные данные клиента и службы | http://msdn.microsoft.com/en-us/library/ms730868(VS.85).aspx], но он особенно хорош, показывая, что нужно расширять, но не обязанности каждого из них. Даже используя отражатель, я просто не могу найти, какой класс / интерфейс отвечает за фактический выбор учетных данных из запроса (будь то из заголовка HTTP или чего-либо еще).

Редактировать 2: Я бы хотел избежать совместимости с aspnet, поскольку будет привязка именованных каналов (с использованием традиционного метода аутентификации).

Редактировать 3: Прежде чем кто-либо подумает об этом, мне известен формат username: password@url.com, но он отключен в IE8 (по крайней мере). Кажется, он автоматически отклоняется, даже если он включен в тег на тестовой странице.

1 Ответ

3 голосов
/ 05 июня 2009

ClientCredentials - это те, которые клиент предоставляет службе. ServiceCredentials - это те, которые служба предоставляет клиенту, когда конфигурация требует взаимной аутентификации.

На стороне сервиса:

WSHttpBinding b = new WSHttpBinding(SecurityMode.Transport);
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

На стороне клиента:

proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "password";

OR

Если вы используете BasicHttpBinding, посмотрите на это .

Здесь ClientCredentialType из UserName"Указывает, что клиент должен быть аутентифицирован с использованием учетных данных имени пользователя."

ИЛИ

Вот пример создания пользовательского валидатора имени пользователя / пароля.

Надеюсь, что-то здесь поможет. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...