Página Inicial > WCF > Segurança WCF – Utilizando autenticação Integrada (Windows).

Segurança WCF – Utilizando autenticação Integrada (Windows).

27 de julho de 2009 Deixe um comentário Go to comments

No artigo anterior, vimos como criar um serviço WCF e publicar no IIS, agora iremos inserir mais segurança no nosso exemplo.

Imagine que este serviço esteja publicado em uma intranet e tivéssemos a intenção de garantir que apenas os usuários de um determinado grupo de usuários do Windows tivessem acesso, para isso vamos utilizar a autenticação Windows no serviço.

Para exemplicar o funcionamento, veja um esboço na imagem abaixo do arquitetura de segurança, sugerido pelo Microsoft Pattners & Practices:

1-) Clique com o botão direto do web.config  e escolha a opção Edit WCF Configuration, vamos utilizar o Microsoft Service Configurator Editor para configurar nosso serviço.

                - Clique na pasta Bindings –> New Binding Configuration  -> Escolha o wsHttpBinding.
                - No Name do wsHttpBinding  deixe como configBinding

- Na aba Security, configure o mode como Transport, e no TransportSecurity Properties deixe a configuração ProxyCredentialType como Node e o campo TransportClientCredentialType como Windows. 

- Agora iremos vincular esta configuração do Binding ao EndPoint do nosso serviço, para isso clique na pasta Services -> expanda WCFService.Service1 -> EndPoints -> Escolha a Service EndPoint do nosso serviço e vincule a configuração que criamos através do campo BindingConfiguration.

4-) Veja como deverá ficar a configuração do Service Model no web.config:

      <system.serviceModel>

            <services>

                  <service behaviorConfiguration="WCFServiceHost.Service1Behavior" name="WCFService.Service1">

                        <endpoint address="" binding="wsHttpBinding" contract="WCFService.IService1">

                             <identity>

                                   <dns value="localhost"/>

                             </identity>

                        </endpoint>

                        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

                  </service>

            </services>

            <behaviors>

                  <serviceBehaviors>

                        <behavior name="WCFServiceHost.Service1Behavior">

                             <!– To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment –>

                             <serviceMetadata httpGetEnabled="true"/>

                             <!– To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information –>

                             <serviceDebug includeExceptionDetailInFaults="false"/>

                        </behavior>

                  </serviceBehaviors>

            </behaviors>

      </system.serviceModel>

 

3-) Na web.config do WCFServiceHost insira a tag abaixo dentro do <system.web>

<authentication mode="Windows"/>

 

Estamos informando que o tipo de autenticação deste serviço será através do Windows.

4-) A restrição de acesso, será feita através da tag authorization, veja que no exemplo abaixo estamos permitindo os usuários da role “npscode\BusinessDivision” e negando acesso para todos os outros usuários.

<authorization>

      <allow roles="npscode\BusinessDivision" />

      <deny users="*" />

</authorization>

 

Agora pode publique novamente seu serviço e na configuração faça os seguintes passos:

 Acesse o IIS -> Clique em Propriedade do site que hospeda o serviço -> Directory Security -> Edit Authentication and acess control -> desmarque a opção de Enable anonymous acess -> e marque a opção Integrated Windows Authentication.

5-) Finalmente, acesse o endereço do site, ao clicar no endereço do serviço do wsdl (chamar o XML) perceba que ele irá apresentar a tela de autenticação do windows.

 

Veja um exemplo para pegar o usuário que esta sendo utilizado dentro do contexto do serviço:

       OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;

Abraço,

About these ads
CategoriasWCF
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: