Ошибка формата пароля при импорте полного профиля из Umbraco в Gigya - PullRequest
1 голос
/ 02 марта 2020

Я делаю импорт профиля из 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

...