Openfire はオープンソースです。自分で問題を調査するのに多くの労力を要しません。
ここから始めて、登録プラグインが実際にユーザーを追加する作業を行っていないことがわかります。に委任しUserManager
ます。のUserManager
実装に追加するデリゲートUserProvider
。
使用しているユーザー プロバイダーの実装を把握し、ユーザーの作成時にパスワードがどのように処理されるかを確認する必要があります。の実装を見てください
public User createUser(String username, String password, String name, String email)
throws UserAlreadyExistsException;
そして、それは明らかなはずです。パスワードはプレーンテキストであるため、ハッシュ/ソルティング/暗号化はこの時点から下流で行われることに注意してください。
編集:
そのように見えAuthFactory
ます。
/**
* Returns an encrypted version of the plain-text password. Encryption is performed
* using the Blowfish algorithm. The encryption key is stored as the Jive property
* "passwordKey". If the key is not present, it will be automatically generated.
*
* @param password the plain-text password.
* @return the encrypted password.
* @throws UnsupportedOperationException if encryption/decryption is not possible;
* for example, during setup mode.
*/
public static String encryptPassword(String password) {
if (password == null) {
return null;
}
Blowfish cipher = getCipher();
if (cipher == null) {
throw new UnsupportedOperationException();
}
return cipher.encryptString(password);
}
/**
* Returns a decrypted version of the encrypted password. Encryption is performed
* using the Blowfish algorithm. The encryption key is stored as the Jive property
* "passwordKey". If the key is not present, it will be automatically generated.
*
* @param encryptedPassword the encrypted password.
* @return the encrypted password.
* @throws UnsupportedOperationException if encryption/decryption is not possible;
* for example, during setup mode.
*/
public static String decryptPassword(String encryptedPassword) {
if (encryptedPassword == null) {
return null;
}
Blowfish cipher = getCipher();
if (cipher == null) {
throw new UnsupportedOperationException();
}
return cipher.decryptString(encryptedPassword);
}