OAuth2.0を作りながら理解する

wqwq
Mar 13, 2022

--

OAuth2.0の目的

OAuth2.0の目的は、IDとパスワードを渡すことなく、APIにアクセスできるようになることになります。

背景として、アプリ開発においてユーザーの認証情報を共有せず、ユーザーの代わりにAPI(リソース)にアクセスすることを許可することが求められたことがあります。

OAuth2.0の仕様

大まかな処理の流れ

  1. クライアントは必要なパラメータを使用し、認可エンドポイントに認可リクエストを送信する
  2. クライアントは、認可画面において承認・非承認を行う
  3. 認可サーバーは、あらかじめ受け取ったリダイレクトURI先にリダイレクトさせる。そのときに認可コードが含まれている
  4. クライアントは、認可コードを用いてトークン発行のリクエストを送信する
  5. 認可サーバーは、アクセストークンを発行する

http://openid-foundation-japan.github.io/rfc6749.ja.html#code-authz-req より引用

実装するときに気をつけること

  • 基本的に認可エンドポイント、トークンを発行するエンドポイントの2つを実装する
  • 認可画面を作る(このときユーザーは承認か否認を行うことができる)
  • 認可レスポンスには、302を使用しリダイレクトさせる

動作確認

実装した後の動作確認としては、OAuth2.0 debuggerが非常に便利です。
必要な項目を入力し送信して、最終的に認可コードを受け取れればOKです。その次に認可コードを用いて、トークンを発行します。

OpenID Connect との違い

OAuth2.0は認可のための仕組みであり、OpenID Connectは認証・認可のために仕組みです。つまりOpenID Connectは、OAuth2.0にはなかった認証の仕組みが追加されています。具体的には、JWTで生成されたIDトークンを受け渡す仕組みを備えています。

--

--