title: “OAuth 2.0” aliases:


アプリケーションが利用者のパスワードを受け取らずに、別サービス上のリソースへの限定的なアクセス権を得るための、業界標準の認可プロトコル。

概要

OAuth 2.0は認可(authorization)のためのプロトコルであり、認証そのものを目的とするものではない。Web、デスクトップ、モバイル、入力・表示が限られたデバイスなどに向けた認可フローを定める。

仕組み

利用者は認可サーバーで、クライアント(アプリ)に許可する権限を承認する。クライアントは得たアクセストークンをリソースサーバーへ提示して、許可された範囲のAPIを利用する。scopeで権限範囲を絞り、必要に応じてリフレッシュトークンでアクセストークンを更新する。

代表的なフロー

ユーザーが操作するアプリでは、認可コードフローが使われる。公開クライアントではPKCEを組み合わせる。ユーザー操作なしのサービス間連携にはクライアントクレデンシャルフロー、ブラウザーやキーボードを使えない機器にはデバイス認可グラントがある。

WikiDigでの文脈

WikiDigのGitHub連携による保守フローでは、OAuth 2.0を用いてGitHub上の操作に必要な認可を扱う。アプリケーションへ与える権限は用途に必要な最小限にする。

  • アクセストークン — OAuth 2.0でAPIアクセスに用いるトークン
  • PKCE — 認可コードフローを補強する仕組み
  • OpenID Connect — OAuth 2.0を基盤として認証情報を扱うプロトコル
  • GitHub — WikiDigの保守フローで認可先となるサービス

Sources