作者簡介
周建毅 (Miles)
約十年的 PHP 開發經驗,也是 Laravel 框架的愛好者。
於 2016 年任職於一零四資訊科技公司後,開始進入實作身分驗證的團隊。實作過程發現身分驗證相關知識不足,因此開始閱讀文件,並經歷許多設計經驗後,才打造出可用的身分驗證核心。
該著作的源起,主要是想將當初閱讀文件所遇到的阻礙,與設計架構及實作踩的雷,轉換成可分享的知識庫,讓有相同需求的讀者,能夠用更簡單的方法入門實作 OAuth 2.0 與 OpenID Connect,同時也能讓網路上的應用程式更加地安全可靠。
推薦序一:開發一定會碰到身分驗證
推薦序二:簡單但不簡單的 Auth 開發
推薦序三:RFC 汪洋中的一盞明燈
序言
CHAPTER 01 身分驗證與授權
1-1 識別
1-2 驗證
1-3 授權
1-4 歸責
1-5 章節回顧
CHAPTER 02 HTTP協定
2-1 HTTP 的特性
2-2 Cookie 機制
2-3 SSL∕TLS
2-4 章節回顧
CHAPTER 03 密碼學
3-1 加密與解密
3-2 雜湊
3-3 訊息驗證碼
3-4 數位簽章
3-5 亂數
3-6 章節回顧
CHAPTER 04 實作 Web 身分驗證
4-1 身分驗證
4-2 JWT
4-3 狀態保存
CHAPTER 05 OAuth 2.0 與 OpenID Connect 簡介
5-1 OAuth 2.0 情境劇
5-2 OAuth 2.0 與 OpenID Connect 能做什麼?
5-3 OAuth 2.0 與 OpenID Connect「不能」做什麼?
5-4 本章重點
CHAPTER 06 OAuth 2.0 授權協定
6-1 OAuth 2.0 的角色
6-2 Access Token 與 Refresh Token
6-3 快速建構 OAuth 2.0 應用程式
6-4 註冊應用程式
6-5 授權碼流程
6-6 隱含授權
6-7 密碼驗證授權
6-8 應用程式憑證授權
6-9 使用 Refresh Token 換發 Access Token
6-10 Token 如何使用、驗證與撤銷?
6-11 我應該使用哪個 OAuth 2.0 授權類型?
6-12 其他注意事項
CHAPTER 07 其他應用程式類型的授權流程
7-1 Proof Key for Code Exchange 擴充協定
7-2 原生應用程式的授權流程
7-3 瀏覽器應用程式的授權流程
CHAPTER 08 OpenID Connect 身分驗證協定
8-1 完成身分驗證與完成授權的差異
8-2 OpenID Connect 與 OAuth 2.0 的比較
8-3 身分驗證流程
8-4 Prompt 參數用法
8-5 登出流程
8-6 第三方啟動登入
8-7 OP 與應用程式的相關資訊定義
CHAPTER 09 應用程式端的實務範例
9-1 透過 OAuth 2.0 協定請求 Facebook 授權
9-2 透過 OpenID Connect 協定請求 LINE Login 身分驗證
CHAPTER 10 授權伺服器的實務範例
10-1 Hydra 簡介
10-2 Hydra 的流程定義
10-3 建構 Hydra 與相關服務
10-4 總結
APPENDIX A 規範參考文件
APPENDIX B 專有名詞參考
APPENDIX C 縮寫名詞參考