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

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

www.shoeisha.co.jp

10章については先日書きました

zwzw.hatenablog.com

今回は11章についてです

11章 OAuthトーク

OAuthトークンとは

OAuthのトランザクションの中核となるもの

認可サーバーはトークンをクライアントに渡す際に権限委譲とトークンに紐づいたクライアントへの許可を管理し、

保護対象リソースはクライアントから渡されたトークンに付与された権限とクライアントの要求している権限が一致するかを検証する

認可サーバーと保護対象リソースでDBを共有できない場合、トークン内部にスコープなどの情報をもつという方法と、認可サーバーがAPIを提供する方法がある

トークン内部に情報を持つ方法

JWT (JSON Web Token)

JWTと呼ばれるフォーマットは、トークンとともに送られる必要がある情報を運搬するためのシンプルな方法を提供している

ヘッダーと、JWTクレームと呼ばれるアプリケーション間で使えるフィールドに格納された情報をBase64エンコードしてトークンとして渡すことで、トークンの中に情報を保持できるようになる

JOSE (JSON Object Signing and Encryption)

JWTのままだと誰でもdecodeして情報を書き換えることができる

JWTに署名や暗号化を行なってセキュアにしたものがJOSEである

認可サーバーがAPIを提供する方法

トークン・インストロペクション

トークン・インストロペクションに関するプロトコルでは、保護対象リソースが認可サーバーに対してトークンの状態について能動的に検索するための仕組みが定義されている

保護対象リソースは認可サーバーのトークン・インストロペクション・エンドポイントにPOSTでリクエストを送り、トークンに紐付くクライアントやスコープの情報を受け取る

また、トークンをクライアントが取り消せるようにトークン取り消しエンドポイントが実装されていることもある

感想

JWTやらJOSEやら出てきてトークンの中身って見れちゃいけないんじゃなかったけ?と最初は思ったが、認可サーバーと保護対象リソースがDB共有してないケースは容易に想像できるので割と使われている仕組みなんだろう