Limitar o acesso a um serviço WCF de lazer (webHttpBinding) usando o provedor ASP.NET Membership?
-
20-08-2019 - |
Pergunta
Eu encontrei um monte de material na web sobre como usar o Provedor ASP.NET Membership com as wsHttpBindings, mas eu não vi qualquer referência a usá-lo com webHttpBindings.
Eu estou procurando um sistema que irá trabalhar em dois cenários:
- O usuário está conectado em um site asp.net eo site está a fazer chamadas para o serviço.
- O usuário acessa o serviço diretamente via REST.
Isso é possível usando o construído em estrutura (ou seja, apenas através da configuração)? Se sim, como faço para configurar o serviço? E como é que o usuário passar as credenciais para o serviço REST?
Solução
A melhor fonte que eu encontrei é aqui: http://www.leastprivilege.com/FinallyUsernamesOverTransportAuthenticationInWCF aspx
O site também tem toneladas de outras informações sobre a configuração de HTTP módulos para lidar com a autenticação básica (que eu estou supondo que você vai usar, uma vez que é o tipo de standard).
O método de autenticação Módulo HTTP está localizado no Codeplex com código de exemplo e tudo aqui: http: //www.codeplex .com / CustomBasicAuth
Outras dicas
ADO.NET Data Services você quer dizer?
Você pode construir um QueryInterceptor para uma entidade e limitar o acesso a ele. Por exemplo:
[QueryInterceptor("foo_entity")]
public Expression<Func<foo_entity, bool>> FilterMembership()
{
MembershipUser user = Membership.GetUser();
Guid userGuid = (Guid)user.ProviderUserKey;
return c => c.UserId == userGuid;
}