powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Перенос пользователей из Cache на DB2
3 сообщений из 3, страница 1 из 1
Перенос пользователей из Cache на DB2
    #38906566
kraiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cache 2012.2.3

Стоит задача:
Перенести пользователей с Cache на DB2 с сохранением паролей.
Начал копать. В области %SYS есть класс Security.Users, в нем хранятся пользователи с хешем пароля и солью к паролю.

Из кода:/// PBKDF2 hashed password for Cache Authentication.<br>
/// This is used with a salt function obtained from 
/// $System.Encryption.GenCryptRand. This property is set by the class when the
/// PasswordExternal property is modified. Do not set this property directly.<br>
/// To modify the password for a user using objects, get an instance of the object and
/// modify the PasswordExternal property:<br>
/// i '..Exists(Username,.User,.Status) q Status<br>
/// s User.PasswordExternal=Password<br>
/// s Status=User.%Save()<br>
Property Password As Security.Datatype.Password(MAXLEN = 20);

/// Clear text password.<br>
/// This property is not stored in permanent storage. It is initially set to
/// the value of $c(0). When it is modified, the Password property is updated
/// to the PBKDF2 salted hashed value.
Property PasswordExternal As %String(MAXLEN = 128, XMLPROJECTION = "NONE") [ InitialExpression = {$c(0)}, Transient ];

/// Salt value for Hashed password from $System.Encryption.GenCryptRand.<br>
Property Salt As %Binary(MAXLEN = 8);


Пытаюсь воссоздать функцию для получения хеша пароля пользователя так, как это делает Cache:ClassMethod check(userName As %String, password As %String) As %String
{
  zn "%SYS"
  set user = ##class(Security.Users).%OpenId(userName)
  w !, "hash = "_$System.Encryption.PBKDF2(password, 1, user.Salt, 20) 
  w !, "db_hash = "_user.Password
  zn "USER"
  quit $$$OK
}
В итоге через портал создаю пользователя test с паролем 12345678,
После в терминале: d ##class(User.CheckPass).check("test","12345678")

В итоге получаю разные хэши! По какому алгоритму cache генерирует хэш для пароля пользователя?
...
Рейтинг: 0 / 0
Перенос пользователей из Cache на DB2
    #38906577
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как то давно хранил так, скорее всего брал хранение каше:Include %sySecurity

...

set obj.Salt = $System.Encryption.GenCryptRand($$$CachePWSaltLength)
set obj.Password = $System.Encryption.PBKDF2(password,$$$CachePWIterations,obj.Salt,$$$CachePWHashLength)
...
Рейтинг: 0 / 0
Перенос пользователей из Cache на DB2
    #38906593
kraiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2acid,
Спасибо
$$$CachePWIterations = 1024, а я использовал 1
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Перенос пользователей из Cache на DB2
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]