Вопрос или проблема
Я столкнулся с проблемой сброса пароля администратора WebLogic. Вот шаги, которые я выполнил последовательно. Пожалуйста, помогите понять, почему это не работает таким образом.
У меня есть 2 управляемых экземпляра, работающих на двух отдельных компьютерах.
Шаг 1.
Остановить экземпляр административного сервера (я не останавливал менеджер узлов и другие 2 управляемых сервера).
Шаг 2.
Установить переменные окружения.
cd $DOMAIN_HOME/bin
. ./setDomainEnv.sh
Шаг 3.
Затем выполнил следующую команду для создания нового пароля.
cd ../security
mv DefaultAuthenticatorInit.ldift oldDefaultAuthenticator
java weblogic.security.utils.AdminAccount weblogic новый_пароль .
Шаг 4.
Сделал резервную копию существующего файла boot.properties
и создал новый файл. Также сделал резервную копию каталога данных административного сервера. Создал новый файл boot.properties
с следующей конфигурацией
с простым текстовым именем пользователя (weblogic_admin) и паролем (новый_пароль).
cd ../servers/AdminServer
mv data data_old
cd security/
mv boot.properties oldboot.properties
Шаг 5. Затем я перезапустил административный сервер. Административный сервер был успешно перезапущен, и я смог войти в админскую консоль с моим новым именем пользователя и паролем. Проблема появилась, когда я попытался остановить административный сервер. Когда я выполняю sh stopWeblogicAdmin.sh, возникает следующая ошибка. Но если я завершить процесс административного сервера, то я могу запустить административный сервер без проблем. Я также могу войти на сервер. Я также могу остановить и запустить управляемые экземпляры через админскую консоль. Но почему это не работает только при попытке остановить? Может кто-нибудь помочь мне с этим?
Stopping Weblogic Server...
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
Connecting to t3://jipsl13t:12001 with userid weblogic_admin ...
This Exception occurred at Fri Jan 18 12:20:09 GMT-00:00 2013.
javax.naming.AuthenticationException [Root exception is java.lang.SecurityException: User: weblogic_admin, failed to be authenticated.]
at weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:42)
at weblogic.jndi.WLInitialContextFactoryDelegate.toNamingException(WLInitialContextFactoryDelegate.java:788)
at weblogic.jndi.WLInitialContextFactoryDelegate.pushSubject(WLInitialContextFactoryDelegate.java:682)
at weblogic.jndi.WLInitialContextFactoryDelegate.newContext(WLInitialContextFactoryDelegate.java:469)
at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:376)
at weblogic.jndi.Environment.getContext(Environment.java:315)
at weblogic.jndi.Environment.getContext(Environment.java:285)
at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactoryDelegate.java:117)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at weblogic.management.scripting.WLSTHelper.populateInitialContext(WLSTHelper.java:520)
at weblogic.management.scripting.WLSTHelper.initDeprecatedConnection(WLSTHelper.java:573)
at weblogic.management.scripting.WLSTHelper.initConnections(WLSTHelper.java:313)
at weblogic.management.scripting.WLSTHelper.connect(WLSTHelper.java:203)
at weblogic.management.scripting.WLScriptContext.connect(WLScriptContext.java:61)
at weblogic.management.scripting.utils.WLSTUtil.initializeOnlineWLST(WLSTUtil.java:147)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.python.core.PyReflectedFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject.invoke(Unknown Source)
at org.python.pycode._pyx4.connect$1(<iostream>:16)
at org.python.pycode._pyx4.call_function(<iostream>)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.pycode._pyx15.f$0(/product/jip/jipsl11t/wls/eni132_domain/shutdown.py:6)
at org.python.pycode._pyx15.call_function(/product/tsm/jipsl11t/wls/eni132_domain/shutdown.py)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyCode.call(Unknown Source)
at org.python.core.Py.runCode(Unknown Source)
at org.python.util.PythonInterpreter.execfile(Unknown Source)
at weblogic.management.scripting.WLST.main(WLST.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native Method)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at weblogic.WLST.main(WLST.java:29)
Caused by: java.lang.SecurityException: User: weblogic_admin, failed to be authenticated.
at weblogic.common.internal.RMIBootServiceImpl.authenticate(RMIBootServiceImpl.java:116)
at weblogic.common.internal.RMIBootServiceImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
Проблема при вызове WLST - Traceback (внутренний последний):
Файл "/product/jip/jipsl11t/wls/eni132_domain/shutdown.py", строка 6, в ?
Файл "<iostream>", строка 22, в connect
Файл "<iostream>", строка 646, в raiseWLSTException
WLSTException: Произошла ошибка при выполнении подключения: User: weblogic_admin, не прошел аутентификацию.
Используйте dumpStack (), чтобы просмотреть весь трассировочный стек.
Готово.
Остановка сервера Derby...
Кажется, вы пытаетесь остановить WebLogic с другим пользователем (отличным от того, который был установлен в процессе сброса пароля).
Пожалуйста, проверьте, есть ли в вашем скрипте остановки или stopWeblogicAdmin.sh
пользователь weblogic_admin
и его пароль.
Затем измените его на пользователя weblogic и новый пароль.
Такое поведение на самом деле ожидаемо. Управляемый сервер реплицирует локальный LDAP с административного сервера во время запуска, так что ваши управляемые серверы фактически содержат старого пользователя weblogic. Кстати, есть способы расшифровать пароли, хранящиеся в boot.properties, если у вас есть данные в SerializedSystemIni.dat, так что вы могли бы сделать это вместо создания главного пользователя заново.
Ответ или решение
Ваша ситуация связана с изменением пароля администратора WebLogic и возникшими при этом проблемами при его остановке. Давайте разберем шаги, которые вы выполнили, и уточним, как разрешить вашу проблему.
Пошаговый анализ и решение проблемы:
-
Остановка серверов: Вы правильно остановили администраторский сервер, но не завершили работу Node Manager и управляемых серверов. Это не является проблемой, но важно понимать, что управляемые серверы могут хранить кэшированные учетные данные, которые будут нарушены после изменения пароля администратора.
-
Настройка переменных окружения: Установка переменных среды выполняется корректно. Убедитесь, что вы находитесь в правильном контексте и рабочем каталоге вашего домена.
-
Смена пароля: Вы правильно выполнили команду для изменения пароля. Перемещение файла
DefaultAuthenticatorInit.ldift
также является правильным шагом для обеспечения того, чтобы новая учетная запись была инициализирована. -
Создание нового boot.properties: После изменения пароля вы сделали резервную копию
boot.properties
и создали новый файл, содержащий новые учетные данные. Это критически важный шаг, и вы сделали его правильно. -
Проблема с остановкой администратора: Проблема, с которой вы столкнулись при вызове
sh stopWeblogicAdmin.sh
, связана с тем, что скрипт использует старые учетные данные для подключения к администраторскому серверу. Когда вы меняли пароль, все экземпляры управляемого сервера продолжают использовать старые данные, так как они кэшируют информацию о пользователях и паролях при старте.
Решение проблемы
-
Проверьте файл stopWeblogicAdmin.sh: Убедитесь, что в этом скрипте используются новые учетные данные. Если скрипт сконфигурирован с использованием старых данных, необходимо обновить его.
-
Перезапуск управляемых серверов: Рекомендуется остановить и перезапустить управляющие серверы, чтобы они получили обновленный LDAP с новым паролем администратора. Это можно сделать, сначала остановив все управляемые серверы, затем администраторский сервер, и после этого – снова запустите управляющие серверы.
-
Обновление данных в управляемых серверах: Если вы не хотите останавливать все серверы, вы можете вручную изменить их настройки, чтобы указать новые учетные данные для подключения к администраторскому серверу. Это можно сделать через консоль администрирования или редактируя конфигурационные файлы.
Дополнительные советы
- Безопасность boot.properties: Сохраняйте
boot.properties
в зашифрованном виде для улучшения безопасности. Рассмотрите возможность использования параметров шифрования. - Отладка: Используйте команду
dumpStack()
в WLST для получения более подробной информации об ошибках, если они возникают снова. - Документация: Ознакомьтесь с официальной документацией Oracle по управлению пользователями и безопасностью для получения более детализированных инструкций.
Следуя этим шагам, вы сможете устранить возникшую проблему с аутентификацией при остановке администратора WebLogic.