OAuth2.0の目的
OAuth2.0の目的は、IDとパスワードを渡すことなく、APIにアクセスできるようになることになります。
背景として、アプリ開発においてユーザーの認証情報を共有せず、ユーザーの代わりにAPI(リソース)にアクセスすることを許可することが求められたことがあります。
OAuth2.0の仕様
大まかな処理の流れ
- クライアントは必要なパラメータを使用し、認可エンドポイントに認可リクエストを送信する
- クライアントは、認可画面において承認・非承認を行う
- 認可サーバーは、あらかじめ受け取ったリダイレクトURI先にリダイレクトさせる。そのときに認可コードが含まれている
- クライアントは、認可コードを用いてトークン発行のリクエストを送信する
- 認可サーバーは、アクセストークンを発行する
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トークンを受け渡す仕組みを備えています。