Skip to content
Latchkey

OAuthトークンとは何か? 委譲されたアクセスの解説

OAuthトークンは、OAuthフローを通じて発行される認証情報で、パスワードを共有することなく、ユーザーやアプリケーションに代わってクライアントにAPIへのスコープ付きかつ有効期限付きのアクセスを付与します。

OAuthを使うと、アプリは生の認証情報を渡すことなく、ユーザーまたは自身に代わって動作できます。その結果得られるのが、特定のスコープと有効期限を持つaccess tokenです。pipelineはdeployに使うAPIに対して認証するためにOAuthトークンを使い、トークンの問題は401失敗の頻繁な原因となります。

委譲されスコープ付きのアクセス

パスワードを共有する代わりに、OAuthは要求された権限(スコープと呼ばれる)だけを付与するトークンを発行します。トークンはその限定された権限をAPIに対して表現します。

access tokenとrefresh token

  • access tokenは短命で、各リクエストとともに送信されます。
  • refresh tokenは再ログインなしで新しいaccess tokenを取得します。
  • スコープはトークンが許可される操作を制限します。

どう送信されるか

OAuthのaccess tokenは通常、Authorizationヘッダーにbearer tokenとして提示されます。APIはそれを検証し、呼び出しを許可する前にそのスコープを確認します。

CI/CDにおけるOAuthトークン

pipelineはトークンをsecretとして保存し、deployやプラットフォームのAPIを呼び出すために使います。実行ごとに発行される短命のトークンは、secretに残り続ける長命のものよりも安全です。

なぜ呼び出しが401や403で失敗するのか

期限切れのトークンは401を返し、必要なスコープを欠くトークンは403を返します。どちらも決定的な認証の問題でありネットワークの揺らぎではないため、修正は新しいトークンまたはより適切なスコープのトークンです。

一時的な失敗と認証の失敗

有効なトークンを提示している最中の接続断は一時的でretry可能ですが、401はそうではありません。Latchkeyのrunnerは、一般的なendpointへの一時的な転送障害をretryしつつ、真の認証エラーを表面化させ、あなたがトークンを更新できるようにします。

重要なポイント

  • OAuthトークンは、パスワードを共有せずにスコープ付きかつ有効期限付きのアクセスを付与します。
  • access tokenは短命でbearer tokenとして送信され、refresh tokenがそれを更新します。
  • 401や403は決定的な認証の問題であり、retry可能な揺らぎではありません。

関連ガイド