• トップ
  • ブログ一覧
  • RFC6749(The OAuth 2.0 Authorization Framework)でRFCに入門してみる
  • RFC6749(The OAuth 2.0 Authorization Framework)でRFCに入門してみる

    こま(エンジニア)こま(エンジニア)
    2024.11.26

    IT技術

    概要

    OAuth2.0でRFCに入門したので、読み方や読んだ感想をまとめてみます。

    ざっくり要約

    • 強くなりたいのでOAuthのRFCに手を出した
    • RFCは難しい本を読むときの意識で取り組めば読み通せそう
    • RFCを読んだら強くなれそうなので、今後も手を出していきたい

    背景

    業務でOAuthと関わる機会が多くありました。
    関わるたびに難しくとっつきづらい印象を持っていましたが、書籍・技術記事やライブラリのドキュメントが充実しているおかげでなんとか乗り切れていました。

    ※ 「Auth屋」さんの書籍にはとても助けられたのでおすすめです。

    しかし、いろんな文書を行ったり来たりして繋ぎ合わせた知識でしのいだことから、十分な理解が得られていないと課題に感じていました。
    やはり業務で触れる技術は深く理解しておきたいところです。

    そこで、書籍や技術記事でもたびたび触れられているRFCが気になっていました。
    ちらちら見てはいましたが、仕様書という雰囲気で技術記事や書籍と比べると中身が重そうに見え、中々手が出せずにいました。

    ただ、やはり一次情報には触れておきたいので、ここから一歩強くなるためにRFCへ入門する必要があると感じました。

    色々書いてみましたが、とりあえず強くなるためにRFCに手をだすことにしました(:

    読んだRFC

    OAuthについて書かれたRFCを読んでみました。RFCを載せているサイトは色々ありましたが、とりあえず読みやすそうな表示だったものを選んでみました。

    参考

    目次が表示されているので、読むときの補助も万全そうです。

    読み方

    ここからは、実際に読んだときの読み方をざっくり振り返ってみます。
    RFCは文量こそ少なめではありますが、難易度が高めだったので、どう読むのが良さそうか戦略を立てながら読み進めていきました。

    読む目的を見据える

    書籍や公式ドキュメントなどでも共通する考え方です。文書を読むことでどんな情報を得たいのか、目的を決めておきます。
    欲しい情報が定まっていれば、関係する箇所だけを読むのに集中できるようになります。

    今回はOAuthの認可の流れを明確にすることを目指して読みました。
    情報を取捨選択しつつ、章や節ごとに目的に近づいているか確認しながら読み進められたので、ゴールを見据えておいてよかったです。

    全体像を掴む

    丁寧に章立てされているので、書籍を読むときのテクニックが使えそうです。
    まずは章や節のタイトルから、どこに何が書いてありそうかアタリをつけておきます。

    アタリがあれば、章や節を読むことでどんな情報を得て、何を理解しておきたいか小さなゴールをたくさんつくれるようになります。

    用語に喰らいつく

    RFCを読んでいく中で、ここが特に重要だと感じました。

    RFCでは図やコード(OAuthではHTTPリクエストやレスポンスのサンプル)が最小限に抑えられています。
    そこから理解を紡いでいくには、言葉を頼りにしていくことになります。

    これは抽象的な知識を組み上げる作業になるので、用語を正確に理解するのが何より重要でした。
    言葉の意味に曖昧なところがあると、繋がりにほころびが生まれて納得できない箇所が出てきてしまいました。

    ですので、文書中に繰り返し出てくる言葉が何を指しているのか、自分の中で言葉にしながら読んでいくのが大事です。

    文書の中を何度も行ったり来たりして大変でしたが、その分言葉同士のつながりが見えてきて理解も深まってきたと手応えがありました。

    抽象と具体を行き来しながら、汎用的な知識を構築

    RFCを読んでいくと、抽象的な言葉から汎用的な知識を組み上げられるようになるはずです。
    ただ、前提知識が無いまま挑むと、言葉を自分の理解できる単位まで噛み砕くことができず、行き詰まってしまいます。

    業務などで実際に手を動かした経験や、やさしめな書籍で見た図やコードを理解の助けとするのが良さそうです。
    このような営みは、書籍『エンジニアの知的生産術』のモデル化に相当すると感じました。抽象的な言葉は、具体の上に積み上げることでモデル化された汎用的な知識になると言えそうです。

    参考

    疑問はとことん調べる

    RFCでは技術を余すところなく記述しているので、なぜこれが必要なのかなど、疑問がたくさん湧いてきました。
    問いから生まれる知識は理解において重要なので、都度立ち止まって納得するまで考えたいところです。

    けっこうな回り道になりましたが、問いを調べる過程でもいろいろな知識を集められて理解が進んだはずです。

    また、疑問を調べたときに見つかる参考資料でも、RFCに準拠しながら議論していました。
    RFCというコンテキストが共有されたことで、理解の前提を得られた気がしました。

    理解の前提を得ておくと、ほかにも分からないことがあったときにも、知りたいことからそれることなく欲しい情報にたどり着けそうです。

    参考

    読んだ感想

    RFCはハードルが高そうと思っていましたが、5~6時間ほどで読むことができました。
    一般的な技術書を読むぐらいの時間でたくさんの知識を手にいれることができたので、もっと早く入門しておけばよかったと思いました。

    技術の一次情報にあたることができたので、少しだけ理解にも自信がついてきました。
    そしてなにより、欲しい知識をたくさん得られて知識欲が満たされたので、読んでいて楽しかったです。

    今後

    RFCは面白いことがわかったので、ほかの文書にも手を出したいです。

    メール関連の技術やJWTなんかも一次情報にあたっておきたいので、読んでみたいです。
    参考

    また、OAuthの理解をさらに深めるために、なんちゃって認可システムを実装したりしてみたいです。

    まとめ

    RFCの最初の一歩を踏み出しました。
    中々理解できず苦労もありましたが、読み通すことで一段階強くなれた気がします。

    ほかのRFCにも手を出したり、手を動かしたりすることでさらに力をつけたいです。

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background