Ограничение доступа к службе WCF REST (webHttpBinding) с помощью поставщика членства ASP.NET?
-
20-08-2019 - |
Вопрос
В Интернете я нашел много материалов об использовании поставщика членства ASP.NET с wsHttpBindings, но не нашел никаких упоминаний об его использовании с webHttpBindings.
Я ищу систему, которая будет работать в двух сценариях:
- Пользователь вошел на веб-сайт asp.net, и веб-сайт выполняет вызовы службы.
- Пользователь получает доступ к сервису напрямую через REST.
Возможно ли это с использованием встроенной структуры (т.только через настройку)?Если да, то как мне настроить службу?И как пользователь передает учетные данные службе REST?
Решение
Лучший источник, который я нашел, находится здесь: http://www.leastprivilege.com/FinallyUsernamesOverTransportAuthenticationInWCF.aspx
На сайте также есть масса другой информации о настройке HTTP-модулей для базовой аутентификации (которую, я предполагаю, вы будете использовать, поскольку это своего рода стандарт).
Метод аутентификации HTTP-модуля находится на Codeplex с примером кода и всем остальным здесь: http://www.codeplex.com/CustomBasicAuth
Другие советы
Вы имеете в виду службы данных ADO.NET?
Вы можете создать QueryInterceptor для сущности и ограничить доступ к ней.Например:
[QueryInterceptor("foo_entity")]
public Expression<Func<foo_entity, bool>> FilterMembership()
{
MembershipUser user = Membership.GetUser();
Guid userGuid = (Guid)user.ProviderUserKey;
return c => c.UserId == userGuid;
}