Пример ошибки:
idp@avanpost:/opt/idp$ ./fam_linux_amd64 –init
panic: runtime error: slice bounds out of range [:-57]
goroutine 1 [running]:
devenv.avanpost.ru/idp/idp/pkg/x/security.(*AESEncryptor).unpadding(...)
/home/jenkins/workspace/SSO/Server/master/pkg/x/security/encryptor.go:42
devenv.avanpost.ru/idp/idp/pkg/x/security.(*AESEncryptor).Decrypt(0xc0026800d8, {0xc0021e9680?, 0xc?})
/home/jenkins/workspace/SSO/Server/master/pkg/x/security/encryptor.go:81 +0x1b2
devenv.avanpost.ru/idp/idp/pkg/oauth2/manager.(*ClientManager).GetClientByID(0xc000288c30, {0x1ac71be?, 0x7f4b04a9f5b8?})
/home/jenkins/workspace/SSO/Server/master/pkg/oauth2/manager/client_manager.go:50 +0x54
devenv.avanpost.ru/idp/idp/pkg/appcommand.UpdateServiceClient({0x1ac71be?, 0xc001bb1f40?}, {0xc0006519e2, 0x20}, {0x1ac08e7, 0x9})
/home/jenkins/workspace/SSO/Server/master/pkg/appcommand/appcommand.go:31 +0x68
devenv.avanpost.ru/idp/idp/pkg/product/runner.(*program).init(0xc0005f6308)
/home/jenkins/workspace/SSO/Server/master/pkg/product/runner/runner.go:871 +0x1f2a
devenv.avanpost.ru/idp/idp/pkg/product/runner.Run({0x1e2aa80, 0xc0007932c0})
/home/jenkins/workspace/SSO/Server/master/pkg/product/runner/runner.go:552 +0x199a
main.main()
/home/jenkins/workspace/SSO/Server/master/cmd/fam/main.go:15 +0x157
Возможная причина проблемы:
Из-за многократной переустановки FAM Server и миграции БД, возможно менялся ключ шифрования key.dat, который не соответствует ключу, используемый в текущей БД.
encryptionKey = ‘key.dat’ – критически важный файл. Отвечает за расшифровку подключения к БД. Если переносится база, то переносится и сам файл. Если файл удалён, то придётся создать новую базу.
Решение проблемы:
- Зайти в интерактивный терминал PostgreSQL psql
sudo -u postgres psql
- Удалить старую базу данных:
DROP DATABASE idp
- Создать новую БД:
CREATE DATABASE idp OWNER=avanpost ENCODING=utf8;
- Выйти из интерактивного терминала:
\q
- Создать новый ключ шифрования:
./fam_linux_amd64 -generatekey
- Произвести миграцию базы данных:
./fam_linux_amd64 -migratedb postgres
- Выполнить команду Инициализации приложения:
./fam_linux_amd64 -init