2014-11-28 3 views
0

Мне недавно пришлось преобразовать контрольные вопросы и пароли для реализации OpenAM.Как зашифровать пробную фразу и ответить для OpenAM Lost Password Management?

Планировалось преобразовать эти значения как часть пользовательской записи в файл LDIF и загрузить ее. Атрибут для заполнения - iplanet-am-user-password-reset-question-answer. Это многозначный атрибут для поддержки нескольких пар вопросов/ответов.

Ключ ответа на вопрос, ответ и вопрос и знак состояния вопроса должны быть объединены в одну строку, разделенную вкладками.

[question-key]\t[answer]\t[1|0] 

Значение необходимо зашифровать. Это был класс, используемый для шифрования, но он не работал.

AMPasswordUtil().encrypt(question.get(challenge) + "\t" + response + "\t1") 

Что делать, чтобы сделать эту работу?

ответ

1

И наконец, отказался от ForgeRock. Они были очень полезны и поставляли решение, и оно работало немедленно. Здесь это ...

Оказывается, класс AMPasswordUtil не должен использоваться. Вместо этого следует использовать

encrypted_str = AccessController.doPrivileged(new EncodeAction(clear_text_str)) 

ключ шифрования должен быть установлен как системное свойство

System.setProperty("am.encryption.pwd", key); 

Ключ шифрования может быть извлечен из OpenAM.

+1

Другим вариантом является использование утилиты 'ampassword' набора инструментов 'ssoadm', поскольку это в основном то же самое, но «поддерживается». 'ampassword -e ....' –

+0

Да, мог бы быть, это был план падения, но тогда мне пришлось бы выполнить это в оболочке и вернуть его обратно в программу преобразования. –