Em alguns cenários que vivemos no cotidiano, faz-se necessário o envio de informações adicionais para um serviço, como por exemplo: o usuário que está acessando o sistema (não quis dizer o usuário de autenticação/autorização do serviço, mas sim o usuário que está utilizando o sistema que por sua vez consome o serviço para realizar alguma ação).
Como fazer isto evitando que em todo método do WCF você necessite incluir um novo parâmetro com a informação adicional?
Basta utilizar o header da mensagem que é enviada ao serviço WCF!
Para incluir um header em todas as mensagens de um determinado endpoint, você precisará realizar as seguintes ações:
José Otávio Quaglio
desenvolvimento na prática
sexta-feira, 5 de abril de 2013
terça-feira, 4 de setembro de 2012
Aplicando Custom RoleProvider no WCF para autorizar a execução de método
Conforme explicado no post anterior sobre Custom RoleProvider, neste post utilizarei a classe do RoleProvider para implementar a autorização de execução de um método no WCF a partir da credential enviada pelo client.
Explicando melhor
Existem cenários em que queremos autorizar somente determinados usuários para executar determinados métodos. Esse é o exemplo que trato abaixo, aonde somente a role "GrupoConsulta" tem a permissão de executar o método "Consultar" no WCF.
Para que esta validação seja efetuada, o usuário vindo do client (via ClientCredential) deverá pertencer à role "GrupoConsulta". Esta verificação é feita utilizando o método "IsUserInRole" do RoleProvider, que foi implementado no post anterior. Com a classe do RoleProvider pronta, o trabalho a ser realizado no WCF é mais simples e requer apenas uma configuração e, claro, informar ao método do WCF que somente a Role "X" terá acesso de execução.
Explicando melhor
Existem cenários em que queremos autorizar somente determinados usuários para executar determinados métodos. Esse é o exemplo que trato abaixo, aonde somente a role "GrupoConsulta" tem a permissão de executar o método "Consultar" no WCF.
Para que esta validação seja efetuada, o usuário vindo do client (via ClientCredential) deverá pertencer à role "GrupoConsulta". Esta verificação é feita utilizando o método "IsUserInRole" do RoleProvider, que foi implementado no post anterior. Com a classe do RoleProvider pronta, o trabalho a ser realizado no WCF é mais simples e requer apenas uma configuração e, claro, informar ao método do WCF que somente a Role "X" terá acesso de execução.
terça-feira, 28 de agosto de 2012
Custom RoleProvider
Aproveitando o post anterior, no qual eu publiquei um exemplo de implementação de um custom MembershipProvider, neste post tratarei sobre a implementação de um custom RoleProvider.
A implementação é bem simples!
Basta apenas herdar a classe RoleProvider (que se encontra no namespace: System.Web.Security) e sobrescrever os métodos que sua aplicação irá utilizar. Para o exemplo abaixo sobrescrevi somente o método "IsUserInRole", que o programa utiliza para verificar se o usuário pertence a determinada role.
Referência: http://msdn.microsoft.com/pt-br/library/system.web.security.roleprovider.aspx
A implementação é bem simples!
Basta apenas herdar a classe RoleProvider (que se encontra no namespace: System.Web.Security) e sobrescrever os métodos que sua aplicação irá utilizar. Para o exemplo abaixo sobrescrevi somente o método "IsUserInRole", que o programa utiliza para verificar se o usuário pertence a determinada role.
public class customRoleProvider : RoleProvider
{
public override bool IsUserInRole(string username, string roleName)
{
//Implementação para identificar se o usuário está na role informada.
}
//ocultei os outros métodos do RoleProvider
//para facilitar o entendimento e
//não ficar muito código no post.
}
Dentro da tag system.web, adicione a tag "roleManager" contendo a referência do custom RoleProvider.
<roleManager enabled="true">
<providers>
<add name="customRoleProvider" type="jQuaglio.customRoleProvider, jQuaglio" />
</providers>
</roleManager>
Referência: http://msdn.microsoft.com/pt-br/library/system.web.security.roleprovider.aspx
terça-feira, 21 de agosto de 2012
Custom MembershipProvider
Para criarmos um controle de acesso a uma aplicação e reaproveitar todas as funcionalidades do Membership disponíveis no ASP.NET MVC ou ASP.NET WebForms, devemos utilizar a classe MembershipProvider, disponível no namespace: "System.Web.Security".
Crie uma classe e herde de MembershipProvider. Quando esta ação for realizada, obrigatoriamente precisaremos efetuar o override de alguns métodos. Não há necessidade de escrever um código para todos os métodos (isto dependerá do que for utilizado).
Crie uma classe e herde de MembershipProvider. Quando esta ação for realizada, obrigatoriamente precisaremos efetuar o override de alguns métodos. Não há necessidade de escrever um código para todos os métodos (isto dependerá do que for utilizado).
Assinar:
Postagens (Atom)