Aprile 26, 2024

Liferay reset admin password

Riporto una procedura per effettuare il reset della password di amministrazione su Liferay. Il metodo ufficiale riportato sul wiki consiste in un update diretto sulla tabella User_ della base di dati. Di default Liferay cripta le password su algoritmo SHA-1 salvando sul database il digest in base64. Per verificare questo è sufficiente dare un’occhiata al file portal.properties presente nel portal-impl.jar (nel caso di extension environment le proprietà sono impostate nel file portal-ext.properties).

Ecco i valori impostati di default sul file portal.properties per l’encryption e la codifica della password.

    #
    # Set the following encryption algorithm to encrypt passwords. The default
    # algorithm is SHA (SHA-1). If set to NONE, passwords are stored in the
    # database as plain text. The SHA-512 algorithm is currently unsupported.
    #
    #passwords.encryption.algorithm=BCRYPT
    #passwords.encryption.algorithm=UFC-CRYPT
    #passwords.encryption.algorithm=MD2
    #passwords.encryption.algorithm=MD5
    #passwords.encryption.algorithm=NONE
    passwords.encryption.algorithm=SHA
    #passwords.encryption.algorithm=SHA-256
    #passwords.encryption.algorithm=SHA-384
    #passwords.encryption.algorithm=SSHA

    #
    # Digested passwords are encoded via base64 or hex encoding. The default is
    # base64.
    #
    passwords.digest.encoding=base64
    #passwords.digest.encoding=hex

Prima di effettuare operazioni di modifica direttamente sul database assicurarsi sempre di avere una copia di backup dei dati. In questo esempio ho utilizzato il seguente stack applicativo.

APPLICATION STACK

SO: CentOS 6.4 64_bit
Liferay: 6.1.2-GA2
Oracle: 11.2.0.3

1. Trovo l’id del ruolo di amministrazione

SQL> select roleid, name from role_ where name = 'Administrator';
   ROLEID NAME
---------- ---------------------------------------------------------------------------
     10161 Administrator

 

2. Trovo gli utenti con ruolo di amministrazione

SQL> select * from users_roles;
    USERID     ROLEID
---------- ----------
     10158	10162
     10196	10161
     10196	10164
     10196	10165

 

3. Trovo le credenziali per l’utente amministratore 10196

SQL> select userId, screenName, password_ from user_ where userid=10196;
USERID   SCREENNAME PASSWORD_
-------- ---------  --------------
10196    admin	    bQ2A4fJEfm9p240OmdPcrfz1vnU=

 

4. Aggiorno il valore base64 della password

# plain-text:   admin
# SHA-1 hex:    d033e22ae348aeb5660fc2140aec35850c4da997 
# SHA-1 base64: 0DPiKuNIrrVmD8IUCuw1hQxNqZc=    (sul DB viene memorizzato questo valore)
SQL> update user_ set password_='0DPiKuNIrrVmD8IUCuw1hQxNqZc='where userId=10196;
SQL> select userId, screenName, password_ from user_ where userid=10196;
USERID     SCREENNAME   PASSWORD_
---------- --------  --------------
10196      admin     0DPiKuNIrrVmD8IUCuw1hQxNqZc=

 

Related posts

Leave a Reply

Your email address will not be published.