lp ii autenticação em asp.net profº. enrique pimentel leite de oliveira [email protected]

23
LP II LP II Autenticação em ASP.NET Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira Profº. Enrique Pimentel Leite de Oliveira [email protected] [email protected]

Upload: internet

Post on 18-Apr-2015

113 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

LP IILP IIAutenticação em ASP.NETAutenticação em ASP.NETLP IILP IIAutenticação em ASP.NETAutenticação em ASP.NET

Profº. Enrique Pimentel Leite de OliveiraProfº. Enrique Pimentel Leite de [email protected]@facens.br

Page 2: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Introdução Introdução Introdução Introdução

Segurança de sistemas Web é um Segurança de sistemas Web é um assunto complexo e muitas vezes assunto complexo e muitas vezes confuso, porém necessário.confuso, porém necessário.

Esse tipo de segurança envolve Esse tipo de segurança envolve validação das credencias de usuários validação das credencias de usuários (autenticação) e permissão de acesso (autenticação) e permissão de acesso aos recursos (autorização).aos recursos (autorização).

Em ASP .NET, existem diversas Em ASP .NET, existem diversas formas de implementar segurança formas de implementar segurança em páginas Web.em páginas Web.

Page 3: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação e Autenticação e AutorizaçãoAutorizaçãoAutenticação e Autenticação e AutorizaçãoAutorização

A autenticação e a autorização devem ser configuradas de A autenticação e a autorização devem ser configuradas de forma correta para que a segurança da aplicação Web forma correta para que a segurança da aplicação Web funcione adequadamente.funcione adequadamente.

A autenticação é o processo de identificação do usuário que A autenticação é o processo de identificação do usuário que está requisitando a informação. O usuário é identificado por está requisitando a informação. O usuário é identificado por uma credencial, normalmente um nome de usuário e uma uma credencial, normalmente um nome de usuário e uma senha. senha.

O objetivo da autenticação é garantir que a pessoa é quem O objetivo da autenticação é garantir que a pessoa é quem está dizendo que é.está dizendo que é.

Se a autenticação falhar (credenciais inválidas) o acesso será Se a autenticação falhar (credenciais inválidas) o acesso será negado a um usuário desconhecidonegado a um usuário desconhecido

Por outro lado, se a credencial for válida o acesso será Por outro lado, se a credencial for válida o acesso será permitido.permitido.

Uma vez fornecida a identificação do usuário, o sistema Uma vez fornecida a identificação do usuário, o sistema definirá quais recursos poderão ser acessados. Esse definirá quais recursos poderão ser acessados. Esse processo conhecido como autorização, visa estabelecer processo conhecido como autorização, visa estabelecer níveis de acesso aos recursos.níveis de acesso aos recursos.

Page 4: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Processo típico de Processo típico de SegurançaSegurançaProcesso típico de Processo típico de SegurançaSegurança

Credenciais do usuário

Autenticado?

Tenta acessar o recurso

Autorizado?

Acesso Negado

Acesso ao recurso

Não

Não

Sim

Sim

Page 5: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Configurando a aplicação Configurando a aplicação WebWebConfigurando a aplicação Configurando a aplicação WebWeb

A configuração da autenticação e A configuração da autenticação e autorização no ASP .NET é realizado autorização no ASP .NET é realizado no arquivo web.config e, quando no arquivo web.config e, quando necessário nas configurações do IIS.necessário nas configurações do IIS.

AtençãoAtenção: Erros na configuração do : Erros na configuração do web.config podem causar erros web.config podem causar erros inesperados na aplicação.inesperados na aplicação.

Page 6: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

AutenticaçãoAutenticaçãoAutenticaçãoAutenticação

A sintaxe da tag A sintaxe da tag <authentication><authentication>, , utilizada para configurar a autenticação é:utilizada para configurar a autenticação é:

<authentication mode<authentication mode="Windows|Forms|Passport|None"="Windows|Forms|Passport|None">>

<forms name<forms name="name"="name"

loginUrlloginUrl="url" ="url"

protectionprotection="All|None|Encryption|Validation"="All|None|Encryption|Validation"

timeouttimeout="30" ="30" pathpath="/" ="/"

requireSSL=requireSSL="true|false""true|false"

