Esta foi uma parte que não encontrei em lugar algum, tive que fazer engenharia reversa do sistema e adaptá-lo. Existe uma contribuição minha na wiki do Pentaho.
Será necessário a modificação de 2 arquivos.
- administration-console/resource/config/login.conf
- administration-console/resource/config/console.properties
Fazer o download do driver atual do PostgreSQL, note que há uma diferença entre usar a JDK 1.5 e 1.6, leia no site, entenda e baixe a correta. Copiar o driver responsável pela conexão ao postgresql para o diretório do administration-console:
# cd /pentaho
# wget http://jdbc.postgresql.org/download/postgresql-8.3-605.jdbc4.jar
# rm -f /pentaho/biserver-ce/tomcat/common/lib/postgresql-8.2-504.jdbc3.jar
# cp postgresql-8.3-605.jdbc4.jar /pentaho/biserver-ce/tomcat/common/lib/
# cp biserver-ce/tomcat/common/lib/postgresql-8.3-605.jdbc4.jar administration-console/jdbc/
Configurar autenticação no PostgreSQL:
login.conf - JDBCLoginModule
O módulo
JDBCLoginModule armazena as configurações de usuário e senha e regras de acesso na base de dados, que por sua vez é acessado via driver JDBC. As configurações personalizadas de usuário, senha, tabelas e drivers são armazenadas no arquivo login.conf.
# cd /biserver/pentaho/administration-console/resource/config
# vi login.conf
JDBCLoginModule {
org.mortbay.jetty.plus.jaas.spi.JDBCLoginModule required
debug="true"
dbUrl="jdbc:postgresql://localhost:5432/hibernate"
dbUserName="pentaho_user"
dbPassword="password"
dbDriver="org.postgresql.Driver"
userTable="admconsole_users"
userField="username"
credentialField="credential"
userRoleTable="admconsole_roles"
userRoleUserField="userrole"
userRoleRoleField="role";
};
Você terá que adicionar todas as linhas no arquivo, isto é, remover as antigas e adicionar estas.
As opções de configuração desse arquivo são:
- dbUrl: Endereço url para o driver acessar a base de dados, jdbc:postgresql://<endereco ip>:<porta>/<banco>
- dbUserName: Nome do usuário para acessar a base especificada
- dbPassword: Senha do usuário especificado
- dbDriver: O driver da classe de conexão com o banco, org.postgresql.Driver
- userTable: Nome da tabela de usuários
- userField: Nome do campo do usuário
- credentialField: Nome do campo de credenciais, senha.
- UserRoleTable: Nome da tabela de regras
- userRoleUserField: Nome do campo e regras do usuário
- userRoleRoleField: Nome do campo de regras administrativas
A regra do banco deve satisfazer o seguinte retorno de consulta:
select credential from admconsole_users where username = ?;
select role from admconsole_roles where userrole = ?;
Abaixo segue o esquema de criação das tabelas e campos, uma vez conectado ao banco hibernate com usuário com poderes administrativos, fazer:
create table admconsole_users (
username character varying(60),
credential character varying(60)
);
create table admconsole_roles (
userrole character varying (60),
role character varying (60)
);
grant select on admconsole_users to pentaho_user;
grant select on admconsole_roles to pentaho_user;
insert into admconsole_users values ('admin', 'admin');
insert into admconsole_roles values ('admin', 'server-administrator');
A consulta retornará os seguintes resultados:
#
select credential from admconsole_users where username = 'admin';
credential
------------
admin
(1 row)
hibernate=# select role from admconsole_roles where userrole = 'admin';
role
----------------------
server-administrator
(1 row)
console.properties
Esse arquivo é responsável por habilitar as configurações a serem utilizadas pelo JDBC para conexão do console-administration com o banco.
console.security.enabled=true
console.security.roles.allowed=Admin,server-administrator,content-administrator
console.security.roles.delimiter=,
console.security.realm.name=Pentaho
console.security.login.module.name=JDBCLoginModule
console.security.auth.config.path=resource/config/login.conf
console.security.callback.handler=org.mortbay.jetty.plus.jaas.callback.DefaultCallbackHandler
Aqui acaba a configuração, se você desejar SSL, o que não é nada mal para trafegar dados importantes sobre seu negócio, parta para a próxima etapa.