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();

0 ответов

Другие вопросы по тегам