Azure Logic 앱에서 JWT 토큰을 디코딩하는 것은 node.js 또는 c#과 같은 외부 라이브러리를 사용하지 않고 달성 할 수 있습니다. 단계별 접근 방식은 다음과 같습니다.
1. JWT 토큰 추출 : 먼저 들어오는 요청에서 JWT 토큰을 추출해야합니다. 이것은 일반적으로 요청의 '권한 부여'헤더에서 발견됩니다.
2. JWT 토큰 분할 : JWT 토큰은 도트로 분리 된 세 부분으로 구성됩니다 : 헤더, 페이로드 및 서명. 사용자 세부 사항이 포함 된 페이로드를 분리하려면 토큰을 이러한 점으로 분할해야합니다.
3. 페이로드 디코딩 : 페이로드는 Base64Url 인코딩되었습니다. 로직 앱에서 'base64tostring` 함수를 사용하여 해독 할 수 있습니다. 그러나 Base64 문자열에 길이를 4의 배수로 만들려면 "="로 제대로 패딩되어 있는지 확인해야합니다.
4. Parse JSON : 일단 디코딩되면 페이로드는 JSON 문자열이됩니다. 로직 앱에서`json '함수를 사용 하여이 문자열을 작업 할 수있는 JSON 객체로 구문 분석하십시오.
다음은 이것이 로직 앱에서 어떻게 보일 수 있는지에 대한 단순화 된 예입니다.
- JWT 토큰을 분할 :`split (triggerbody ()? [ 'supportization'], '.'와 같은 표현식을 사용하여 토큰을 분할하십시오.
- 페이로드를 디코딩하십시오 : append "="를 사용하여 올바른 패딩을 보장하고`base64tostring`을 사용하여 해독하십시오.
-JSON PARSE :`JSON '기능을 사용하여 디코딩 된 페이로드를 구문 분석하십시오.
보다 재사용 가능한 접근법의 경우 [3]에 설명 된대로 JWT 토큰을 구문 분석하기 위해 특별히 하위 로직 앱을 작성하는 것을 고려하십시오. 이를 통해 JWT 파싱을 여러 로직 앱에 쉽게 통합 할 수 있습니다.
If you need to validate the token (check its signature), you would typically use an external service or library, as Logic Apps does not natively support JWT validation. However, for simply extracting claims without validation, the above steps suffice.
인용 :
[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://techcommunity.microsoft.com/blog/azuredevcommunityblog/part-4-secure-your-logic-app-using-api-management-8211-validate-jwt-access-restr/336802
[6] https://auth0.com/blog/how-to-validate-jwt-dotnet/
[7] https://github.com/auth0/jwt-decode
[8] https://supertokens.com/blog/revoking-access-with-a-jwt-blacklist
[9] https://fusionauth.io/dev-tools/jwt-decoder
[10] https://rakhesh.com/azure/parsing-json-tokens-in-a-logic-app/
[11] https://www.reddit.com/r/azure/comments/u4alct/blog_parse_jwt_token_with_azure_logic_apps/