slidingExpiration=slidingExpiration="true|false""true|false">>

</forms></forms>

<passport redirectUrl="<passport redirectUrl="internalinternal"/>"/>

</authentication></authentication>

Page 7: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

AutorizaçãoAutorizaçãoAutorizaçãoAutorização

A sintaxe da tag A sintaxe da tag <authentication><authentication>, , utilizada para configurar a utilizada para configurar a autenticação é:autenticação é:

<authorization> <authorization>

<allow users<allow users="="comma-separated list of userscomma-separated list of users" " rolesroles="="comma-separated list of rolescomma-separated list of roles““

verbsverbs="="comma-separated list of verbscomma-separated list of verbs""/>/>

<deny users<deny users="="comma-separated list of userscomma-separated list of users““

rolesroles="="comma-separated list of rolescomma-separated list of roles““

verbsverbs="="comma-separated list of verbscomma-separated list of verbs""/>/>

</authorization></authorization>

Page 8: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

AutorizaçãoAutorizaçãoAutorizaçãoAutorização

Subtag Descrição

<allow> Permite acesso aos recursos basedo em:users: Uma lista sepadara por vígula de nomes que estão autorizados à acessar os resursos.

Um ponto de interrogação (?) permite usuários anônimos; um asterisco (*) permite todos os usuários.

roles: Uma lista separada por vírgulas de regras que dão acesso aos recursos.verbs: uma lista separada por vírgulas de métodos de transmissão HTTP que podem ser

utilizados para acessar os recursos. Os Verbs registrados para o ASP.NET são GET, HEAD, POST, e DEBUG.

<deny> Impossibilita o acesso aos recursos basedo em:users: Uma lista separada por vírgulas de nomes de usuários que não têm acesso ao recurso.

Um ponto de interrogação (?) indica que usuários anônimos não tem acesso; um asterísco (*) indica que todos os usuários não tem acesso.

roles: Uma lista separada por vírgulas de regras que não permitem acesso aos recursos.verbs: uma lista separada por vírgulas de métodos de transmissão HTTP que não podem ser

utilizados para acessar os recursos. Os Verbs registrados para o ASP.NET são GET, HEAD, POST, e DEBUG.

Page 9: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Provedores de Provedores de autenticaçãoautenticaçãoProvedores de Provedores de autenticaçãoautenticação

O ASP.NET fornece 4 provedores de O ASP.NET fornece 4 provedores de autenticação:autenticação:

None – Sem autenticaçãoNone – Sem autenticaçãoForms – Confia em logon via formulário e Forms – Confia em logon via formulário e cookies cookies Passport – Serviço de autenticação centralizado Passport – Serviço de autenticação centralizado provido pela Microsoft provido pela Microsoft Windows – baseado na autenticação do Windows – baseado na autenticação do Windows, o IIS cuida da autenticaçãoWindows, o IIS cuida da autenticação

O provedor é especificado no arquivo O provedor é especificado no arquivo Web.configWeb.config<!-- web.config --> <authentication

mode = "[Windows|Forms|Passport|None]"> </authentication>

Page 10: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação PassportAutenticação PassportAutenticação PassportAutenticação Passport

Este é um serviço de autenticação Este é um serviço de autenticação centralizado provido pela Microsoft centralizado provido pela Microsoft que oferece um único logon e que oferece um único logon e serviços específicos para os sites serviços específicos para os sites ASP.NET participantes, em conjunto ASP.NET participantes, em conjunto com o Microsoft® Passport software com o Microsoft® Passport software development kit (SDK), provê development kit (SDK), provê funcionalidades semelhantes a funcionalidades semelhantes a autenticação Forms para usuários do autenticação Forms para usuários do Passport.Passport.

Page 11: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação WindowsAutenticação WindowsAutenticação WindowsAutenticação Windows

Este provedor utiliza as Este provedor utiliza as potencialidades de autenticação do potencialidades de autenticação do IIS. Depois que o IIS completa sua IIS. Depois que o IIS completa sua autenticação, ASP.NET usa a autenticação, ASP.NET usa a credencial da identidade autenticada credencial da identidade autenticada para autorizar o acesso. para autorizar o acesso.

Page 12: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação Forms Autenticação Forms Autenticação Forms Autenticação Forms

