// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Protegendo uma aplicação Web no NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Protegendo uma aplicação Web no NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Protegendo uma aplicação Web no NetBeans IDE

Contribuição de Dan Kolar, Manutenção de James Branam e Jeff Rubinoff

Este documento lhe orienta a respeito dos conceitos básicos da adição de segurança a uma aplicação Web implantada em um servidor Oracle GlassFish Open Source Edition, Oracle WebLogic ou Apache Tomcat.

Este documento mostra como configurar a autenticação de segurança usando uma janela de log-in básico e usando também um form de log-in em uma página Web. Este documento guia você pelas etapas de criação de usuários no servidor Tomcat e no GlassFish Server. Depois de criar os usuários, você cria as atribuições de segurança, definindo as propriedades de segurança no descritor de implantação. Este documento também mostra como usar a autenticação JDBC para proteger sua aplicação durante a implantação do GlassFish Server.

*Duração esperada: _40 _minutos*


image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]


*Para seguir este tutorial, são necessários os recursos e o software a seguir.*

|===
|Software ou Recurso |Versão Necessária 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |Versão Java EE 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Developer Kit)+] |Versão 7 ou 8 

|Plataforma Java EE |Java EE 6 ou 7 

|Travel Database |Não é Obrigatório 

|Servidor de aplicações ou Web compatível com Java EE |Servidor Web Tomcat 7.x ou 8.x, Oracle WebLogic 11g ou
GlassFish Server Open Source Edition 4.x 
|===


== Instalando e Configurando o Ambiente de Trabalho

Instale e inicie o NetBeans IDE. Você pode seguir este tutorial usando o servidor Tomcat fornecido ou o GlassFish Server.

Verifique se o servidor está instalado e se há uma instância do servidor registrada no IDE. Você pode usar o Gerenciador de Servidores para registrar uma instância do servidor instalado. (Selecione Ferramentas > Servidores > Adicionar Servidor. Selecione “GlassFish Server <número da versão>” ou “Tomcat <número da versão>” e clique em Próximo. Clique em Procurar e localize o diretório de instalação do servidor de aplicações. Clique em Finalizar.)


==  Criando a Aplicação Web

Neste exercício, você primeiro cria o projeto de aplicação Web e a estrutura do diretório. Em seguida, você cria alguns arquivos  ``html``  simples em cada um dos diretórios seguros. A aplicação Web utiliza uma autenticação de log-in básico para acessar os diretórios seguros. Se quiser usar um form de log-in para autenticação, você pode adicionar uma página  ``jsp``  com o form.


=== Criando os Diretórios Seguros

1. Selecione Arquivo > Novo Projeto (Ctrl-Shift-N), selecione Aplicação Web na categoria Java Web e clique em Próximo.
2. Chame o projeto de  ``WebApplicationSecurity`` . Aceite as definições default.
3. (Opcional) Marque a caixa de seleção Utilizar Pasta Dedicada para Armazenamento de Bibliotecas e especifique o local da pasta de bibliotecas. Consulte link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG455[+Compartilhando uma Biblioteca com Outros Usuários+] em _Desenvolvendo Aplicações com o NetBeans IDE_ para obter mais informações sobre essa opção.
4. Clique em Próximo.
5. Selecione o servidor no qual deseja implantar a aplicação. Somente os servidores registrados com o IDE serão listados. Clique em Próximo.
6. Não é necessário adicionar um framework; portanto, clique em Finalizar.
7. Se você criou uma aplicação EE 6, vá à janela Projetos do IDE, clique com o botão direito do mouse no nó do projeto e selecione Novo > Outro > Web > Descritor de Implantação Padrão (web.xml). Aceite todos os defaults e percorra o assistente.

*Observação:* este tutorial mostra como configurar a segurança no descritor de implantação, mas as aplicações EE 6 e EE 7 usam anotações em vez de um descritor de implantação, por padrão.


[start=8]
. Se estiver usando um GlassFish ou WebLogic Server e o NetBeans IDE 7.0.1 ou posterior, você precisará gerar um descritor específico para o servidor. Clique com o botão direito do mouse no nó do projeto e selecione Novo > Outro > GlassFish > Descritor do GlassFish ou Novo > Outro > WebLogic > Descritor do WebLogic. A caixa de diálogo Criar Descritor Específico do Servidor será aberta. Aceite todos os defaults e clique em Finalizar. O descritor específico do servidor, chamado  ``glassfish-web.xml``  ou  ``weblogic.xml`` , aparecerá no projeto na pasta Arquivos de Configuração.

