SuccessFactors OAuth из расширения Chrome
Моя цель - прочитать данные из odata api, предоставленные SuccessFactors (SF) из расширения Chrome.
К сожалению, я не могу использовать chrome.identity.launchWebAuthFlow
потому что SF использует SAML.
У меня есть клиент Oauth, зарегистрированный на портале администрирования SF с созданным сертификатом. Я отправляю частный сертификат вместе с запросом saml.
Следуя этому руководству https://help.sap.com/viewer/d599f15995d348a1b45ba5603e2aba9b/1911/en-US/4e27e8f6ae2748ab9f23228dd6a31b06.html, я могу получить подтверждение, но каждый раз я пытаюсь получить сам токен 401 ответ с текстом
Unable to verify the signature of the SAML assertion
У вас есть идеи, что может вызвать эту проблему?
изменить: пример кода
const apiKey = "<apikey>";
const privateKey ="<privatekey>";
const baseUrl = "https://api2.successfactors.eu";
const tokenPath = "/oauth/token";
const assertPath = "/oauth/idp";
const odataRoot = "/odata/v2"
let params = new URLSearchParams();
params.append("client_id", apiKey);
params.append("user_id", "<user>");
params.append("token_url", `${baseUrl}${tokenPath}`);
params.append("private_key", privateKey);
const headers = {
"Content-Type": "application/x-www-form-urlencoded"
};
let response = await fetch(`${baseUrl}${assertPath}`, {
method: "POST",
headers: headers,
body: params
});
const assertion = await response.text();
params = new URLSearchParams();
params.append("client_id", apiKey)
params.append("company_id", "<company>");
params.append("grant_type", "urn:ietf:params:oauth:grant-type:saml2-bearer");
params.append("assertion", assertion);
response = await fetch(`${baseUrl}${tokenPath}`, {
method: "POST",
headers: headers,
body: params
});
const tokenData = await response.json();