Com este provedor requisições não Com este provedor requisições não autenticadas são redirecionadas para um autenticadas são redirecionadas para um formulário HTML especificado.formulário HTML especificado.

O usuário pode então fornecer as credenciais O usuário pode então fornecer as credenciais necessárias, e enviar o formulário de volta para necessárias, e enviar o formulário de volta para o servidor. Se a aplicação autenticar a o servidor. Se a aplicação autenticar a requisição (usando lógica específica de requisição (usando lógica específica de aplicação), o ASP.NET emite um aplicação), o ASP.NET emite um cookiecookie que que contém as credenciais ou uma chave para contém as credenciais ou uma chave para readquirir a identidade do cliente. readquirir a identidade do cliente.

Requisições subseqüêntes são emitidas com o Requisições subseqüêntes são emitidas com o cookiecookie no cabeçalho da requisição, significando no cabeçalho da requisição, significando que autenticações subseqüêntes são que autenticações subseqüêntes são desnecessárias.desnecessárias.

Page 13: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Uma interface de usuário personalizada aceita Uma interface de usuário personalizada aceita credenciais do usuáriocredenciais do usuário

Autenticação é efetuada de acordo com um Autenticação é efetuada de acordo com um banco de dados usando código próprio, por banco de dados usando código próprio, por exemplo.exemplo.

Cliente Requisição: Bemvindo.aspx

Resposta: Login.aspx

Requisição: Login.aspx + dado

Resposta: Bemvindo.aspx + Cookie

Servidor Web

Usuário autenticado

Page 14: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

O processo para autenticação via Forms é:O processo para autenticação via Forms é:1.1. Um cliente faz uma requisição à página Um cliente faz uma requisição à página

segura;segura;2.2. Se a requisição não contiver um cookie de Se a requisição não contiver um cookie de

autenticação válido, o Web Server autenticação válido, o Web Server redireciona o usuário para a URL especificada redireciona o usuário para a URL especificada no atributo loginUrl da tag Authentication no no atributo loginUrl da tag Authentication no arquivo web.config;arquivo web.config;

3.3. Credenciais são fornecidas no ofrmulário e Credenciais são fornecidas no ofrmulário e enviadas via método post;enviadas via método post;

4.4. Se as credenciais forem válidas (isso pode Se as credenciais forem válidas (isso pode ser determinado de diferentes formas), o ser determinado de diferentes formas), o ASP.NET cria um ASP.NET cria um cookie cookie de autenticação no de autenticação no cliente;cliente;

5.5. O usuário pode, então ser redirecionado de O usuário pode, então ser redirecionado de volta à página inicialmente requisitada. volta à página inicialmente requisitada.

Page 15: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

ASP.NET

IIS

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Permissão

Cookie autorizad

o?

Redireciona para página de login

Acesso Negado

NãoSim

Requisição cliente

Usuário fornece as credenciais

Autenticado?Cria o cookie

Acesso permitido

NãoSim

Page 16: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Configurações necessárias para autenticação do Configurações necessárias para autenticação do tipo Forms.tipo Forms.

O exemplo acima configura um site com O exemplo acima configura um site com autenticação baseada em formulário, autenticação baseada em formulário, especificando o nome do especificando o nome do cookiecookie e a págian de e a págian de login, utilizada se a autenticação inicial falhar.login, utilizada se a autenticação inicial falhar.

<configuration> <system.web> <authentication mode="Forms"> <forms name="401kApp" loginUrl="/login.aspx"></forms> </authentication> </system.web></configuration>

Page 17: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Quando a autenticação do tipo Forms é Quando a autenticação do tipo Forms é utilizada, torna-se necessário impedir o acesso utilizada, torna-se necessário impedir o acesso de usuários não autorizados (caso contrário, por de usuários não autorizados (caso contrário, por que ativar a autenticação do tipo Forms?). Para que ativar a autenticação do tipo Forms?). Para isso utiliza-ses a tag <authorization>:isso utiliza-ses a tag <authorization>:

<configuration> <system.web> <authentication mode="Forms"> <forms name="401kApp" loginUrl="/login.aspx"></forms> </authentication> <authorization> <deny user=“?” /> <!-- acesso negado a usuário anônimos !--> </authorization> </system.web></configuration>