[start=9]
. Na janela Projetos do IDE, clique com o botão direito do mouse em Páginas Web e selecione Novo > Outro.

[start=10]
. No assistente de Novo Arquivo, selecione Outro como Categoria e Pasta como o Tipo de Arquivo. Clique em Próximo.

[start=11]
. 
No assistente de Nova Pasta, chame a pasta de secureAdmin e clique em Finalizar.

A pasta secureAdmin será exibida na janela Projetos da pasta Páginas Web.

[start=12]
. Repita as três últimas etapas para criar outra pasta chamada secureUser.

[start=13]
. Crie um novo arquivo  ``html``  na pasta secureUser, clicando com o botão direito do mouse na janela Projetos e selecionando Novo > Outros.

[start=14]
. Selecione o tipo de arquivo HTML na categoria Outro. Clique em Próximo.

[start=15]
. Chame o novo arquivo de pageU e clique em Finalizar.

Quando você clica em Finalizar, o arquivo  ``pageU.html``  é aberto no Editor de Código-Fonte.


[start=16]
. No Editor de Código-Fonte, substitua o código existente em  ``pageU.html``  pelo código a seguir:[html-tag]#<html>
   <head>
      <title>#

[source,xml]
----

User secure area[html-tag]#</title>
   </head>
   <body>
      <h1>#User Secure Area[html-tag]#</h1>
   </body>
</html>#
----

[start=17]
. Clique com o botão direito do mouse na pasta secureAdmin e crie um novo arquivo  ``html``  chamado pageA.

[start=18]
. No Editor de Código-Fonte, substitua o código existente em  ``pageA.html``  pelo código a seguir:[html-tag]#<html>
   <head>
      <title>#

[source,xml]
----

Admin secure area[html-tag]#</title>
   </head>
   <body>
      <h1>#Admin secure area[html-tag]#</h1>
   </body>
</html>#
----


=== Criando a Página de Índice JSP

Agora você criará a página de índice JSP contendo links para as áreas seguras. Quando o usuário clicar no link, será solicitado que ele forneça o nome de usuário e a senha. Se você estiver utilizando um log-in básico, esses dados serão solicitados na janela de log-in do browser default. Se você estiver utilizando uma página de form de log-in, o usuário informará o nome de usuário e a senha em um form.

1. Abra  ``index.jsp``  no Editor de Código-Fonte e adicione os seguintes links a  ``pageA.html``  e  ``pageU.html`` :[jsp-html-tag]#<p>#

[source,html]
----

Request a secure Admin page [jsp-html-tag]#<a# [jsp-html-argument]#href=#[jsp-xml-value]#"secureAdmin/pageA.html"#[jsp-html-tag]#>#here![jsp-html-tag]#</a></p>
<p>#Request a secure User page [jsp-html-tag]#<a# [jsp-html-argument]#href=#[jsp-xml-value]#"secureUser/pageU.html"# [jsp-html-tag]#>#here![jsp-html-tag]#</a></p>#
----

[start=2]
. Salve as alterações.


=== Criando um Form de Log-in (obrigatório para Tomcat e opcional para GlassFish ou WebLogic Server)

Se você quiser usar um form de log-in em vez do log-in básico, crie uma página  ``jsp``  contendo o form. Em seguida, especifique o log-in e as páginas de erro ao <<Basic_login_config,configurar o método de log-in>>.

*Importante:* Os usuários do Tomcat devem criar um form de log-in.

1. Na janela Projetos, clique com o botão direito do mouse na pasta Páginas Web e selecione Novo > JSP.
2. Defina o nome do arquivo como  ``login`` , deixe os outros campos com seu valor default e clique em Finalizar.
3. No Editor de Código-Fonte, insira o código a seguir entre as tags  ``<body>``  de  ``login.jsp`` .

[source,xml]
----

