관리 API 키에서 Kontent 프로젝트 ID 가져오기

8021 단어 webdevjwtapidecode
Management API Key에서 Kontent 프로젝트 ID를 구문 분석할 수 있습니다. 이는 더 이상 Kontent 도구에 대해 두 개의 키를 요구할 필요가 없음을 의미합니다.

Management API을 사용하여 Kontent 도구를 개발하고 여전히 프로젝트 ID와 관리 API 키를 모두 요구합니까? 다음 줄은 UX를 개선하고 코드를 정리하는 데 도움이 됩니다.

관리 API 키는 페이로드(서명이 있는 헤더 사이)를 포함하는 JWT token일 뿐입니다. 따라서 JWT.io을 사용하여 디코딩할 수 있으며 페이로드로 다음을 볼 수 있습니다.

{
    "jti": "b6a9ee86bfdc41c89f20048c3baaba04",
    "iat": "1612535158",
    "exp": "1958135158",
    "project_id": "06c2b8951700013e5f3160283aff1100",
    "ver": "2.1.0",
    "uid": "usr_0vMrpCH2TkOK5oK3y3bKNS",
    "aud": "manage.kenticocloud.com"
}

project_id는 한 번의 수정으로 프로젝트를 식별하는 데 사용할 수 있습니다. GUID format 을 준수하려면 적절한 위치에 대시를 추가해야 합니다.

이 모든 작업을 수행하려면 코드가 그렇게 보이거나 (또는 ​​다른 언어 대안) jwt-decode 과 같은 라이브러리를 사용하면 됩니다. 그러나 그들이 무엇을 하는지 아는 것은 항상 좋은 일입니다.

const managementApiKey = "ew0KICAiYWxnIjogIkhTMjU2IiwNCiAgInR5cCI6ICJKV1QiDQp9.ew0KICAianRpIjogImI2YTllZTg2YmZkYzQxYzg5ZjIwMDQ4YzNiYWFiYTA0IiwNCiAgImlhdCI6ICIxNjEyNTM1MTU4IiwNCiAgImV4cCI6ICIxOTU4MTM1MTU4IiwNCiAgInByb2plY3RfaWQiOiAiMDZjMmI4OTUxNzAwMDEzZTVmMzE2MDI4M2FmZjExMDAiLA0KICAidmVyIjogIjIuMS4wIiwNCiAgInVpZCI6ICJ1c3JfMHZNcnBDSDJUa09LNW9LM3kzYktOUyIsDQogICJhdWQiOiAibWFuYWdlLmtlbnRpY29jbG91ZC5jb20iDQp9.aEqGajw7e9m13lnID0z9PBCL0MytqYlvoYg_rwPfEJo";

const payloadBase64 = managementApiKey.split('.')[1];
const payloadBase64Cleared = payloadBase64.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(
    atob(payloadBase64Cleared)
    .split('')
    .map((c) => 
        ('%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
    )
    .join('')
);

const payloadObject = JSON.parse(jsonPayload);

const projectIdWithoutDashes = payloadObject.project_id;

const projectId = 
    `${projectIdWithoutDashes.substr(0, 8)}-\
${projectIdWithoutDashes.substr(8, 4)}-\
${projectIdWithoutDashes.substr(12,4 )}-\
${projectIdWithoutDashes.substr(16, 4)}-\
${projectIdWithoutDashes.substr(20)}`

console.log(projectId);


If you want to play with it - check out this Codepen.



...그리고 당연히 공개된 API 키를 무효화했습니다 🤞

좋은 웹페이지 즐겨찾기