Como usar a proteção htpasswd no Tomcat?
-
09-09-2019 - |
Pergunta
Eu já criou um arquivo de banco de dados do usuário usando o comando htpasswd do Apache. Este arquivo é usado agora por vários outros aplicativos como o Apache e subversão.
Os usuários em são criados assim:
htpasswd /path/to/users.htpasswd peter
Este arquivo de usuário é global, não por diretório.
Como posso fazer Tomcat 6 uso este mesmo arquivo como uma região de segurança?
Solução
Existem duas opções:
-
Use o Apache como um front-end para o tomcat (usando mod_jk ou mod_proxy_ajp) eo Apache fazer a autenticação. Você pode encontrar detalhes sobre como fazê-lo aqui
-
Se quiser que o tomcat para fazer a autenticação, então você precisa usar algo ot mais do que o arquivo htpasswd. Há 4 maneiras de economizar credenciais dos usuários - usando banco de dados, JNDI / LDAP, um arquivo XML ou um provedor de JAAS. Você pode ler sobre todas as opções no Realm Configuração HOW-TO .
Outras dicas
A maioria semelhante ao htpasswd pode ser a MemoryRealm . Eu tive problemas de mim para encontrar um exemplo simples como usá-lo, então eu vou postar um exemplo de código fácil aqui:
-
Configurar uma função, nome de usuário e senha em tomcat-users.xml
-
O seu web.xml deve conter algo como:
<security-constraint> <web-resource-collection> <web-resource-name> My Protected WebSite </web-resource-name> <url-pattern> /* </url-pattern> <http-method> GET </http-method> <http-method> POST </http-method> </web-resource-collection> <auth-constraint> <!-- the same like in your tomcat-users.conf file --> <role-name> test </role-name> </auth-constraint> </security-constraint> <login-config> <auth-method> BASIC </auth-method> <realm-name> Basic Authentication </realm-name> </login-config> <security-role> <description> Test role </description> <role-name> test </role-name> </security-role>
-
Adicione isto a seu arquivo server.xml:
<Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
Para proteger o acesso ao seu webapp Tomcat, você pode implementar a sua restrição de segurança simples (por exemplo, em /var/lib/tomcat7/webapps/*/WEB-INF/web.xml
) como abaixo (basta adicioná-lo antes </web-app>
final):
<!-- This security constraint protects your webapp interface. -->
<login-config>
<!-- Define the Login Configuration -->
<auth-method>BASIC</auth-method>
<realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<!-- Specifying a Secure Connection -->
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml -->
<security-role>
<role-name>*</role-name>
</security-role>
O elemento login-config contém o elemento
auth-method
, que especifica o método de autenticação que usamos, que éBASIC
. O elementosecurity-constraint
contém 3 elementos:web-resource-collection
,auth-constraint
, euser-data-constraint
. O web-resource-collection especifica as partes do nosso aplicativo que exigem autenticação. O/*
indica que toda a aplicação requer autenticação. Os especifica auth-restrição do papel que um usuário precisa ter para acessar os recursos protegidos. transporte de garantia da-restrição-os dados do usuário pode serNONE
,CONFIDENTIAL
ouINTEGRAL
. Nós configurá-lo paraNONE
, o que significa que redirecionar paraSSL
não é necessária quando você tenta bater o recurso protegido.
Também certifique-se que você tem linha:
<Realm className="org.apache.catalina.realm.MemoryRealm" />
dentro de sua conf/server.xml
(seção Engine
).
Se você não alterou quaisquer arquivos de configuração, por favor, examine o conf/tomcat-users.xml
arquivo na sua instalação (locate tomcat-users.xml
). Esse arquivo deve conter as credenciais para deixá-lo usar Tomcat webapp.
Por exemplo, para adicionar a função de gerente-gui para um usuário tomcat
nomeado com uma senha de s3cret
, adicione o seguinte para o arquivo de configuração listados acima:
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
Em seguida, você pode acessar o seu gerente webapps de /manager/html
(por exemplo recarregar após as alterações de configuração).
Leia mais:. Gestor App HOW-TO
Em seguida, reiniciar o Tomcat e quando acessar a sua webapp, deve pedir-lhe as credenciais certas.
Veja também:
- HTTP autenticação básica em Java em local do oracle
- Especificando um mecanismo de autenticação em Java no local do Oracle
- Configuração do Realm HOW-TO no local do Apache Tomcat
- Configurando segurança baseada papel no tomcat
- Como faço para usar autenticação básica com o Tomcat?