OAuth2 === ###### tags: `skills` ## OAuth2とは HTTP上で認可(認証ではなく、認可)を行うためのプロトコル。 OAuth2とは、外部サービスのアカウント情報を使ってパスワードなしでユーザー情報にアクセスできる仕組み。 OAuthの仕組みにはバージョンがあり1.0と2.0で仕組みが異なる。 [RFC6749](https://tools.ietf.org/html/rfc6749)(The OAuth 2.0 Authorization Framework)で定義されている4つの認可フローがある - 認可コードフロー: Authorization Code Grant 1. 認可エンドポイントに認可リクエストを投げる 2. 応答として短命の認可コードを受けとる 3. その認可コードをトークンエンドポイントでアクセストークンと交換する - インプリシットフロー: Implicit Grant 1. 認可エンドポイントに認可リクエストを投げる 2. 応答として直接アクセストークンを受け取る - リソースオーナー・パスワード・クレデンシャルズフロー: Resource Owner Password Credentials Grant 1. トークンエンドポイントにトークンリクエストを投げる 2. 応答としてアクセストークンを受け取る - クライアント・クレデンシャルズフロー: Client Credentials Grant 1. トークンエンドポイントにトークンリクエストを投げる 2. 応答としてアクセストークンを受け取る また、リフレッシュトークンを用いてアクセストークンの再発行を受けるフローもある - リフレッシュトークンフロー: Refreshing an Access Token 1. 事前に発行を受けていたリフレッシュトークンをトークンエンドポイントに提示 2. アクセストークンの再発行する 認可コードフロー Authorization Code Grant --- ![](https://i.imgur.com/0kSD0Q0.png) インプリシットフロー Implicit Grant --- ![](https://i.imgur.com/SNzKQuO.png) リソースオーナー・パスワード・クレデンシャルズフロー Resource Owner Password Credentials Grant --- ![](https://i.imgur.com/cfmdTSq.png) クライアント・クレデンシャルズフロー Client Credentials Grant --- ![](https://i.imgur.com/hN2FarS.png) リフレッシュトークンフロー Refreshing an Access Token --- ![](https://i.imgur.com/JIVJ4aD.png) 参考 --- - https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f - https://qiita.com/RingCaptcha/items/1a66adfcd25992ef2020