Page 18: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Para utilizar as configurações Para utilizar as configurações realizadas no web.config, deve-se realizadas no web.config, deve-se criar:criar:

1.1.Página de login (default.aspx), Página de login (default.aspx), contendo dois Textbox (usuário e contendo dois Textbox (usuário e senha) e um botão para autenticação;senha) e um botão para autenticação;

2.2.Uma página (restrito.aspx) com um Uma página (restrito.aspx) com um label para testar se a autenticação está label para testar se a autenticação está funcionando.funcionando.

Page 19: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Código para autenticação do usuário Código para autenticação do usuário (no evento click do botão de login):(no evento click do botão de login):

if (txtUsuario.Text == “nome” && txtSenha.Text == “1234”){ FormsAuthentication.SetAutCookie(txtUsuario.Text, false); Response.Redirect(“restrito.aspx”);}else //Exibir mensagem de erro de autenticação

Page 20: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Após o usuário digitar suas credenciais, é Após o usuário digitar suas credenciais, é realizada uma comparação do usuário e senha. realizada uma comparação do usuário e senha.

Caso sejam iguais, o método SetAuthCookie da Caso sejam iguais, o método SetAuthCookie da classe abstrata FormsAuthentication, cria um classe abstrata FormsAuthentication, cria um cookie com o nome do usuário (primeiro cookie com o nome do usuário (primeiro parâmetro). O segundo parâmetro especifica se o parâmetro). O segundo parâmetro especifica se o cookie será ou não armazenado na máquina do cookie será ou não armazenado na máquina do cliente, para eventuais novos acessos. Em seguida cliente, para eventuais novos acessos. Em seguida o usuário é direcionado para a página o usuário é direcionado para a página restrito.aspx.restrito.aspx.

Se as credenciais forem inválidas, devemos exibir Se as credenciais forem inválidas, devemos exibir uma mensagem de erro.uma mensagem de erro.

Page 21: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Outro método da classe FormsAuthentication que Outro método da classe FormsAuthentication que podemos utilizar para criar o “ticket” que podemos utilizar para criar o “ticket” que possibilita o usuário acessar áreas restritas é o possibilita o usuário acessar áreas restritas é o RedirectFromLoginPage, que cria o cookie RedirectFromLoginPage, que cria o cookie exatamente igual ao SetAuthCookie, porém exatamente igual ao SetAuthCookie, porém redireciona o usuário a página inicialmente redireciona o usuário a página inicialmente requisitada.requisitada.

Caso a página requisitada seja a de login, esse Caso a página requisitada seja a de login, esse método redireciona o usuário para a página método redireciona o usuário para a página default.aspx.default.aspx.if (txtUsuario.Text == “nome” && txtSenha.Text == “1234”)

{ FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, false);}else //Exibir mensagem de erro de autenticação

Page 22: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

Autenticação FormsAutenticação FormsAutenticação FormsAutenticação Forms

Após realizada a autenticação o usuário Após realizada a autenticação o usuário terá acesso a todo conteúdo permitido do terá acesso a todo conteúdo permitido do site.site.

Para finalizar a autenticação do usuário, Para finalizar a autenticação do usuário, utiliza-se o método SignOut(), da classe utiliza-se o método SignOut(), da classe FormsAuthentication, o botão ou link de FormsAuthentication, o botão ou link de logout deve ter o seguinte código:logout deve ter o seguinte código:

Esse método remove o cookie de Esse método remove o cookie de autenticação e força o usuário realizar novo autenticação e força o usuário realizar novo login, caso deseje acessar um recurso login, caso deseje acessar um recurso restrito novamente.restrito novamente.

FormsAuthentication.SignOut();

Page 23: LP II Autenticação em ASP.NET Profº. Enrique Pimentel Leite de Oliveira enrique@facens.br

BibliografiaBibliografiaBibliografiaBibliografia

Autenticação em ASP.NET

Linha de Código - ASP.NET Configurando a segurança na sua aplicação

Protegendo o Aplicativo ASP.NET e os Web Services

Payne, Chris. Teach Yourself ASP.NET Payne, Chris. Teach Yourself ASP.NET in 21 Days, Second Edition. Samsin 21 Days, Second Edition. Sams