上一篇,講到 Access Token ,那接下來說說,建立 Token 的原理。
建立 Token
基本原理就是將資料先用 base64_encode 做加密後,再用指定的演算法跟密碼(e.g. sha256),去產出一個固定長度的加密 (Encrypt) 字串,取得加密字串的人,以再依照相同的規則跟密碼將資料還原。
一般加密規則
主要是需要這三個參數 algorithm、mode、padding 去運算,看起來大家都講好規則了,應該溝通沒問題了吧?
沒想到是災難的開始,因為並沒有一個審核機制,各家 Open source 就開始照著自己詮釋去做,結果無法正常解密的問題,尤其發生跨語言之間,例如 PHP 用的 library 跟 Java 用的 library 肯定不一樣,PHP 對於實作 Padding 差異上,幾乎是所有開發者必踩的雷。
http://php.net/manual/en/ref.mcrypt.php
進化的 Token
時代的進化,這麼漸漸單純的 Token 已經不符使用,我們有更多的需求:
- 要有期限
- 要可以被驗證
- 要傳遞附加公開資訊
- 我們要說共同的語言
- 略…