Glassfish更改管理员密码

问题描述 投票:2回答:3

如何使用密码文件更改Glassfish域的管理员密码?我知道在提示时手动输入密码的传统方法。

但是,我想使用脚本更改管理员密码,我不必手动输入密码。

glassfish-3
3个回答
3
投票

这是可能的,但如果您想以最简单的方式完全编写脚本,则需要2个密码文件。

创建一个临时文件(在我的示例中为tmpfile),它将保存当前密码(默认为空)和所需的新密码:

AS_ADMIN_PASSWORD = AS_ADMIN_NEWPASSWORD = myNewPassword

现在创建一个密码(在我的示例中为pwdfile)文件,其中包含更改的管理员密码:

AS_ADMIN_PASSWORD = myNewPassword

然后,您可以使用以下命令使用这些文件更改密码,确保在更改密码时使用tmpfile,然后使用pwdfile

 $PAYARA_PATH/bin/asadmin start-domain
 $PAYARA_PATH/bin/asadmin --user $ADMIN_USER --passwordfile=/opt/tmpfile change-admin-password
 $PAYARA_PATH/bin/asadmin --user $ADMIN_USER --passwordfile=/opt/pwdfile enable-secure-admin
 $PAYARA_PATH/bin/asadmin restart-domain

This example was adapted from the way the Payara Server dockerfile works


0
投票

据我所知,出于安全原因,不可能通过文件将其更改为参数。

您可以考虑替代解决方案(管道),但始终需要确认密码。 https://docs.oracle.com/cd/E19798-01/821-1758/change-admin-password-1/index.html


0
投票

对于仍然有兴趣手动设置管理员帐户密码的任何人:

我尝试根据Payara Repo的当前实现生成位于“glassfish / domains / {ACTIVE_DOMAIN_NAME} / config / admin-keyfile”中的“admin-keyfile”的内容。此文件(作为FileRealm的数据源)用于在访问端口4848下的管理界面时对管理员用户进行身份验证。

此文本文件的每一行代表一个帐户,结构为

用户名;密码;组

字段“PASSWORD”的前缀是哈希算法关键字(用大括号括起来,例如“SSHA”或“SSHA256”),后跟连接盐渍哈希的BASE64编码哈希值和盐值本身(一些随机字节):

{SSHA} BASE64(SHA(密码,盐),盐)

简而言之:如果您想手动生成用户帐户,您可以使用以下Python脚本:

import hashlib
from base64 import b64encode
from secrets import token_bytes
from getpass import getpass

username = 'admin' # input('Username: ')
plainTextPassword = getpass()
randomSalt = token_bytes(8)
passwordHash = hashlib.sha256()
passwordHash.update(plainTextPassword.encode('utf-8'))
passwordHash.update(randomSalt)
passwordDigest = passwordHash.digest()
# cryptic range reflects the strange implementation... feel free to change it to "range(98)"
# https://github.com/payara/Payara/blob/6488cbdc90fd0f6c42de6a42affcd09f697be715/nucleus/common/common-util/src/main/java/org/glassfish/security/common/SSHA.java#L108
for run in range(2, 101):
    passwordHash = hashlib.sha256()
    passwordHash.update(passwordDigest)
    passwordDigest = passwordHash.digest()
saltedHashAndSalt = b64encode(passwordDigest + randomSalt).decode('utf-8')
result = '{0};{{SSHA256}}{1};asadmin'.format(username, saltedHashAndSalt)
print(result)

将控制台输出插入“admin-keyfile”并(重新)启动服务器。

© www.soinside.com 2019 - 2024. All rights reserved.