<[jsp-html-tag]#form# [jsp-html-argument]#action=#[jsp-xml-value]#"j_security_check"# [jsp-html-argument]#method=#[jsp-xml-value]#"POST"#[jsp-html-tag]#>#
   Username:[jsp-html-tag]#<input# [jsp-html-argument]#type=#[jsp-xml-value]#"text"# [jsp-html-argument]#name=#[jsp-xml-value]#"j_username"#[jsp-html-tag]#><br>#
   Password:[jsp-html-tag]#<input# [jsp-html-argument]#type=#[jsp-xml-value]#"password"# [jsp-html-argument]#name=#[jsp-xml-value]#"j_password"#[jsp-html-tag]#>
   <input# [jsp-html-argument]#type=#[jsp-xml-value]#"submit"# [jsp-html-argument]#value=#[jsp-xml-value]#"Login"#[jsp-html-tag]#>
</form>#
----

[start=4]
. Crie um novo arquivo  ``html``  chamado  ``loginError.html``  na pasta Páginas Web. Trata-se de uma página de erro simples.

[start=5]
. No Editor de Código-Fonte, substitua o código existente em  ``loginError.html``  pelo código a seguir:[html-tag]#<html>
    <head>
        <title>#

[source,xml]
----

Login Test: Error logging in[html-tag]#</title>
    </head>
    <body>
        <h1>#Error Logging In[html-tag]#</h1>
        <br/>
    </body>
</html>#
----


== Criando Usuários no Servidor de Destino

Para poder usar a segurança da autenticação de usuário/senha (log-in básico ou log-in com base em form) em aplicações Web, os usuários e suas atribuições apropriadas devem ser definidos no servidor de destino. Para fazer log-in em um servidor, a conta do usuário precisa existir nesse servidor.

A forma como você define os usuários e as atribuições varia de acordo com o servidor de destino especificado. Neste tutorial, os usuários  ``admin``  e  ``user``  são usados para testar a configuração da segurança. Você precisa confirmar que esses usuários existem nos respectivos servidores, e que as atribuições apropriadas estejam designadas aos usuários.


=== Definindo Usuários no GlassFish Server

Para este cenário, você precisará usar a Console de Administração do GlassFish Server para criar dois novos usuários chamados  ``user``  e  ``admin`` . O usuário chamado  ``user``  terá acesso limitado à aplicação, enquanto que o  ``admin``  terá privilégios de administração.

1. Abra a Console de Administração na janela Serviços do IDE e clique com o botão da direita do mouse em Servidores > GlassFish Server > Exibir Console de Administração do Domínio. A página de log-in do GlassFish Server será aberta na janela do browser. Você deverá fazer log-in usando o nome de usuário e a senha de administrador para acessar a Console de Administração.

*Observação: *O Servidor de Aplicações deve estar em execução antes de você acessar a Console de Administração. Para iniciar o servidor, clique com o botão direito do mouse no nó do GlassFish Server e selecione Iniciar.


[start=2]
. Na Console de Administração, vá até Configurações > server-config > Segurança > Realms > Arquivo. O painel Editar Realm será aberto.

image::images/edit-realm.png[]

[start=3]
. Clique no botão Gerenciar Usuários na parte superior do painel Editar Realm. O painel Usuários do Arquivo será aberto.

image::images/file-users.png[]

[start=4]
. Clique em Novo. O painel Novo Usuário do Realm do Arquivo será aberto. Digite  ``user``  como o ID de usuário e  ``userpw01``  como a senha. Clique em OK.

[start=5]
. Siga as etapas anteriores para criar um usuário chamado  ``admin``  com a senha  ``adminpw1``  no realm  ``file`` .


=== Definindo Atribuições e Usuários no Servidor Web Tomcat

Para Tomcat 7, crie um usuário com a atribuição de script de gerência e uma senha para esse usuário ao registrar o servidor no NetBeans IDE.

Os usuários e as atribuições básicas para o servidor Tomcat estão em  ``tomcat-users.xml`` . Você encontra  ``tomcat-users.xml``  no diretório  ``_<CATALINA_BASE>_\conf`` .

*Observação:* Você encontra a localização CATALINA_BASE clicando com o botão direito do mouse no nó do servidor Tomcat na janela Serviços e selecionando Propriedades. As Propriedades do Servidor serão abertas. A localização de CATALINA_BASE encontra-se na guia Conexão.

image::images/tomcat-properties.png[] image::images/catalina-base.png[]

