Я создал пользователя MongoDB с паролем "86f5ec4fd396195a99b6c2545180676bbb62b86327314399829b4ea00c53"
:
@mongo_client.command(
{
createUser: "my_user",
pwd: "86f5ec4fd396195a99b6c2545180676bbb62b86327314399829b4ea00c53",
roles: ["readWrite"]
}
)
Когда я проверяю хешированный пароль SCRAM в MongoDB:
pp @mongo_client.command({usersInfo: 1, showCredentials: true}).documents.first["users"]
вывод:
[{"_id"=>"5cecd7773ab42f4cff2f08dd.myuser",
"user"=>"myuser",
"db"=>"5cecd7773ab42f4cff2f08dd",
"credentials"=>
{"SCRAM-SHA-1"=>
{"iterationCount"=>10000,
"salt"=>"PLoIONQY4paDiiCdwiyBMQ==",
"storedKey"=>"joVFIIyEgI9sE9nXXS4RXcBeLv4=",
"serverKey"=>"C3AZBq9hTuwMQtpJXdqZa3ZYKK8="},
"SCRAM-SHA-256"=>
{"iterationCount"=>15000,
"salt"=>"foJnBgfiaKjhAkg9KFSqKGuyb4uhbfvgPoqgpA==",
"storedKey"=>"8TsZfXwIz9XEKtFY0Ug0XjSn9QAwB7/6XpFc4AjW7Wc=",
"serverKey"=>"9R9Mj9u4cymqqHGdHBAm4xOjmkuDYQso+jECik4n+Gw="}},
"roles"=>[{"role"=>"readWrite", "db"=>"5cecd7773ab42f4cff2f08dd"}],
"mechanisms"=>["SCRAM-SHA-1", "SCRAM-SHA-256"]}
]
Как мне (используя Ruby) преобразовать мой исходный пароль в виде открытого текста в версии SCRAM-SHA-1 / SCRAM-SHA-256, показанные выше?
Документы пишет об SCRAM:
При реализации механизмов аутентификации SCRAM (например, SCRAM-SHA-1 и SCRAM-SHA-256) драйверы ДОЛЖНЫ поддерживать кэш вычисленных учетных данных SCRAM. Записи кэша ДОЛЖНЫ идентифицироваться паролем, солью, количеством итераций и значением, которое однозначно идентифицирует механизм аутентификации (например, «SHA1» или «SCRAM-SHA-256»).
Значение записи в кэше ДОЛЖНО быть либо параметром saltedPassword, либо комбинацией параметров clientKey и serverKey.