Как защитить службу WCF Rest с помощью имени пользователя и пароля?
Я новичок в WCF и хочу знать, как я могу защитить службу WCF Rest. У меня есть веб-сайт asp.net, доступ к нему имеют только зарегистрированные пользователи, приложение использует службу, размещенную на том же IIS-сервере, мой вопрос: как я могу ограничить использование этой службы, для которой ее могут использовать только зарегистрированные пользователи, зная, что сервисом могут пользоваться многие клиенты (Android, iPhone, ...). какой тип аутентификации я могу использовать? для тестирования сервиса я создал winform и использую HttpWebRequest.PS: я не могу использовать https. Спасибо
1 ответ
Самый простой способ - использовать режим совместимости asp.net. Вызов службы WCF приведет к той же предварительной обработке, которая используется для страниц ASP.NET, включая проверку подлинности ASP.NET и файлов cookie сеанса. Вы также сможете проверить HttpContext, включая httpcontext.current.user.identity.isauthenticated. Если пользователь не аутентифицирован, выведите исключение или верните код ошибки. Вот еще немного информации: http://msdn.microsoft.com/en-us/library/aa702682.aspx.
Таким образом, если вы уже используете формы авторизации для своего приложения, и сервис должен быть вызван после того, как пользователь вошел в ваше приложение, вы настроены.
Вы также можете создать сервис аутентификации. Служба позволит клиенту отправлять имя пользователя / пароль и будет использовать аутентификацию ASP.NET для аутентификации пользователя. Он отправит обратно cookie-файл аутентификации, а затем вы сможете проверить будущие обращения в службу поддержки, как описано выше. См. http://msdn.microsoft.com/en-us/library/bb386582.aspx.
Я считаю, что служба аутентификации может вызываться с помощью json. См. Как вызвать.NET AuthenticationService из json-клиента без ASP.NET.