*Observação:* Se você usar o Tomcat 6 fornecido com versões mais antigas do IDE, este servidor terá o usuário  ``ide``  definido com uma senha e as atribuições de administrador e gerenciador. A senha do usuário  ``ide``  é gerada quando o Tomcat 6 é instalado. Você pode alterar a senha do usuário  ``ide``  ou copiar a senha em  ``tomcat-users.xml`` .

*Para adicionar usuários ao Tomcat:*

1. Abra  ``_<CATALINA_BASE>_/conf/tomcat-users.xml``  em um editor.
2. Adicione uma atribuição chamada  ``AdminRole`` .

[source,java]
----

<role rolename="AdminRole"/>
----

[start=3]
. Adicione uma atribuição chamada  ``UserRole`` .

[source,java]
----

<role rolename="UserRole"/>
----

[start=4]
. Adicione um usuário chamado  ``admin``  com a senha  ``adminpw1``  e a atribuição  ``AdminRole`` .

[source,java]
----

<user username="admin" password="adminpw1" roles="AdminRole"/>
----

[start=5]
. Adicione um usuário chamado  ``user``  com a senha  ``userpw01``  e a atribuição  ``UserRole`` .

[source,java]
----

<user username="user" password="userpw01" roles="UserRole"/>
----

O arquivo  ``tomcat-users.xml``  terá a seguinte aparência:


[source,xml]
----

<tomcat-users>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
...
<role rolename="AdminRole"/>
<role rolename="UserRole"/>
<user username="user" password="userpw01" roles="UserRole"/>
<user username="admin" password="adminpw1" roles="AdminRole"/>
[User with manager-script role, defined when Tomcat 7 was registered with the IDE]
...
</tomcat-users>
----


=== Definindo Usuários e Grupos no WebLogic Server

Para este cenário, é necessário primeiro usar a Console de Administração do WebLogic Server para criar dois novos usuários chamados  ``user``  e  ``admin`` . Adicione esses usuários aos grupos  ``userGroup``  e  ``adminGroup`` , respectivamente. Posteriormente, você designará atribuições de segurança a esses grupos. O  ``userGroup``  terá acesso limitado à aplicação, enquanto que o  ``adminGroup``  terá privilégios de administração.

As instruções gerais sobre como adicionar usuários e grupos ao servidor WebLogic se encontram na link:http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13952/taskhelp/security/ManageUsersAndGroups.html[+Ajuda On-Line da Console de Administração+] do WebLogic.

*Para adicionar os usuários “user” e “admin” e os grupos ao WebLogic:*

1. Abra a Console de Administração na janela Serviços do IDE e clique com o botão direito do mouse em Servidores > WebLogic Server > Exibir Console de Administração. A página de log-in do GlassFish Server será aberta na janela do browser. Você deverá fazer log-in usando o nome de usuário e a senha de administrador para acessar a Console de Administração.

*Observação: *O Servidor de Aplicações deve estar em execução antes de você acessar a Console de Administração. Para iniciar o servidor, clique com o botão direito do mouse no nó do WebLogic Server e selecione Iniciar.


[start=2]
. No painel esquerdo, selecione Realms de Segurança. A página Resumo de Realms de Segurança será aberta.

[start=3]
. Na página Resumo de Realms de Segurança, selecione o nome do realm (o realm default é “myrealm”). A página Definições de Nome do Realm será aberta.

[start=4]
. Na página Definições de Nome do Realm, selecione Usuários e Grupos > Usuários. A tabela Usuários será exibida.

[start=5]
. Na tabela Usuários, clique em Novo. A página Criar Novo Usuário será aberta.

[start=6]
. Digite no nome “user” e na senha “userpw01”. Opcionalmente, digite uma descrição. Aceite o Provedor de Autenticação default. 

image::images/wl-admin-newuser.png[]

[start=7]
. Clique em OK. Retorne para a tabela Usuários.

[start=8]
. Clique em Novo e adicione um usuário chamado “admin” e a senha “admin1”.

[start=9]
. Abra a guia Grupos. A tabela Grupos será exibida.

[start=10]
. Clique em Novo. A janela Criar um Novo Grupo será aberta.

[start=11]
. Defina o nome do grupo como userGroup. Aceite o provedor default e clique em OK. Você retornará para a tabela Grupos.

[start=12]
. Clique em Novo e crie o grupo adminGroup.

