blob: ce7e287dbc84e6bdf50cfdc2e6a0127373fc9cfc [file] [log] [blame]
//
// 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.
. 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.
. Na janela Projetos do IDE, clique com o botão direito do mouse em Páginas Web e selecione Novo > Outro.
. No assistente de Novo Arquivo, selecione Outro como Categoria e Pasta como o Tipo de Arquivo. Clique em Próximo.
.
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.
. Repita as três últimas etapas para criar outra pasta chamada secureUser.
. Crie um novo arquivo ``html`` na pasta secureUser, clicando com o botão direito do mouse na janela Projetos e selecionando Novo > Outros.
. Selecione o tipo de arquivo HTML na categoria Outro. Clique em Próximo.
. 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.
. 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>#
----
. Clique com o botão direito do mouse na pasta secureAdmin e crie um novo arquivo ``html`` chamado pageA.
. 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>#
----
. 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>#
----
. Crie um novo arquivo ``html`` chamado ``loginError.html`` na pasta Páginas Web. Trata-se de uma página de erro simples.
. 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.
. 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[]
. 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[]
. 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.
. 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"/>
----
. Adicione uma atribuição chamada ``UserRole`` .
[source,java]
----
<role rolename="UserRole"/>
----
. Adicione um usuário chamado ``admin`` com a senha ``adminpw1`` e a atribuição ``AdminRole`` .
[source,java]
----
<user username="admin" password="adminpw1" roles="AdminRole"/>
----
. 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.
. No painel esquerdo, selecione Realms de Segurança. A página Resumo de Realms de Segurança será aberta.
. 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.
. Na página Definições de Nome do Realm, selecione Usuários e Grupos > Usuários. A tabela Usuários será exibida.
. Na tabela Usuários, clique em Novo. A página Criar Novo Usuário será aberta.
. 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[]
. Clique em OK. Retorne para a tabela Usuários.
. Clique em Novo e adicione um usuário chamado admin e a senha admin1”.
. Abra a guia Grupos. A tabela Grupos será exibida.
. Clique em Novo. A janela Criar um Novo Grupo será aberta.
. Defina o nome do grupo como userGroup. Aceite o provedor default e clique em OK. Você retornará para a tabela Grupos.
. Clique em Novo e crie o grupo adminGroup.
. 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[]
. Clique em Salvar.
. Retorne à guia Usuários.
. 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.
. 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[]
. Expanda o nó Atribuições de Segurança e clique em Adicionar para adicionar um nome de atribuição.
. 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.
. 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[]
. Clique em Add. A caixa de diálogo Adicionar Recurso da Web é aberta.
.
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[]
. Selecione Ativar Restrição de Autenticação e clique em Editar. A caixa de diálogo Editar Nomes de Atribuições será aberta.
. 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[]
. 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[]
. 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`` .
. Expanda o nó Atribuições de Segurança e clique em Adicionar para adicionar um nome de atribuição.
. 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.
|===
. 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[]
. Selecione Ativar Restrição de Autenticação e clique em Editar. A caixa de diálogo Editar Nomes de Atribuições será aberta.
. 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[]
. 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`` .
. Selecione a guia Segurança para revelar as atribuições de segurança.
. Selecione o nó da atribuição de segurança AdminRole para abrir o painel Mapeamento de Atribuição de Segurança.
.
Clique em Adicionar principal e especifique ``admin`` como o nome principal. Clique em OK.
image::images/add-principal.png[]
. Selecione o nó da atribuição de segurança UserRole para abrir o painel Mapeamento de Atribuição de Segurança.
. Clique em Adicionar Principal e especifique ``user`` como o nome principal. Clique em OK
. 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>#
----
. 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+]
|===