Τηλεοράσεις, κονσόλες και εργαλεία γραμμής εντολών
Μια τηλεόραση δεν μπορεί εύκολα να εμφανίσει σελίδα σύνδεσης, και ένα εργαλείο γραμμής εντολών δεν πρέπει να ζητά συνθηματικό. Με τη ροή συσκευής, η συσκευή εμφανίζει έναν σύντομο κωδικό, και ο χρήστης τον πληκτρολογεί στο Lobby του περιβάλλοντός του από το τηλέφωνο ή τον υπολογιστή του, όπου είναι ήδη συνδεδεμένος.
Καταχωρίστε την εφαρμογή
Στο Usher Console, ανοίξτε το περιβάλλον και, στη συνέχεια, Εφαρμογές → Νέα εφαρμογή → Τηλεόραση ή γραμμή εντολών. Παίρνει αναγνωριστικό πελάτη και κανένα μυστικό: μια συσκευή δεν μπορεί να κρατήσει ένα.
Η ροή
# 1. the device asks for a code
curl -s -X POST https://acme.usherid.com/api/auth/device/code \
-d client_id=YOUR_CLIENT_ID -d scope='openid email offline_access'
# → { "device_code": "…", "user_code": "6L95PBQQ",
# "verification_uri": "https://acme.usherid.com/device",
# "verification_uri_complete": "https://acme.usherid.com/device?user_code=6L95PBQQ",
# "expires_in": 600, "interval": 5 }
# 2. it shows the code (and a QR code of verification_uri_complete), then polls
curl -s -X POST https://acme.usherid.com/api/auth/oauth2/token \
-d grant_type=urn:ietf:params:oauth:grant-type:device_code \
-d device_code=… -d client_id=YOUR_CLIENT_ID
# → { "error": "authorization_pending" } until the person allows it,
# then { "access_token": "…", "id_token": "…", "refresh_token": "…" }- Κάντε ερωτήματα με μέτρο. Περιμένετε
intervalδευτερόλεπτα ανάμεσα στα ερωτήματα. Σε πιο γρήγορα ερωτήματα η απάντηση είναιslow_down. - Σταματήστε όταν σας το πουν. Το
access_deniedσημαίνει ότι ο χρήστης αρνήθηκε· τοexpired_tokenσημαίνει ότι πέρασαν δέκα λεπτά. Ζητήστε νέο κωδικό. - Εμφανίστε και τη διεύθυνση. Δεν μπορούν όλοι να σαρώσουν κωδικό QR: εμφανίστε το
verification_uriκαι τον κωδικό, με κενό όπως6L95-PBQQ.
Στο /device, το Lobby δείχνει στον χρήστη ποια εφαρμογή ζητά και τι. Του λέει να συνεχίσει μόνο αν το ξεκίνησε ο ίδιος και η συσκευή του δείχνει τον ίδιο κωδικό.
Δέστε τα διακριτικά στη συσκευή (DPoP)
Ένα διακριτικό αντιγραμμένο από μια συσκευή εξακολουθεί να είναι διακριτικό. Με το DPoP (RFC 9449), η συσκευή κρατά ένα ιδιωτικό κλειδί και στέλνει μια νέα υπογεγραμμένη απόδειξη με κάθε αίτημα. Ένα διακριτικό δεμένο σε αυτό το κλειδί είναι άχρηστο χωρίς αυτό.
- Ζητήστε δεμένα διακριτικά: στείλτε μια κεφαλίδα
DPoPμε τα αιτήματα διακριτικών σας, και το Usher δένει ό,τι εκδίδει στο κλειδί σας (τοtoken_typeείναιDPoP). - Απαιτήστε τα: ενεργοποιήστε το Απαίτηση DPoP όταν δημιουργείτε την εφαρμογή. Τότε το Usher δεν της εκδίδει κανένα διακριτικό χωρίς απόδειξη.
- Χρησιμοποιήστε τα με
Authorization: DPoP <token>, μαζί με μια απόδειξη για αυτό το αίτημα. - Βιβλιοθήκες: οι περισσότερες βιβλιοθήκες OAuth με υποστήριξη DPoP τα κάνουν όλα αυτά για εσάς (για παράδειγμα, η επιλογή
DPoPτουopenid-client).