OAuth徹底入門の読書感想文 -15章-

OAuth徹底入門を読んだので感想と概要を書いていきます

www.shoeisha.co.jp

今日は15章についてです

16章はまとめなので長々と書いてきたOAuth徹底入門の読書感想文もこれでラストです!!

Bearerトークンの次に来るもの

Bearerトークン以上のものが必要な理由

Bearerトークンは圧倒的に使われているトークンの種類であり、使いやす胃だけでなく標準の使用で定義されている唯一のトーク

しかしBearerトークンはリソースに提示するだけで認可されたことを意味するトークンであり、ある意味対象のリソースに対してクライアントに発行される単なるパスワードにすぎない

Bearerトークンを使わない方法としては、所有証明 (Proof of Possession: PoP)トークンを使う方法と、TLS (Transport Layer Security)トークン・バインディングと呼ばれる方法がある

PoPトーク

PoPトークンはトークン自体がシークレットになるのではなく、トークンと鍵の2つの要素で構成されている

  • 認可サーバーはアクセストークン発行時に鍵も発行しクライアントに渡す、そして公開鍵のみ保存しておく

  • クライアントはトークンを秘密鍵で署名しリソースサーバーへ渡す

  • リソースサーバーは公開鍵を認可サーバーへ問い合わせて取得することで署名を確認する

TLSトークン・バインディング

トークン・バインディングTLSからの情報をHTTPのようなアプリケーション層のプロトコルやOAuthのようなHTTP上で運用されているプロトコルの内部で使えるようにするための方法

  • HTTPクライアントはHTTPサーバーとのTLS接続を構築する際に、公開鍵 (トークン・バインディングの接続子)をHTTTPヘッダに含め、関連する秘密鍵を保持していることを証明する

  • サーバーがトークンを発行する際に、そのトークンを識別子と関連づける

  • クライアントはサーバーに接続する際に秘密鍵を使って署名し、ヘッダーに含める

  • サーバーは署名を検証し、クライアントが元の鍵ペアを提示したクライアントと同じであることを確認する

チャネルが1つの場合は上記のやり取りのみで済むが、OAuthでは通常5つ程度のTLSチャネルが必要となる

その場合は一つの接続の識別子を別の接続に送ることをクライアントに選択できるようにすることでトークンとの関連づけを扱い、別々の接続をつなげていく

感想

読み進めながらBearerトークンと提示する部分だけセキュリティ甘い感じがしていたが、やっぱり課題感を感じて別の取り組みを行なっている人がいるんだなと思った

PoPは割と手軽に導入できそう

全体の感想

かなり読み応えのある本だった

後半難しい部分もあったが網羅的にOAuth2.0についての知識をつけるにはとても良い本だと思う

著者も述べているようにOAuthのライブラリの使い方に関するガイドではなく、OAuthについて詳しくなり、どんなプラットフォーム上でもOAuthを使えるようになることを目的とした本なのでそういう全体的な知識を得たいと思ってる人にはおすすめ

完璧に理解できたわけではないのであとは困った時にOAuthとは?というのを思い出すために戻ってきて読みたいと思う