OAuth
#HTTP #Web #認可
用語
認可サーバ
アクセストークンを発行する。
ユーザは、認可サーバのアカウントを持っている必要がある。
リソースサーバ
許可した権限で自由にアクセスできる対象。
Twitter等であれば、認可サーバと同一。
クライアント
アプリケーション。
認可サーバにアプリケーションを登録し、ID(client_idとclient_secret。クレデンシャルとも呼ぶ)を取得する必要がある。
スコープ
Client Secret
認可サーバとの間でのクライアント認証に利用する。
フロー
4種類のフローを提供している。
Authorization Code
通常のフロー。
client_secretを使って、認可サーバとの間でクライアント認証ができる。
stateパラメータの指定は任意であるが、CSRF対策のために、常に指定する。
Refresh Tokenを利用すると、Access Tokenを適宜再発行できる。
Implicit Grant
client_secretなしでアクセスできるパターン。
ネイティブアプリ(iPhone/Android等)やJavaScriptアプリでの利用を想定されている。
stateパラメータの利用が強く推奨される。
Resource Owner Credenials Grant
Client Credentials Grant
クライアントタイプ
OAuth 2.0 のフローとクライアントタイプの関係
参考
一番分かりやすい OAuth の説明
OAuth 2.0 全フローの図解と動画
OAuth 2.0の代表的な利用パターンを仕様から理解しよう
OAuth 2.0 の仕組みと認証方法
OAuth 2.0 クライアント認証
OAuth認証とは何か?なぜダメなのか - 2020冬
Node.js
Node.jsの標準モジュールのみを使ってOAuthの解説を試みる
Writing an OAuth flow from scratch in NodeJS
Grant
OAuth Middleware for Express, Koa and Hapi