Я делаю импорт профиля из Umbraco в Gigya (полная учетная запись, а не облегченная). Я следовал документации Gigya и смог завершить импорт, но после импорта я не могу войти на веб-сайт, используя импортированный идентификатор электронной почты и пароль. Позвольте мне объяснить проблему подробно:
Я понял из клиента, что в этом случае Ubmraco использовал HMACSHA1 в качестве алгоритма хеширования, и пароль используется вместе с тем же паролем, что и ключ:
HMACSHA1 hash = new HMACSHA1();
hash.Key = Encoding.Unicode.GetBytes(password);
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));
https://github.com/umbraco/Umbraco-CMS/blob/v8/contrib/src/Umbraco.Core/Security/MembershipProviderBase.cs#L903
Я экспортировал один из профилей Gigya (профиль пользователя, который зарегистрировался через веб-сайт, а не импортированные профили) с нашего тестового сайта и заметил, что Gigya по умолчанию использует следующее настройки:
{"hash":"UpPjLTDdSa4i+HNnWApBvW89f0U=","hashSettings":{"algorithm":"pbkdf2","rounds":3000,"salt":"a6lD095hHO/u2ZrQa/UpMux1Tho="}}
В файле JSON профиля импорта я использовал алгоритм ha sh в качестве pbkdf2 и в другом сценарии в качестве SHA1 и пытался импортировать профиль в Gigya. Я пробовал пароль с солью, без соли, т.е. несколько комбинаций, но пока ничего не помогло.
"password": {
"hashedPassword": "a6lD095hHO/u2ZrQa/UpMux1Tho=",
"hashSettings": {
"algorithm": "pbkdf2",
"salt": "a6lD095hHO/u2ZrQa/UpMux1Tho=",
"rounds": "3000"
, если пароль 'xyz', HMACSHA1 ha sh - это a6lD095hHO / u2ZrQa / UpMux1Tho ==, если пароль - 'ab c' HMACSHA1 ha sh, то есть UpPjLTDdSa4i + HNnWApBvW89f0U =, и это соответствует следующему коду:
HMACSHA1 hash = new HMACSHA1();
hash.Key = Encoding.Unicode.GetBytes(password);
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));
Gigya, похоже, не поддерживает HMACSHA1 (согласно документации https://developers.gigya.com/display/GD/accounts.importFullAccount+REST). В моем маленьком ПО C (снимок кода представлен ниже), когда я отлаживал, я увидел, что HashName для HMACSHA1 - это SHA1, и именно поэтому я попробовал SHA1 в качестве одного из алгоритмов импорта профиля в Gigya, даже если клиент использовал HMACSHA1 для хеширования. Если вы сделали что-то подобное, сообщите мне.
Снимок из кода Visual Studio