Как аутентифицировать и отслеживать пользователей с WCF / JSON? - PullRequest
5 голосов
/ 23 декабря 2009

Я внедряю службу в WCF и мне нужно иметь пользовательскую аутентификацию пользователя с помощью имени пользователя / пароля. Эта служба настроена как служба WebScript (JSON).

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

Я собираюсь поговорить с этим сервисом, используя AJAX (jQuery), и должна быть возможность использовать базовую аутентификацию HTTP.

Позже эта служба также предоставляет другие конечные точки, например, через TCP, и это поддерживает «правильную» аутентификацию.

В WCF так много способов обеспечения безопасности, что я чувствую себя потерянным, и мне кажется, что чем больше я читаю об этом, тем меньше я знаю.

Ответы [ 2 ]

3 голосов
/ 24 декабря 2009

В дополнение к использованию HTTPS я бы рекомендовал взглянуть на эту статью по созданию служб REST с WCF. В разделе об использовании HMAC есть несколько хороших идей. В зависимости от вашего сценария вы также можете рассмотреть возможность выгрузки аутентификации другому провайдеру (разработчику OpenId) и просто сохранить профиль на своей стороне без пароля.

3 голосов
/ 23 декабря 2009

Учитывая, что вы будете использовать jQuery для этого (что предполагает транспорт HTTP), первое, что вам нужно сделать, это убедиться, что схема для этой конечной точки - HTTPS. Если это не так, то у вас будет много неприятностей, так как вы подвергаетесь атакам «человек посередине».

Эта запись блога показывает, как создать пользовательский валидатор имени пользователя / пароля:

http://blogs.msdn.com/pedram/archive/2007/10/05/wcf-authentication-custom-username-and-password-validator.aspx

Если вы используете HTTPS, тогда вы сможете установить режим безопасности для транспорта вместо сообщения, и он должен работать.

Как говорится, для этой службы, если вы не хотите каждый раз передавать имя пользователя и пароль, вам понадобится основанная на сеансе служба на внутренней стороне, которая потребует использования файла cookie (но это будет обработано для вас в обязательном порядке).

...