AzureロジックアプリでJWTトークンをデコードすることは、node.jsやC#などの外部ライブラリを使用せずに実現できます。これが段階的なアプローチです:
1. JWTトークンを抽出:最初に、着信リクエストからJWTトークンを抽出する必要があります。これは通常、リクエストの「承認」ヘッダーに見られます。
2。JWTトークンの分割:JWTトークンは、ドットで区切られた3つの部分で構成されています:ヘッダー、ペイロード、署名。これらのドットでトークンを分割して、ユーザーの詳細を含むペイロードを分離する必要があります。
3。ペイロードをデコードします:ペイロードはbase64urlエンコードされています。ロジックアプリで `base64ToString`関数を使用してデコードできます。ただし、その長さを4の倍数にするには、base64文字列に「=」が適切にパッドに入れられていることを確認する必要があります。
4。ParseJSON:デコードされると、ペイロードはJSON文字列になります。ロジックアプリで「JSON」関数を使用して、この文字列を操作できるJSONオブジェクトに解析します。
これがロジックアプリでどのように見えるかの簡略化された例を示します。
-JWTトークンを分割: `split(triggerbody()?['authorization']、 ')などの式を使用して、トークンを分割します。
- ペイロードをデコードします: "="を追加して、適切なパディングを確保し、「base64tostring」を使用してデコードします。
-JSONの解析:「JSON」関数を使用して、デコードされたペイロードを解析します。
より再利用可能なアプローチについては、[3]で説明されているように、JWTトークンを解析するために特別に子供ロジックアプリを作成することを検討してください。これにより、JWTの解析を複数のロジックアプリに簡単に統合できます。
トークンを検証する必要がある場合(その署名を確認)、ロジックアプリはJWT検証をネイティブにサポートしていないため、通常、外部サービスまたはライブラリを使用します。ただし、検証なしでクレームを単に抽出するには、上記の手順で十分です。
引用:
[1] https://stackoverflow.com/questions/54257879/how-to-decode-a-jwt-token-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-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/