[start=13]
. Abra a guia Usuários para o próximo procedimento.

Agora, adicione o usuário  ``admin``  ao  ``adminGroup``  e o usuário  ``user``  ao  ``userGroup`` .

*Para adicionar usuários a grupos:*

1. Na guia Usuários, clique no usuário  ``admin`` . A página Definições do usuário será aberta.
2. Na página Definições, abra a guia Grupos.
3. Nos Grupos Pai: Disponível: tabela, selecione  ``adminGroup`` .
4. Clique na seta para a direita, >. O  ``adminGroup``  será exibido nos Grupos Pais: Selecionado: tabela.

image::images/wl-admin-usersettings.png[]

[start=5]
. Clique em Salvar.

[start=6]
. Retorne à guia Usuários.

[start=7]
. Clique no usuário  ``user``  e adicione-o ao  ``userGroup`` .


== Configurando o Método de Log-in

Ao configurar o método de log-in da aplicação, você pode usar a janela de log-in fornecida pelo browser para autenticação de log-in básico. Como alternativa, você pode criar uma página Web com um form de log-in. Ambos os tipos de configuração de log-in são baseadas na autenticação de usuário/senha.

Para configurar o log-in, crie _restrições de segurança_ e designe atribuições a elas. As restrições de segurança definem um conjunto de arquivos. Quando você designa uma atribuição a uma restrição, os usuários com essa atribuição passam a ter acesso aos conjuntos de arquivos definidos pela restrição. Por exemplo, neste tutorial você designa a atribuição AdminRole à restrição AdminConstraint e as atribuições UserRole e AdminRole à restrição UserConstraint. Isso significa que os usuários com a AdminRole têm acesso aos arquivos de Administrador e arquivos de Usuário, mas os usuários com a UserRole têm acesso somente ao arquivos de Usuário.

*Observação:* Não é um caso comum conceder o acesso separado da atribuição de administrador para arquivos de usuário. Uma alternativa é designar somente a UserRole à UserConstraint e, no lado do servidor, conceder a AdminRole a *usuários* específicos que também são administradores. Você deve decidir como o acesso será concedido caso a caso.

Configure o método de log-in para a aplicação, configurando  ``web.xml`` . O arquivo  ``web.xml``  pode ser encontrado no diretório Arquivos de Configuração da janela Projetos.


=== Log-in Básico

Quando você utiliza a configuração de log-in básico, a janela de log-in é fornecida pelo browser. É necessário ter um nome de usuário e uma senha válidos para acessar o conteúdo seguro.

As seguintes etapas mostram como configurar um log-in básico para GlassFish Servers e WebLogic Servers. Usuários Tomcat precisam usar o <<form-login,log-in com form>>.

*Para configurar o log-in básico:*

1. Na janela Projetos, expanda o nó Arquivos de Configuração do projeto e clique duas vezes em  ``web.xml`` . O arquivo  ``web.xml``  será aberto no Editor Visual.
2. Clique em Segurança na barra de ferramentas para abrir o arquivo na view Segurança.
3. Expanda o nó Configuração de Log-in e defina a Configuração de Log-in como Básico.

*Observação: *Se você quiser usar um form, selecione Form em vez de Básico e especifique o log-in e as páginas de erro de log-in.


[start=4]
. Insira um nome de realm, dependendo do seu servidor.
* *GlassFish:* Especifique  ``file``  como o Nome do Realm. Este é o nome default do realm onde você criou os usuários no GlassFish Server.
* *Tomcat:* Não especifique um nome de realm.
* *WebLogic:* Especifique o nome do realm. O realm default é  ``myrealm`` .

image::images/security-roles.png[]

[start=5]
. Expanda o nó Atribuições de Segurança e clique em Adicionar para adicionar um nome de atribuição.

[start=6]
. Adicione as Seguintes Atribuições de Segurança:
*  ``AdminRole`` . Os usuários adicionados a esta atribuição terão acesso ao diretório  ``secureAdmin``  do servidor.
*  ``UserRole`` . Os usuários adicionados a esta atribuição terão acesso ao diretório  ``secureUser``  do servidor.

*Cuidado:* os nomes de atribuição no GlassFish devem começar com letra maiúscula.


