Μετάβαση στο περιεχόμενο
Τεκμηρίωση · Τηλεοράσεις και εργαλεία γραμμής εντολών

Τηλεοράσεις, κονσόλες και εργαλεία γραμμής εντολών

Μια τηλεόραση δεν μπορεί εύκολα να εμφανίσει σελίδα σύνδεσης, και ένα εργαλείο γραμμής εντολών δεν πρέπει να ζητά συνθηματικό. Με τη ροή συσκευής, η συσκευή εμφανίζει έναν σύντομο κωδικό, και ο χρήστης τον πληκτρολογεί στο 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).