|
|
Δημοσιεύτηκε στις1 λεπτό πριν
|
|
|
|

Απαιτήσεις: Όταν ζητάτε ένα API, θα συμπεριληφθούν οι πληροφορίες ελέγχου ταυτότητας διακριτικού JWT. Το backend πρέπει να επαληθεύσει εάν η υπογραφή διακριτικού είναι έγκυρη και, στη συνέχεια, να επαληθεύσει εάν έχει λήξει, τις πληροφορίες έκδοσης κ.λπ.
URI συνόλου κλειδιών Web JSON
Το jwks_uri (JSON Web Key Set URI) είναι ένα τυπικό στοιχείο διαμόρφωσης στις προδιαγραφές OAuth 2.0 και OpenID Connect (OIDC).
Με απλά λόγια, είναι μια δημόσια διεύθυνση URL (ή τελικό σημείο) που δείχνει στο σημείο όπου ο διακομιστής ελέγχου ταυτότητας δημοσιεύει το "σύνολο δημόσιων κλειδιών" του. Στην τυπική διαδικασία OIDC, ο διακομιστής ελέγχου ταυτότητας παρέχει ένα τελικό σημείο εντοπισμού υπηρεσίας που περιέχει τη διεύθυνση jwks_uri.
Η δημοφιλής μεταφορά του
Εάν το JWT (ή το ID Token) που εκδίδεται από τον διακομιστή ελέγχου ταυτότητας παρομοιάζεται με μια επιστολή σφραγισμένη με μια φυσική επίσημη σφραγίδα, τότε:
• Ιδιωτικό κλειδί: Η «φυσική σφραγίδα» που είναι κλειδωμένη στο χρηματοκιβώτιο που κατέχει ο διακομιστής ελέγχου ταυτότητας, που χρησιμοποιείται για σφράγιση (υπογραφή). • jwks_uri: Αυτή είναι η "ενότητα αποκάλυψης μοτίβου σφραγίδας" που δημοσιεύτηκε στον επίσημο ιστότοπο από τον διακομιστή ελέγχου ταυτότητας. • Εφαρμογή τρίτου μέρους (πελάτης ή διακομιστής πόρων): Αφού λάβετε το email, κατεβάστε το σχέδιο σφραγίδας (δημόσιο κλειδί) από αυτήν τη διεύθυνση jwks_uri και συγκρίνετε το με τη σφραγίδα στην επιστολή για να αποδείξετε ότι η επιστολή εκδόθηκε πράγματι από την επίσημη εταιρεία και δεν παραβιάστηκε.
Εδώ, η έννοια της χρήσης στη συλλογή κλειδιών είναι:
"sig": Υπογραφή, που χρησιμοποιείται για την επαλήθευση ή τη δημιουργία υπογραφών για τη διασφάλιση της ακεραιότητας των δεδομένων και της προστασίας από παραβιάσεις. "enc": Κρυπτογράφηση, που χρησιμοποιείται για την κρυπτογράφηση ή την αποκρυπτογράφηση δεδομένων, καθώς και για τη διαχείριση κλειδιών (Key Encryption) για τη διασφάλιση της εμπιστευτικότητας των δεδομένων.
Οπως φαίνεται παρακάτω:
Ανάλυση πληροφοριών JWT
Πρώτα, εγκαταστήστε το πακέτο nuget:System.IdentityModel.Tokens.Jwt, διαβάζει τις πληροφορίες αξιώσεων από το jwt, ο κώδικας έχει ως εξής:
Η έξοδος έχει ως εξής:
Κομιστής 1059ec2e-ffa8-4ff5-bc47-f25d7e37aa5α
Επαληθεύστε την εγκυρότητα της υπογραφής JWT
Πρέπει ακόμα να ανατρέξετε πρώτα στο πακέτο System.IdentityModel.Tokens.Jwt. Υπάρχουν δύο τρόποι για να επαληθεύσετε την εγκυρότητα της υπογραφής.
Λύση 1: Αλυσίδα πιστοποιητικών X.509
Η αποσειριοποίηση πραγματοποιείται σύμφωνα με το διεθνές πρότυπο X.509, εξάγοντας όλες τις δομημένες πληροφορίες από το πιστοποιητικό (όπως δημόσιο κλειδί, εκδότης, ημερομηνία λήξης, σειριακός αριθμός κ.λπ.) και δημιουργώντας ένα αντικείμενο X509Certificate2. Τέλος, λαμβάνεται το κρυφό δημόσιο κλειδί RSA μέσα για την επαλήθευση του διακριτικού JWT. Ο κώδικας έχει ως εξής:
Οπως φαίνεται παρακάτω:
Λύση 2: JsonWebKey
Μετατροπή σε κλειδί ασφαλείας: Προσδιορίζει αυτόματα τον τύπο αλγορίθμου μέσα. Στη συνέχεια, επαληθεύστε την εγκυρότητα του διακριτικού. Ο κωδικός έχει ως εξής:
(Τέλος) |
Προηγούμενος:.NET/C# Λήψη ιδιοτήτων αντικειμένου, πεδίων και σχολίων με βάση το Roslyn
|