로직 앱에서 JWT 토큰을 검색하고 디코딩하려면 다음을 수행 할 수 있습니다.
1. JWT 토큰 검색 : 먼저 JWT 토큰을 얻어야합니다. 이것은 들어오는 요청의 헤더를 구문 분석하여 수행 할 수 있습니다. 토큰이 '인증'헤더로 전송되면 '인증'키를 캡처하는 스키마를 사용하여 'Parse JSON'동작을 사용하여 추출 할 수 있습니다. 그런 다음 토큰 부분 만 보유 할 변수를 만듭니다 (예 : "Bearer"이후) [10].
2. JWT 토큰을 디코딩하십시오 : JWT 토큰은 Base64Url-Encoded입니다. 로직 앱에서 'split'및 'base64tostring` 함수를 사용하여 토큰의 페이로드 부분을 디코딩 할 수 있습니다. "."로 토큰을 나눕니다. 페이로드를 분리하는 분리기. 그런 다음 "="를 추가하여베이스 64 디코딩의 경우 길이가 4의 배수인지 확인하십시오. 로직 앱은 이것을 base64 문자열로 암시 적으로 변환 한 다음`base64tostring`을 사용하여 디코딩 할 수 있습니다 [1] [3].
3. 디코딩 된 페이로드를 구문 분석 : 페이로드를 디코딩 한 후 JSON 스트링이 있습니다. 다른 'Parse JSON'동작을 사용 하여이 문자열을 로직 앱에서 작업 할 수있는 JSON 객체로 변환하십시오. JWT 토큰의 예상 청구에 따라이 JSON 객체의 스키마를 정의 할 수 있습니다 [3].
4. 청구 추출 : JSON이 구문 분석되면 특정 주장 (사용자 ID 또는 이메일과 같은)을 추출하여 로직 앱 워크 플로우에서 필요에 따라 사용할 수 있습니다.
이 접근법을 사용하면 Azure 기능을 만들거나 디코딩을 위해 외부 서비스를 사용할 필요없이 Azure Logic 앱 내에서 JWT 토큰을 해독하고 사용할 수 있습니다. 그러나 토큰을 검증 해야하는 경우 (서명을 확인) JWT 유효성 검사가 가능한 라이브러리가있는 외부 서비스 또는 Azure 기능을 사용해야 할 수도 있습니다.
인용 :
[1] https://stackoverflow.com/questions/54257879/how-to-decode-a-jwt-in-azure-logic-app
[2] https://www.criipto.com/blog/jwt-validation-guide
[3] https://autosysops.com/blog/parse-jwt-tokens-in-azure-logic-apps
[4] https://hasura.io/blog/best-practices of-using-jwt-with-graphql
[5] https://www.michev.info/blog/post/2140/decode-jwt-access-and-id-tokens-via-powershell
[6] https://supertokens.com/blog/revoking-access-with-a-jwt-blacklist
[7] https://techcommunity.microsoft.com/blog/azuredevcommunityblog/part-4-secure-your-logic-app-using-api-management-8211-validate-jwt-access-restr/336802
[8] https://docs.azure.cn/en-us/logic-apps/logic-apps-securing-a-logic-app
[9] https://www.mikaelsand.se/2022/06/extracting-values-from-a-jwt-token-in-apim/
[10] https://rakhesh.com/azure/parsing-json-tokens-in-a-logic-app/
[11] https://github.com/auth0/jwt-decode