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

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

www.shoeisha.co.jp

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

zwzw.hatenablog.com

今回は12章についてです

動的クライアント登録

OAuthにおいて、クライアントは一般的にクライアント識別子で認可サーバーに識別される

クライアントはOAuthの動的クライアント登録によって自身のクライアント識別子 (ID)とシークレットを取得する

実行時におけるクライアント登録

動的クライアント登録では、クライアントが認可サーバーのクライアント登録エンドポイントへPOSTによるリクエストを送信する

このデータにはクライアントの表示名、リダイレクトURI、スコープ等が含まれる

POST /client-register HTTP/1.1

{
    "client_name": "Client",
    "redirect_uris": ["https://foobar.com/callback"],
    "grant_types": ["authorization_code"],
    "scope": "foo bar"
}

リクエストが成功すると、認可サーバーは新しいクライアントIDとクライアントシークレットを作成しクライアントへ送信する

こうすることでクライアントは今後の認可サーバーとのやりとりで自身のIDとシークレットを使用できるようになる

動的に登録されたクライアントの管理

クライアント表示名が変わったり、リダイレクトURIを追加したり、スコープを変更する場合、クライアントは認可サーバーにそれを伝える必要がある

OAuthの動的クライアント登録の管理プロトコルでは、動的クライアント登録を拡張したRESTfulなプロトコルを定義している

登録プロトコルの「create」メソッドと関連して「read「update「delete」メソッドを追加することで、全体的なライフサイクル管理が行われている

感想

インストール型のネイティブアプリではクライアントIDとクライアントシークレットをあらかじめ決めておくことができないというのがこれまでの章で書かれていたが、動的クライアント登録でそれを解決する方法が細かく書いてあってスッキリした

実際、サービス (クライアント)をリリースした時からサービスの情報が変わらないなんてことは特にwebサービスではありえないだろうから動的クライアント登録は重要