...
1. Edite o arquivo domain.xml localizado na pasta [diretório_instalação]\appserver\domain\configuration.
2. Localize e substitua o trecho abaixo:
Bloco de código |
---|
language | xml |
---|
title | domain.xml |
---|
|
<login-module code="com.totvs.foundation.auth.FoundationDatabaseServerLoginModule" flag="sufficient" module="com.totvs.foundation.auth">
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="HEX"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module>
<login-module code="com.totvs.foundation.auth.FoundationJwtLoginModule" flag="sufficient" module="com.totvs.foundation.auth">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module> |
3. Informe os dados de acesso à fonte de dados LDAP, conforme o tipo de validação utilizado em seu Active Diretory:
Deck of Cards |
---|
|
Card |
---|
default | true |
---|
label | Com credencial encriptada |
---|
| Caso seja utilizado o LDAP com necessidade de credencial, deve-se possuir as credenciais de um usuário válido e com permissão de consulta no diretório LDAP (Active Directory). Os dados de acesso devem ser informados nas propriedades java.naming,security.principal (login) e bindCredential (senha encriptada - veja abaixo como gerar a senha encriptada), após substituir pelo trecho abaixo.
Bloco de código |
---|
language | xml |
---|
theme | Eclipse |
---|
title | domain.xml |
---|
| <login-module code="com.totvs.foundation.auth.FoundationJwtLoginModule" flag="sufficient" module="com.totvs.foundation.auth">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module>
<login-module code="com.totvs.foundation.auth.FoundationExtLdapLoginModule" flag="sufficient" module="com.totvs.foundation.auth">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.provider.url" value="ldap://<SERVIDOR>:<PORTA>/"/>
<module-option name="java.naming.security.authentication" value="simple"/>
<module-option name="java.naming.security.protocol" value=""/>
<module-option name="java.naming.security.principal" value="<USUARIO>@<DOMINIO>"/> <!-- Exemplo: value="[email protected]" -->
<module-option name="bindCredential" value="<SENHA_ENCRIPTADA>" />
<module-option name="uidAttributeID" value="sAMAccountName"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="loginCombinedWithDatabase" value="false"/>
<module-option name="baseCtxDN" value="DC=<ESTRUTURA>"/>
<module-option name="rolesCtxDN" value="DC=<ESTRUTURA>"/>
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="HEX"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module> |
Nota |
---|
| O TOTVS Fluig precisa estar atualizado com os pacotes 1.8.1-230718, 1.8.0-230718 ou superior para o funcionamento da senha criptografada. |
Encriptação da senha LDAP
Nessa etapa, a senha LDAP é encriptada usando o método principal da classe SecureIdentityLoginModule, passando como parâmetro a senha em texto plano do LDAP utilizado. Para fazer a configuração, siga os passos abaixo: Deck of Cards |
---|
history | false |
---|
id | Encriptação |
---|
| Card |
---|
default | true |
---|
id | 01 |
---|
label | Passo 01 |
---|
| Navegue até a pasta raiz de instalação, e acesse a pasta appserver. Linux ==> /opt/fluig/appserver Windows ==> c:\fluig\appserver |
Card |
---|
| Gere a senha encriptada.
Bloco de código |
---|
| ../jdk-64/bin/java -cp modules/system/layers/base/org/jboss/logging/main/jboss-logging-3.3.0.Final.jar:modules/system/layers/base/org/picketbox/main/picketbox-5.0.3.Final.jar org.picketbox.datasource.security.SecureIdentityLoginModule senha#do#LDAP@123! |
Bloco de código |
---|
| java -cp modules/system/layers/base/org/picketbox/main/picketbox-5.0.3.Final.jar org.picketbox.datasource.security.SecureIdentityLoginModule senha#do#LDAP@123! |
Nota |
---|
| Neste caso senha#do#LDAP@123!, será a senha de acesso ao LDAP, e o resultado será: Encoded password: -73d03118655333edd11db66184fee4f35a6d08d87b9a0393 |
|
|
|
Card |
---|
| Caso seja utilizado o LDAP com necessidade de credencial, deve-se possuir as credenciais de um usuário válido e com permissão de consulta no diretório LDAP (Active Directory). Os dados de acesso devem ser informados nas propriedades java.naming,security.principal (login) e java.naming,security.credentials (senha), após substituir pelo trecho abaixo.
Bloco de código |
---|
language | xml |
---|
theme | Eclipse |
---|
title | domain.xml |
---|
| <login-module code="com.totvs.foundation.auth.FoundationJwtLoginModule" flag="sufficient" module="com.totvs.foundation.auth">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module>
<login-module code="com.totvs.foundation.auth.FoundationExtLdapLoginModule" flag="requiredsufficient" module="com.totvs.foundation.auth">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.provider.url" value="ldap://<SERVIDOR>:<PORTA>/"/>
<module-option name="java.naming.security.authentication" value="simple"/>
<module-option name="java.naming.security.protocol" value=""/>
<module-option name="java.naming.security.principal" value="<USUARIO>@<DOMINIO>"/> <!-- Exemplo: value="[email protected]" -->
<module-option name="java.naming.security.credentials" value="<SENHA>"/>
<module-option name="uidAttributeID" value="sAMAccountName"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="loginCombinedWithDatabase" value="false"/>
<module-option name="baseCtxDN" value="DC=<ESTRUTURA>"/>
<module-option name="rolesCtxDN" value="DC=<ESTRUTURA>"/>
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="HEX"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module> |
|
Card |
---|
| - Caso seja utilizado a forma de validação direta, sem necessidade credencial, substitua pelo trecho abaixo:
Bloco de código |
---|
language | xml |
---|
theme | Eclipse |
---|
title | domain.xml |
---|
| <login-module code="com.totvs.foundation.auth.FoundationJwtLoginModule" flag="sufficient" module="com.totvs.foundation.auth">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module>
<login-module code="com.totvs.foundation.auth.FoundationLdapLoginModule" flag="requiredsufficient" module="com.totvs.foundation.auth">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.provider.url" value="ldap://<SERVIDOR>:<PORTA>/"/>
<module-option name="java.naming.security.authentication" value="simple"/>
<module-option name="java.naming.security.protocol" value=""/>
<module-option name="uidAttributeID" value="sAMAccountName"/>
<module-option name="principalDNSuffix" value="@<DOMINIO>"/>
<module-option name="rolesCtxDN" value="DC=<ESTRUTURA>"/>
<module-option name="loginCombinedWithDatabase" value="false"/>
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="HEX"/>
<module-option name="principalClass" value="com.totvs.technology.foundation.common.TOTVSTechPrincipal"/>
</login-module> |
|
|
Dica |
---|
|
Caso opte por utilizar o login combinado, ou seja, deseja permitir tanto o acesso através do login/senha do Active Directory quanto da plataforma, altere o valor da propriedade loginCombinedWithDatabase para "true". Assim o usuário poderá utilizar ambos os tipos de credenciais para autenticar-se na plataforma.
|
Autenticação do usuário wcmadmin após a configuração de autenticação LDAP
...
No arquivo domain.xml, quando configurada a autenticação via LDAP é informado o parâmetro:
Bloco de código |
---|
<module-option name="loginCombinedWithDatabase" value="false"/> |
Quando definido como false, este parâmetro indica que o login funciona apenas com a senha do Active Directory e não funcionará com a senha que há na base. Como o wcmadmin é um usuário apenas da plataforma, ele não existe no AD.
Há duas formas para corrigir a situação:
1. Criar um usuário com o campo login do AD igual a 'wcmadmin' e senha de sua preferência, assim a plataforma irá logar o usuário wcmadmin igual aos demais usuários, através do AD.
2. Alterar o parâmetro "loginCombinedWithDatabase" no arquivo domain.xml (que fica no diretório <Diretório de instalação>\appserver\domain\configuration) para 'true'. Com isso, a plataforma irá permitir o login tanto com a senha da base de dados quanto com a senha do AD. Nesse caso o usuário wcmadmin irá se logar com a senha da base de dados normalmente. Demais usuários que tentarem se logar com a senha da base de dados também conseguirão.
Cadastro dos usuários
...
Para que o usuário consiga acessar a plataforma utilizando LDAP, seu login deverá ser criado na plataforma utilizando o padrão do Active Directory (AD) configurado. Por exemplo, considere o login e e-mail abaixo:
...
Propriedade baseCtxDN: define o DN fixo do contexto de pesquisa para papéis de usuário. Considere que este não é o nome distinto de onde os papéis reais estão localizados, mas o DN dos objetos que contêm a localização dos papéis de usuário (isto é, para o diretório ativo, este é o DN com a conta de usuário).
Dica |
---|
|
Para mais informações sobre as propriedades rolesCtxDN e baseCtxDN clique aqui ou confira um exemplo de uso aqui. |
...