Η αποκωδικοποίηση ενός διακριτικού JWT σε εφαρμογές Azure Logic μπορεί να επιτευχθεί χωρίς να χρησιμοποιείτε εξωτερικές βιβλιοθήκες όπως το Node.js ή το C#. Ακολουθεί μια προσέγγιση βήμα προς βήμα:
1. Εξαγάγετε το διακριτικό JWT: Πρώτον, πρέπει να εξαγάγετε το διακριτικό JWT από το εισερχόμενο αίτημα. Αυτό συνήθως βρίσκεται στην επικεφαλίδα "Εξουσιοδότηση" του αιτήματος.
2. Διαχωρίσετε το Tokens JWT: Τα Tokens JWT αποτελούνται από τρία μέρη που χωρίζονται από κουκκίδες: κεφαλίδα, ωφέλιμο φορτίο και υπογραφή. Πρέπει να χωρίσετε το διακριτικό από αυτές τις κουκίδες για να απομονώσετε το ωφέλιμο φορτίο, το οποίο περιέχει τα στοιχεία του χρήστη.
3. Αποκάλυψη του ωφέλιμου φορτίου: Το ωφέλιμο φορτίο είναι βασικό 64URL κωδικοποιημένο. Μπορείτε να χρησιμοποιήσετε τη λειτουργία `base64toString 'σε εφαρμογές λογικής για να την αποκωδικοποιήσετε. Ωστόσο, πρέπει να βεβαιωθείτε ότι η συμβολοσειρά base64 είναι σωστά γεμισμένη με "=" για να κάνει το μήκος του ένα πολλαπλάσιο των 4.
4. Parse JSON: Μόλις αποκωδικοποιηθεί, το ωφέλιμο φορτίο θα είναι μια συμβολοσειρά JSON. Χρησιμοποιήστε τη λειτουργία `JSON` σε λογικές εφαρμογές για να αναλύσετε αυτήν τη συμβολοσειρά σε ένα αντικείμενο JSON με το οποίο μπορείτε να εργαστείτε.
Ακολουθεί ένα απλοποιημένο παράδειγμα για το πώς μπορεί να φανεί αυτό στις εφαρμογές λογικής:
- Διαχωρίσετε το διακριτικό JWT: Χρησιμοποιήστε μια έκφραση όπως το `split (triggerbody ();
- Αποκάλυψη του ωφέλιμου φορτίου: προσάρτημα "=" για να εξασφαλίσετε την κατάλληλη επένδυση και, στη συνέχεια, χρησιμοποιήστε το `base64toString` για να το αποκωδικοποιήσετε.
- PARSE JSON: Χρησιμοποιήστε τη λειτουργία `JSON` για να αναλύσετε το ωφέλιμο φορτίο αποκωδικοποιημένου.
Για μια πιο επαναχρησιμοποιήσιμη προσέγγιση, σκεφτείτε να δημιουργήσετε μια εφαρμογή παιδικής λογικής ειδικά για την ανάλυση των Tokens JWT, όπως περιγράφεται στο [3]. Αυτό σας επιτρέπει να ενσωματώσετε εύκολα την ανάλυση 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-logic-app-using-api-management-8211-validate-jwt-access-vestr/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/