本系列文之後也會置於個人網站
光要完成這個範例就花了幾乎整整一天
做完後決定...來拆篇
這第二部份,將有部份內容會在【實戰篇】展開。
今天就先來看看成果。
在這次的範例應用中,同樣是簡單的「Hello, Bob.」。在應用一開始僅僅是起始畫面:
在點擊「登入」後,應用會先與授權伺服器溝通(後端通訊),先行取得device_code
和user_code
。接著應用會將user_code
交給使用者,也就是下圖裏的TEDG-VRMU
。
並且會給與一個登入連接,可以輸入這個代碼:
輸入代碼後就可以登入授權。接著應用就會取得存取權杖,像使用者Say Hello~
除此之外,還可以透過手機掃描QR Code登入。
不過需要將授權伺服器也可以與手機溝通。 在學習實驗上,可以將
http://localhost:8080
改成區域網路的IP --http://192.168.x.x:8080
,比如:http://192.168.1.103:8080
實際上這個QR Code儲存的資訊就只是一個包含user_code
的特殊登入連結 -- http://localhost:8080/auth/realms/quick-start/device?user_code=TEDG-VRMU
。
接著來看一下其他類似登入方式的應用。
QR Code同樣是一個特殊連結: https://discord.com/ra/XRwgIWiSKLz22RRDQR4Zg61CKDzFE6CX8KW3jj4rxhc
QR Code同樣是一個特殊連結: https://line.me/R/au/q/SQ4b7330474737387673564b76775468366b6f4e436f624236474a31444e487339?secret=GjqDoowV9nLHjXuxXlmWQTNIOrt0usSjd99vs3GdKXc%3D&e2eeVersion=1
Telegram得到的結果比較特別,但同樣是URI: tg://login?token=AQXTX1lhVEI6pbRlA3HLtBz6wnrH6TGkpjwcBj7t6Cek4A==
。這個URI在桌面或手機瀏覽器開啓時,若有適當註冊,同樣會在開始特定應用程式。
在「深入OAuth 2.0」提到的「特殊密碼」提到過一些相似的形式:
- 透過簡訊驗證: 透過簡訊寄送一組限時且只能使用一次的密碼
- 透過信箱驗證: 透過信箱寄送一組限時且只能使用一次的密碼
- 特殊連接驗證: 透過一個特殊的連接,該連接有時效性,且只能存取一次。
- 透過時間產生特殊密碼: TOTP, Time-base One Time Password。
- 透過雜湊產生特殊密碼: HOTP, HMAC-based One Time Password。
- 與系統服務約定好數組一次性密碼
- 與系統服務約定好特殊狀況使用密碼
- 使用行動裝置登入
雖然不存在QR Code,但Medium、Notion同樣可以透過特殊連接登入。非常像這裏體到的Device Code模式。
如果你有使用過Medium、Notion 、
Tumblr的話,他們都可以透過信箱寄送一個 神奇的連接 讓你登入。
最後一些細節,將會在【實戰篇】在詳細展開討論。