[start=7]
. Crie e configure um restrição de segurança chamada  ``AdminConstraint`` , fazendo o seguinte:
1. Clique em Adicionar Restrição de Segurança. Será exibida uma seção para a nova restrição de segurança.
2. Indique  ``AdminConstraint``  para o Nome de View da nova restrição de segurança.

image::images/admin-constraint.png[]

[start=3]
. Clique em Add. A caixa de diálogo Adicionar Recurso da Web é aberta.

[start=4]
. 
Na caixa de diálogo Adicionar Recurso da Web, defina o Nome do Recurso como  ``Admin``  e o Padrão de URL como  ``/secureAdmin/*``  e clique em OK. A caixa de diálogo é fechada.

*Observação: * Ao utilizar um asterisco (*), você permite que o usuário tenha acesso a todos os arquivos dessa pasta.

image::images/addwebresource.png[]

[start=5]
. Selecione Ativar Restrição de Autenticação e clique em Editar. A caixa de diálogo Editar Nomes de Atribuições será aberta.

[start=6]
. Na caixa de diálogo Editar Nomes de Atribuições, selecione AdminRole no painel esquerdo, clique em Adicionar e em OK.

Depois de concluídas as etapas acima, o resultado deverá ser semelhante à figura a seguir:

image::images/constraints.png[]

[start=8]
. Crie e configure uma restrição de segurança chamada  ``UserConstraint`` , fazendo o seguinte:
1. Clique em Adicionar restrição de segurança para criar uma nova restrição de segurança.
2. Indique  ``UserConstraint``  para o Nome de View da nova restrição de segurança.
3. Clique em Adicionar para adicionar uma Coleção de Recursos da Web.
4. Na caixa de diálogo Adicionar Recurso da Web, defina o Nome do Recurso como  ``User``  e o Padrão de URL como  ``/secureUser/*``  e clique em OK.
5. Selecione Ativar Restrição de Autenticação e clique em Editar para editar o campo Nome da Atribuição.
6. Na caixa de diálogo Editar Nomes de Atribuições, selecione AdminRole e UserRole no painel esquerdo, clique em Adicionar e em OK.
Observação: Você também pode definir o time-out da sessão em web.xml. Para definir o time-out, clique na guia Geral do Editor Visual e especifique quanto tempo você deseja que a sessão dure. O default é 30 minutos. 
 


=== Log-in com Form

A utilização de um form para log-in permite que você personalize o conteúdo das páginas de log-in e de erro. As etapas para configurar a autenticação usando um form são as mesmas para a configuração do log-in básico, com a diferença que você especifica as <<loginform,páginas de log-in e de erro>> criadas.

As seguintes etapas mostram como configurar um form para log-in

1. Na janela Projetos, clique duas vezes em  ``web.xml``  localizado no diretório  ``Web Pages/WEB-INF``  para abrir o arquivo no Editor Visual.
2. Clique em Segurança na barra de ferramentas para abrir o arquivo na view Segurança e expanda o nó Configuração de Log-in.
3. Defina a Configuração de Log-in como Form.
4. Defina a Página de Log-in com Form, clicando em Procurar e localizando  ``login.jsp`` .
5. 
Defina a Página de Erro de Form, clicando em Procurar e localizando  ``loginError.html`` .

image::images/login-forms.png[]

[start=6]
. Insira um nome de realm, dependendo do seu servidor.
* *GlassFish:* Especifique  ``file``  como o Nome do Realm. Este é o nome default do realm onde você criou os usuários no GlassFish Server.
* *Tomcat:* Não especifique um nome de realm.
* *WebLogic:* Especifique o nome do realm. O realm default é  ``myrealm`` .

[start=7]
. Expanda o nó Atribuições de Segurança e clique em Adicionar para adicionar um nome de atribuição.

[start=8]
. Adicione as Seguintes Atribuições de Segurança:
|===

|Atribuição Servidor |Descrição 

|AdminRole |Os usuários adicionados a esta atribuição terão acesso ao diretório  ``secureAdmin``  do servidor. 

|UserRole |Os usuários adicionados a esta atribuição terão acesso ao diretório  ``secureUser``  do servidor. 
|===

[start=9]
. Crie e configure um restrição de segurança chamada  ``AdminConstraint`` , fazendo o seguinte:
1. Clique em Adicionar restrição de segurança para criar uma nova restrição de segurança.
2. Especifique  ``AdminConstraint``  para o Nome de View da nova restrição de segurança.
3. Clique em Adicionar para adicionar uma Coleção de Recursos da Web.
4. 
Na caixa de diálogo Adicionar Recurso da Web, defina o Nome do Recurso como  ``Admin``  e o Padrão de URL como  ``/secureAdmin/*``  e clique em OK.

*Observação: * Ao utilizar um asterisco (*), você permite que o usuário tenha acesso a todos os arquivos dessa pasta.

image::images/addwebresource.png[]

[start=5]
. Selecione Ativar Restrição de Autenticação e clique em Editar. A caixa de diálogo Editar Nomes de Atribuições será aberta.

[start=6]
. Na caixa de diálogo Editar Nomes de Atribuições, selecione AdminRole no painel esquerdo, clique em Adicionar e em OK.

Depois de concluídas as etapas acima, o resultado deverá ser semelhante à figura a seguir:

image::images/constraints.png[]

[start=10]
. Crie e configure uma restrição de segurança chamada  ``UserConstraint`` , fazendo o seguinte:
1. Clique em Adicionar restrição de segurança para criar uma nova restrição de segurança.
2. Indique  ``UserConstraint``  para o Nome de View da nova restrição de segurança.
3. Clique em Adicionar para adicionar uma Coleção de Recursos da Web.
4. Na caixa de diálogo Adicionar Recurso da Web, defina o Nome do Recurso como  ``User``  e o Padrão de URL como  ``/secureUser/*``  e clique em OK.
5. Selecione Ativar Restrição de Autenticação e clique em Editar para editar o campo Nome da Atribuição.
6. Na caixa de diálogo Editar Nomes de Atribuições, selecione AdminRole e UserRole no painel esquerdo, clique em Adicionar e em OK.
Observação: Você também pode definir o time-out da sessão em web.xml. Para definir o time-out, clique na guia Geral do Editor Visual e especifique quanto tempo você deseja que a sessão dure. O default é 30 minutos.


== Configurando os Descritores de Implantação de Servidor

Se você estiver implantando sua aplicação em um GlassFish Server ou WebLogic Server, será necessário configurar o descritor de implantação de servidor para mapear as atribuições de segurança definidas em  ``web.xml`` . O descritor de implantação de servidor está listado no nó Arquivos de Configuração do seu projeto na janela Projetos.


=== Configurando o Descritor de Implantação do GlassFish Server

O descritor de implantação do GlassFish Server é chamado de  ``glassfish-web.xml`` . O descritor de implantação de servidor se encontra na pasta Arquivos de Configuração. Se não for esse o caso, crie o descritor clicando com o botão direito do mouse no nó do projeto e selecionando Novo > Outro > GlassFish > Descritor de Implantação do GlassFish. Aceite todos os defaults.

Observe que os valores inseridos em  ``web.xml``  serão exibidos em  ``glassfish-web.xml`` . O IDE pega esses valores do  ``web.xml``  para você.

*Para configurar o descritor de implantação do GlassFish:*

1. Na janela Projetos, expanda o nó Arquivos de Configuração do projeto e clique duas vezes em  ``glassfish-web.xml`` . O descritor de implantação do  ``glassfish-web.xml``  será aberto em um editor especial tabulado para descritores de implantação do GlassFish.

*Observação:* Em versões do GlassFish Server anteriores à 3.1, esse arquivo é chamado  ``sun-web.xml`` .


[start=2]
. Selecione a guia Segurança para revelar as atribuições de segurança.

[start=3]
. Selecione o nó da atribuição de segurança AdminRole para abrir o painel Mapeamento de Atribuição de Segurança.

[start=4]
. 
Clique em Adicionar principal e especifique  ``admin``  como o nome principal. Clique em OK.

image::images/add-principal.png[]

[start=5]
. Selecione o nó da atribuição de segurança UserRole para abrir o painel Mapeamento de Atribuição de Segurança.

[start=6]
. Clique em Adicionar Principal e especifique  ``user``  como o nome principal. Clique em OK

[start=7]
. Salve as alterações em  ``glassfish-web.xml`` .

Também é possível exibir e editar o  ``glassfish-web.xml``  no editor de XML clicando na guia XML. Se você abrir o  ``glassfish-web.xml``  no editor XML, você verá que o  ``glassfish-web.xml``  possui as seguintes informações de mapeamento de atribuição de segurança:

[xml-tag]#<security-role-mapping>
    <role-name>#

[source,xml]
----

AdminRole[xml-tag]#</role-name>
    <principal-name>#admin[xml-tag]#</principal-name>
</security-role-mapping>
<security-role-mapping>
    <role-name>#UserRole[xml-tag]#</role-name>
    <principal-name>#user[xml-tag]#</principal-name>
</security-role-mapping>#
----


=== Configurando o Descritor de Implantação do WebLogic Server

O descritor de implantação do WebLogic é chamado de  ``weblogic.xml`` . Atualmente, o <<gf-dd,suporte para descritores de implantação do GlassFish>> do IDE não se estende aos descritores de implantação do WebLogic. Portanto, você precisa fazer todas as alterações no  ``weblogic.xml``  manualmente.

O descritor de implantação do WebLogic Server se encontra na pasta Arquivos de Configuração. Se não for esse o caso, crie o descritor clicando com o botão direito do mouse no nó do projeto e selecionando Novo > Outro > WebLogic > Descritor de Implantação do WebLogic. Aceite todos os defaults.

*Observação:* Para obter mais informações sobre a segurança de aplicações Web no WebLogic, incluindo segurança declarativa e programática, consulte link:http://download.oracle.com/docs/cd/E21764_01/web.1111/e13711/thin_client.htm[+Oracle Fusion Middleware Programming Security for Oracle WebLogic Server.+].

*Para configurar o descritor de implantação do WebLogic:*

1. Na janela Projetos, expanda o nó Arquivos de Configuração do projeto e clique duas vezes em  ``weblogic.xml`` . O descritor de implantação do  ``weblogic.xml``  será aberto no Editor.
2. Dentro do elemento  ``<weblogic-web-app>`` , digite ou cole os seguintes elementos de designação de atribuição de segurança:[xml-tag]#<security-role-assignment>
    <role-name>#

[source,xml]
----

AdminRole[xml-tag]#</role-name>
    <principal-name>#adminGroup[xml-tag]#</principal-name>
</security-role-assignment>
<security-role-assignment>
    <role-name>#UserRole[xml-tag]#</role-name>
    <principal-name>#userGroup[xml-tag]#</principal-name>
</security-role-assignment>#
----

[start=3]
. Salve as alterações em  ``weblogic.xml`` .


== Implantando e Executando a Aplicação

Na janela Projetos, clique com o botão direito do mouse no nó do projeto e selecione Executar.

*Observação:* Por default, o projeto foi criado com a funcionalidade Compilar ao Salvar ativado, então, não é necessário compilar o código primeiro para executar a aplicação no IDE. Para obter mais informações sobre a funcionalidade Compile on Save, consulte link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG510[+Building Java Projects+] no _Developing Applications with NetBeans IDE User's Guide_.

Após a construção e a implantação da aplicação no servidor, a página inicial será aberta no seu Web browser. Selecione a área segura que deseja acessar, clicando em *admin* ou *user*.

image::images/deploy1.png[]

Após o fornecimento de usuário e senha, existem três resultados possíveis:

* A senha deste usuário está correta e o usuário tem privilégios para o conteúdo protegido -> a página de conteúdo protegido será exibida

image::images/deploy2.png[]

* 
A senha deste usuário está incorreta -> A página de erro será exibida

image::images/deploy3.png[]

* 
A senha deste usuário está correta, mas o usuário não tem direito a acessar o conteúdo protegido -> o browser exibe Erro 403 O acesso ao recurso solicitado foi negado

image::images/deploy4.png[]


== Resumo

Neste tutorial, você criou uma aplicação Web protegida. Você editou as definições de segurança usando os editores de Descritor web.xml e glassfish-web.xml, criando páginas Web com log-ins seguros e diversas identidades.



== Consulte Também

* link:quickstart-webapps.html[+Introdução ao Desenvolvimento de Aplicações Web+]
* link:../../trails/java-ee.html[+Trilha de Aprendizado do Java EE e Java Web+]


|===
|
link:/about/contact_form.html?to=3&subject=Feedback: Securing a Web Application[+Enviar Feedback neste Tutorial+]

 
|===
