# OAuth https://ithelp.ithome.com.tw/articles/10225956 https://xiang753017.gitbook.io/zixiang-blog/security/cong-rfc-gui-ge-shu-guan-dian-jie-xi-oauth-2.0 ## 前提 身分驗證(authentication)、授權(authorization)與存取控制(access control)的差異 有四種授權方式 一種是服務與服務之間的串接,而不經由使用者 剩下三種都會經過使用者 Authorization Code Grant 相較安全的主因是:token 的傳輸都是在後端,對使用者而言是無感或不存在的。也因此攻擊者無法藉由使用者操作不當進而取得 token 與權限。 解釋 https://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html ## OAuth2 标准与微服务的单点登录 https://luo3.org.cn/posts/learn/oauth2-and-sso-solutions-between-microservices/ OAuth2在微服务架构中的应用 https://www.cnblogs.com/hzhuxin/p/10849741.html ## jwt vs oAuth ![image](https://hackmd.io/_uploads/BkfGzgU5p.png) 使用 JWT 也有它的缺點。例如,一旦 JWT 被發放,直到它過期之前都不能被撤銷,這可能對於需要高安全性的應用來說是一個問題。在這種情況下,OAuth 提供了更靈活的控制,因為令牌可以隨時被授權服務撤銷 使用 OAuth 來處理第三方應用的授權,而內部服務之間的通信則使用 JWT 來進行身份驗證和授權 ![image](https://hackmd.io/_uploads/Byxx7gIca.png) ## code to get token ## 簡介 OAuth 2.0 今天有一個美圖軟體,功能是把使用者上傳到 Facebook 的照片做修圖。使用者要用這個服務的話,必須讓美圖軟體能存取使用者儲存在 Facebook 上的照片。美圖軟體並不是使用者本人,所以無法存取使用者放在 Facebook 上的照片。因此,要讓美圖軟體存取,最直覺最簡單的方法:使用者將 Facebook 的帳號密碼給美圖軟體,這樣就可以讀取使用者的照片了。 只是這樣做會有下面的缺點: 美圖軟體必須保存使用者的密碼才能繼續服務 美圖軟體有了使用者的帳密,代表同時擁有使用者在 Facebook 的所有權力,完全無法限制範圍和期限 使用者只有改密碼才能回收權力,但使用者所有「有提供帳密的第三方應用程式」會同時無法使用 只要有任一個第三方應用程式被駭客入侵了,就會導致使用者密碼外泄(參考第一點),甚至 Facebook 上的所有資料與所有第三方應用程式都會外泄 OAuth 正是為了要解決上面這些問題的框架 OAuth 2.0 只討論如何授權,不討論身分驗證 現今的社群服務非常多,如 Facebook。使用者可以利用這個服務上傳個人照片,並分享給好友。 OAuth 提供者必須要先知道「我是誰」--也就是身分驗證,才能知道是誰的資源要授權給第三方應用程式。因此在授權成功(即拿到 access token)的同時,其實 OAuth 提供者也同時完成了身分驗證,這就是所謂的「OAuth 登入」 ## OAuth 2.0 直接發 JWT JWT 只管 token 的長相,而不管流程;而 OAuth 2.0 則是定義了授權流程,而不管 token 的長相,因此兩個剛好可以組合在一起使用,這就是 JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens 所在討論的。 ## 授權 在 OAuth2 的世界裡,授權指的是使用者,讓第三方應用程式取得使用者的資源。 如:使用者的大頭照放在 Facebook,而某個第三方軟體如 iT 邦幫忙,想取得使用者的大頭照,必須要經過使用者授權。注意:要或不要的決定權在於使用者。 ## 存取控制 系統管理者,或被授權的使用者,才有權利更改存取控制的策略。目的是管理並控制使用者存取資源的權限。 如:留言板系統,前台使用者只能留言,後台使用者可以刪除留言。再一次與授權比較如下: * 存取控制:管理者控制使用者可存取哪些資源 * 授權:使用者可控制第三方應用程式能存取哪些資源 ## Password, Session, Cookie, Token, JWT, SSO, OAuth https://blog.bytebytego.com/p/password-session-cookie-token-jwt?utm_source=substack&utm_medium=email ###### tags: `觀念重點區`