Наше мобильное приложение использует passkey для регистрации и аутентификации без пароля. Это мобильное приложение делает запросы к API, которое я тестирую при помощи Cypress. Через API я могу получить "challenge”, "pubKeyCredParams”, "excludeCredentials”, ”rp" and "user, которые нужны для аутентификатора.
Итоговая цель - выдащить данные от аунтентификатора, а именно, "authenticatorData”,“signature”, "clientDataJSON”.
Дальше, я так понимаю, нужно добавить креденшены для этого аутентификатораю. Добавляю, как показано ниже и получаю в результате (uncaught exception)Error: An error occurred trying to create the credential
let elliptic = require('elliptic');
let ec = new elliptic.ec('p256');
let keyPair = ec.genKeyPair(); // Generate random keys
let privKey = keyPair.getPrivate("hex");
cy.log("privKey p256 "+privKey);
cy.log("_AUTHENTICATOR_ID "+_AUTHENTICATOR_ID);
Cypress.automation("remote:debugger:protocol", {
command: "WebAuthn.addCredential",
params: {
authenticatorId: _AUTHENTICATOR_ID,
credential: {
credentialId: Buffer.from("1", 'utf8').toString('base64'),
isResidentCredential: false,
setAutomaticPresenceSimulation: true,
rpId: JSON.stringify(my_rpID),
signCount: 1,
privateKey: privKey.toString('base64'),
}
}
}).then(() => {});
Уже потратил много времени, но так и не понял причину этого exception. Буду очень благодарен, если подскажете, что я делаю не так или, возможно, существует какой-то другой способ работы с аутентификатором.
Автор: Баз Дейкстра (Bas Dijkstra) Оригинал статьи Перевод: Ольга Алифанова
Возможно, вы знаете, что я фанат библиотеки REST Assured для Java – особенно из-за простоты ее использования при создании читабельных, но мощных тестов для HTTP API.
К тому же с тех самых пор, как я работал над SDK Python и C# для платформы TestProject, я размышлял о создании и публикации своей собственной открытой библиотеки. Почему? Отчасти потому, что я люблю сообщество открытого исходного кода, а отчасти – потому что я искренне убежден, что надо благодарить делом и "платить вперед"; а отчасти потому, что я считаю это ценным опытом, а также хорошим способом попрактиковаться и отточить навыки разработки.