Χρήση εκχώρησης OAuth 2.0 έμμεσης ροής εντός της πύλης
Σημείωση
Από τις 12 Οκτωβρίου 2022, οι πύλες του Power Apps είναι Power Pages. Περισσότερες πληροφορίες: Το Microsoft Power Pages είναι πλέον γενικά διαθέσιμο (ιστολόγιο)
Σύντομα θα μετεγκαταστήσουμε και θα συγχωνεύσουμε την τεκμηρίωση των πυλών Power Apps με την τεκμηρίωση Power Pages.
Αυτή η δυνατότητα επιτρέπει σε έναν πελάτη να πραγματοποιεί κλήσεις από την πλευρά του προγράμματος-πελάτη προς εξωτερικά API και να τις ασφαλίζει χρησιμοποιώντας εκχώρηση OAuth έμμεσης ροής. Παρέχει τη δυνατότητα σε τελικό σημείο λήψης διακριτικών ασφαλούς πρόσβασης. Αυτά τα διακριτικά ασφαλούς πρόσβασης θα περιέχουν πληροφορίες ταυτότητας χρήστη που θα χρησιμοποιηθούν από εξωτερικά API για εξουσιοδότηση σύμφωνα με την εκχώρηση OAuth 2.0 έμμεσης ροής. Οι πληροφορίες ταυτότητας ενός συνδεδεμένου χρήστη περνούν με ασφαλή τρόπο στις εξωτερικές κλήσεις AJAX, γεγονός που βοηθά τους προγραμματιστές να μεταβούν στο περιβάλλον ελέγχου ταυτότητας και επίσης βοηθούν τους χρήστες να ασφαλίσουν τα API τους.
Η εκχώρηση έμμεσης ροής OAuth 2.0 υποστηρίζει τα τελικά σημεία διακριτικού που μπορεί να καλέσει ένας πελάτης για να λάβει ένα διακριτικό αναγνωριστικού.
Προσαρμοσμένα πιστοποιητικά
Η χρήση του προεπιλεγμένου πιστοποιητικού για τη ροή έμμεσης εκχώρησης OAuth 2.0 έχει αποσυρθεί. Θα χρειαστεί να χρησιμοποιήσετε ένα προσαρμοσμένο πιστοποιητικό κατά τη χρήση του τελικού σημείου OAuth 2.0. Χρησιμοποιήστε το Κέντρο διαχείρισης του Power Platform για την αποστολή του προσαρμοσμένου πιστοποιητικού. Μετά την αποστολή του προσαρμοσμένου πιστοποιητικού, θα πρέπει να ενημερώσετε τις ρυθμίσεις τοποθεσίας όπως παρακάτω:
Μεταβείτε στις ρυθμίσεις πύλης και επιλέξτε Ρυθμίσεις τοποθεσίας.
Για να δημιουργήσετε μια νέα ρύθμιση, επιλέξτε Νέα.
Για να επεξεργαστείτε μια υπάρχουσα ρύθμιση επιλέξτε ρύθμιση τοποθεσίας που αναφέρεται στο πλέγμα.
Καθορισμός τιμών:
- Όνομα: CustomCertificates/ImplicitGrantflow
- Τοποθεσία web: Η συσχετισμένη απαιτούμενη τοποθεσία Web
- Τιμή: Αντιγράψτε το αποτυπωμένο προσαρμοσμένο πιστοποιητικό από την οθόνη Διαχείριση προσαρμοσμένου πιστοποιητικού και επικολλήστε εδώ. Η τιμή θα υποδεικνύει ποιο πιστοποιητικό θα χρησιμοποιηθεί για έμμεση ροή εκχώρησης.
Επιλέξτε Αποθήκευση και κλείσιμο.
Λεπτομέρειες τελικού σημείου "Διακριτικό"
Μπορείτε επίσης να λάβετε ένα διακριτικό με αίτημα δημοσίευσης στο τελικό σημείο /token
. Η διεύθυνση URL για το τελικό σημείο "Διακριτικό" είναι η εξής: <portal_url>/_services/auth/token
. Το τελικό σημείο "Διακριτικό" υποστηρίζει τις παρακάτω παραμέτρους:
Παράμετρος | Απαιτείται; | Περιγραφή |
---|---|---|
client_id | Όχι | Μια συμβολοσειρά που μεταβιβάζεται όταν πραγματοποιείτε μια κλήση στο τελικό σημείο "Εξουσιοδότηση". Πρέπει να εξασφαλίσετε ότι το αανγνωριστικό υπολογιστή-πελάτη έχει καταχωρηθεί στην πύλη. Διαφορετικά, εμφανίζεται ένα μήνυμα σφάλματος. Το αναγνωριστικό προγράμματος-πελάτη προστίθεται σε δηλώσεις στο διακριτικό ως παράμετρος aud και appid και μπορεί να χρησιμοποιηθεί από υπολογιστές-πελάτες για να επαληθευτεί ότι το διακριτικό που επιστρέφεται είναι για την εφαρμογή.Το μέγιστο μήκος είναι 36 χαρακτήρες. Υποστηρίζονται μόνο αλφαριθμητικοί χαρακτήρες και παύλες. |
redirect_uri | Όχι | Διεύθυνση URL της πύλης όπου είναι δυνατή η αποστολή και η λήψη αποκρίσεων ελέγχου ταυτότητας. Πρέπει να καταχωριστεί για το συγκεκριμένο client_id που χρησιμοποιείται στην κλήση και πρέπει να έχει ακριβώς την ίδια τιμή, όπως αυτή έχει καταχωριστεί. |
κατάσταση | Όχι | Μια τιμή που περιλαμβάνεται στο αίτημα και επιστρέφεται στην απόκριση διακριτικού. Μπορεί να είναι μια συμβολοσειρά με περιεχόμενο που θέλετε να χρησιμοποιήσετε. Συνήθως, μια μοναδική τιμή που δημιουργήθηκε τυχαία χρησιμοποιείται για την αποτροπή επιθέσεων πλαστογράφησης αιτήματος μεταξύ τοποθεσιών. Το μέγιστο μήκος είναι 20 χαρακτήρες. |
nonce | Όχι | Μια τιμή συμβολοσειράς που αποστέλλεται από το πρόγραμμα-πελάτη και περιλαμβάνεται στο διακριτικό αναγνωριστικού ως δήλωση. Το πρόγραμμα-πελάτης, στη συνέχεια, επιβεβαιώνει αυτήν την τιμή για τον περιορισμό επιθέσεων αναπαραγωγής διακριτικού. Το μέγιστο μήκος είναι 20 χαρακτήρες. |
response_type | Όχι | Αυτή η παράμετρος υποστηρίζει μόνο token ως τιμή, επιτρέποντάς στην εφαρμογή σας να λάβει ένα διακριτικό πρόσβασης αμέσως από το τελικό σημείο "Εξουσιοδότηση", χωρίς να γίνει δεύτερο αίτημα στο τελικό σημείο "Εξουσιοδότηση". |
Σημείωση
Παρόλο που οι παράμετροι client_id
, redirect_uri
, state
και nonce
είναι προαιρετικές, συνιστάται να τις χρησιμοποιήσετε για να βεβαιωθείτε ότι οι ενοποιήσεις σας είναι ασφαλείς.
Επιτυχημένη απόκριση
Το τελικό σημείο "Διακριτικό" επιστρέφει κατάσταση και expires_in ως κεφαλίδες απόκρισης και διακριτικό στο σώμα της φόρμας.
Εσφαλμένη απόκριση
Το σφάλμα στο τελικό σημείο "Διακριτικό" επιστρέφεται ως JSON έγγραφο με τις ακόλουθες τιμές:
- Αναγνωριστικό σφάλματος: Μοναδικό αναγνωριστικό του σφάλματος.
- Μήνυμα σφάλματος: Ένα συγκεκριμένο μήνυμα σφάλματος που μπορεί να σας βοηθήσει να προσδιορίσετε την αιτία για ένα σφάλμα ελέγχου ταυτότητας.
- Αναγνωριστικό συσχέτισης: Ένα GUID που χρησιμοποιείται για σκοπούς εντοπισμού σφαλμάτων. Εάν έχετε ενεργοποιήσει την καταγραφή διαγνωστικών, το αναγνωριστικό συσχέτισης θα υπάρχει στα αρχεία καταγραφής σφαλμάτων του διακομιστή.
- Χρονική σήμανση: Ημερομηνία και ώρα δημιουργίας του σφάλματος.
Εμφανίζεται το μήνυμα σφάλματος στην προεπιλεγμένη γλώσσα για τον συνδεδεμένο χρήστη. Εάν ο χρήστης δεν είναι συνδεδεμένος, εμφανίζεται η σελίδα εισόδου προκειμένου ο χρήστης να συνδεθεί. Για παράδειγμα, μια αποτυχημένη απόκριση μοιάζει ως εξής:
{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }
Λεπτομέρειες τελικού σημείου "Εξουσιοδότηση"
Σημείωση
Η εξουσιοδότηση τελικού σημείου έχει αποσυρθεί. Χρήση του αιτήματος POST τελικού σημείου διακριτικού για να λάβετε διακριτικό αναγνωριστικού.]
Η διεύθυνση URL για το τελικό σημείο "Εξουσιοδότηση" είναι η εξής: <portal_url>/_services/auth/authorize
. Το τελικό σημείο "Εξουσιοδότηση" υποστηρίζει τις παρακάτω παραμέτρους:
Παράμετρος | Απαιτείται; | Περιγραφή |
---|---|---|
client_id | Ναι | Μια συμβολοσειρά που μεταβιβάζεται όταν πραγματοποιείτε μια κλήση στο τελικό σημείο "Εξουσιοδότηση". Πρέπει να εξασφαλίσετε ότι το αανγνωριστικό υπολογιστή-πελάτη έχει καταχωρηθεί στην πύλη. Διαφορετικά, εμφανίζεται ένα μήνυμα σφάλματος. Το αναγνωριστικό προγράμματος-πελάτη προστίθεται σε δηλώσεις στο διακριτικό ως παράμετρος aud και appid και μπορεί να χρησιμοποιηθεί από υπολογιστές-πελάτες για να επαληθευτεί ότι το διακριτικό που επιστρέφεται είναι για την εφαρμογή.Το μέγιστο μήκος είναι 36 χαρακτήρες. Υποστηρίζονται μόνο αλφαριθμητικοί χαρακτήρες και παύλες. |
redirect_uri | Ναι | Διεύθυνση URL της πύλης όπου είναι δυνατή η αποστολή και η λήψη αποκρίσεων ελέγχου ταυτότητας. Πρέπει να καταχωριστεί για το συγκεκριμένο client_id που χρησιμοποιείται στην κλήση και πρέπει να έχει ακριβώς την ίδια τιμή, όπως αυτή έχει καταχωριστεί. |
κατάσταση | Όχι | Μια τιμή που περιλαμβάνεται στο αίτημα και επιστρέφεται στην απόκριση διακριτικού. Μπορεί να είναι μια συμβολοσειρά με περιεχόμενο που θέλετε να χρησιμοποιήσετε. Συνήθως, μια μοναδική τιμή που δημιουργήθηκε τυχαία χρησιμοποιείται για την αποτροπή επιθέσεων πλαστογράφησης αιτήματος μεταξύ τοποθεσιών. Το μέγιστο μήκος είναι 20 χαρακτήρες. |
nonce | Όχι | Μια τιμή συμβολοσειράς που αποστέλλεται από το πρόγραμμα-πελάτη και περιλαμβάνεται στο διακριτικό αναγνωριστικού ως δήλωση. Το πρόγραμμα-πελάτης, στη συνέχεια, επιβεβαιώνει αυτήν την τιμή για τον περιορισμό επιθέσεων αναπαραγωγής διακριτικού. Το μέγιστο μήκος είναι 20 χαρακτήρες. |
response_type | Όχι | Αυτή η παράμετρος υποστηρίζει μόνο token ως τιμή, που επιτρέπει στην εφαρμογή σας να λάβει ένα διακριτικό πρόσβασης αμέσως από το τελικό σημείο "Εξουσιοδότηση", χωρίς να γίνει δεύτερο αίτημα στο τελικό σημείο "Εξουσιοδότηση". |
Επιτυχημένη απόκριση
Το τελικό σημείο "Εξουσιοδότηση" επιστρέφει τις παρακάτω τιμές στη διεύθυνση URL απόκρισης ως ένα τμήμα:
- διακριτικό: Το διακριτικό αποδίδεται ως ένα JSON Web διακριτικό (JWT) με ψηφιακή υπογραφή από το ιδιωτικό κλειδί της πύλης.
- κατάσταση: Εάν μια παράμετρος κατάστασης περιλαμβάνεται στο αίτημα, η ίδια τιμή θα πρέπει να εμφανιστεί στην απόκριση. Η εφαρμογή πρέπει να επιβεβαιώσει ότι οι τιμές κατάστασης στο αίτημα και στην απόκριση είναι ίδιες.
- expires_in: το χρονικό διάστημα ισχύος του διακριτικού πρόσβασης (σε δευτερόλεπτα).
Για παράδειγμα, μια επιτυχημένη απόκριση μοιάζει ως εξής:
GET https://aadb2cplayground.azurewebsites.net/#token=eyJ0eXAiOiJKV1QiLCJhbGciOI1NisIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q&expires_in=3599&state=arbitrary_data_you_sent_earlier
Εσφαλμένη απόκριση
Το σφάλμα στο τελικό σημείο "Εξουσιοδότηση" επιστρέφεται ως JSON έγγραφο με τις ακόλουθες τιμές:
- Αναγνωριστικό σφάλματος: Μοναδικό αναγνωριστικό του σφάλματος.
- Μήνυμα σφάλματος: Ένα συγκεκριμένο μήνυμα σφάλματος που μπορεί να σας βοηθήσει να προσδιορίσετε την αιτία για ένα σφάλμα ελέγχου ταυτότητας.
- Αναγνωριστικό συσχέτισης: Ένα GUID που χρησιμοποιείται για σκοπούς εντοπισμού σφαλμάτων. Εάν έχετε ενεργοποιήσει την καταγραφή διαγνωστικών, το αναγνωριστικό συσχέτισης θα υπάρχει στα αρχεία καταγραφής σφαλμάτων του διακομιστή.
- Χρονική σήμανση: Ημερομηνία και ώρα δημιουργίας του σφάλματος.
Εμφανίζεται το μήνυμα σφάλματος στην προεπιλεγμένη γλώσσα για τον συνδεδεμένο χρήστη. Εάν ο χρήστης δεν είναι συνδεδεμένος, εμφανίζεται η σελίδα εισόδου προκειμένου ο χρήστης να συνδεθεί. Για παράδειγμα, μια αποτυχημένη απόκριση μοιάζει ως εξής:
{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }
Επικύρωση αναγνωριστικού διακριτικού
Το να λάβετε απλώς ένα διακριτικό αναγνωριστικού δεν επαρκεί για τον έλεγχο ταυτότητας του χρήστη. Πρέπει επίσης να επικυρώσετε την υπογραφή του διακριτικού και να επαληθεύσετε τις δηλώσεις στο διακριτικό σύμφωνα με τις απαιτήσεις της εφαρμογής. Το τελικό σημείο δημόσιου διακριτικού παρέχει το δημόσιο κλειδί της πύλης, το οποίο μπορεί να χρησιμοποιηθεί για την επαλήθευση της υπογραφής του διακριτικού που παρέχεται από την πύλη. Η διεύθυνση URL για το τελικό σημείο "Δημόσιο διακριτικό" είναι η εξής: <portal_url>/_services/auth/publickey
.
Ενεργοποίηση ή απενεργοποίηση της εκχώρησης έμμεσης ροής
Από προεπιλογή, η εκχώρηση έμμεσης ροής είναι ενεργοποιημένη. Εάν θέλετε να απενεργοποιήσετε την εκχώρηση έμμεσης ροής, ορίστε την τιμή της ρύθμισης τοποθεσίας Connector/ImplicitGrantFlowEnabled σε False.
Εάν αυτή η ρύθμιση τοποθεσίας δεν είναι διαθέσιμη στην πύλη σας, πρέπει να δημιουργήσετε μια νέα ρύθμιση τοποθεσίας με την κατάλληλη τιμή.
Ρυθμίστε τις παραμέτρους ισχύος του διακριτικού
Από προεπιλογή, το διακριτικό είναι έγκυρο για 15 λεπτά. Εάν θέλετε να αλλάξετε την ισχύ του διακριτικού, ορίστε την τιμή της ρύθμισης τοποθεσίας ImplicitGrantFlow/TokenExpirationTime στην απαιτούμενη τιμή. Η τιμή πρέπει να καθοριστεί σε δευτερόλεπτα. Η μέγιστη τιμή μπορεί να είναι 1 ώρα και η ελάχιστη τιμή πρέπει να είναι 1 λεπτό. Αν καθορίζεται μια εσφαλμένη τιμή (για παράδειγμα, αλφαριθμητικοί χαρακτήρες), χρησιμοποιείται η προεπιλεγμένη τιμή των 15 λεπτών. Εάν καθορίσετε μια τιμή πάνω από τη μέγιστη τιμή ή μικρότερη από την ελάχιστη τιμή, οι μέγιστες και ελάχιστες τιμές χρησιμοποιούνται αντίστοιχα, από προεπιλογή.
Για παράδειγμα, για να ορίσετε την ισχύ του διακριτικού σε 30 λεπτά, ορίστε την τιμή της ρύθμισης τοποθεσίας ImplicitGrantFlow/TokenExpirationTime σε 1800. Για να ορίσετε την ισχύ του διακριτικού σε 1 ώρα, ορίστε την τιμή της ρύθμισης τοποθεσίας ImplicitGrantFlow/TokenExpirationTime σε 3600.
Καταχώρηση αναγνωριστικού προγράμματος-πελάτη για εκχώρηση έμμεσης ροής
Πρέπει να καταχωρήσετε το αναγνωριστικό του υπολογιστή-πελάτη με την πύλη για την οποία επιτρέπεται αυτή η ροή. Για να καταχωρήσετε ένα αναγνωριστικό προγράμματος-πελάτη, πρέπει να δημιουργήσετε τις παρακάτω ρυθμίσεις τοποθεσίας:
Ρύθμιση τοποθεσίας | Value |
---|---|
ImplicitGrantFlow/RegisteredClientId | Οι έγκυρες τιμές αναγνωριστικού υπολογιστή-πελάτη που επιτρέπονται για αυτήν την πύλη. Οι τιμές πρέπει να διαχωρίζονται με ελληνικό ερωτηματικό και μπορούν να περιέχουν αλφαριθμητικούς χαρακτήρες και παύλες. Το μέγιστο μήκος είναι 36 χαρακτήρες. |
ImplicitGrantFlow/{ClientId}/RedirectUri | Τα έγκυρα URI ανακατεύθυνσης που επιτρέπονται για ένα συγκεκριμένο αναγνωριστικό προγράμματος-πελάτη. Οι τιμές πρέπει να διαχωρίζονται με ελληνικό ερωτηματικό. Η διεύθυνση URL που παρέχεται πρέπει να είναι μια έγκυρη ιστοσελίδα της πύλης. |
Δείγμα κώδικα
Μπορείτε να χρησιμοποιήσετε το ακόλουθο δείγμα κώδικα για να ξεκινήσετε με τη χρήση του OAuth 2.0 έμμεσης ροής με API πυλών Power Apps.
Χρήση του διακριτικού Oauth πύλης με ένα εξωτερικό Web API
Αυτό το δείγμα είναι έργο βασισμένο σε ASP.NET και χρησιμοποιείται για την επικύρωση του διακριτικού αναγνωριστικού που εκδίδεται από τις πύλες Power Apps. Μπορείτε να βρείτε το πλήρες δείγμα εδώ: Χρήση του διακριτικού OAuth πύλης με ένα εξωτερικό Web API.
Δείγμα τελικού σημείου Διακριτικό
Αυτό το δείγμα δείχνει τον τρόπο με τον οποίο μπορείτε να χρησιμοποιήσετε τη λειτουργία getAuthenticationToken για να λάβετε ένα διακριτικό αναγνωριστικού χρησιμοποιώντας το τελικό σημείο διακριτικού στις πύλες Power Apps. Μπορείτε να βρείτε εδώ το δείγμα: Δείγμα τελικού σημείου "Διακριτικό".
Σημείωση
Μπορείτε να μας πείτε ποια γλώσσα προτιμάτε για την τεκμηρίωση; Πάρτε μέρος σε μια σύντομη έρευνα. (σημειώνεται ότι αυτή η έρευνα είναι στα Αγγλικά)
Η έρευνα θα διαρκέσει περίπου επτά λεπτά. Δεν συλλέγονται προσωπικά δεδομένα (δήλωση προστασίας προσωπικών δεδομένων).