Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 2|Απάντηση: 0

[Πηγή] .NET/C# Δύο μέθοδοι για την επαλήθευση της εγκυρότητας της υπογραφής διακριτικού JWT

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις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
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com