概要
「認証と認可 Keycloak 入門」を読みました。 「前提(OAuth・OIDC・SAML の経験、目的)」「読了時間」「感想」「OAuth・OIDC・SAML で勉強すること」「まとめ」を記述します。
前提
OAuth・OIDC・SAML の経験
以下の関連書籍を読んだ経験があります。
- 雰囲気で OAuth2.0 を使っているエンジニアが OAuth2.0 を整理して、手を動かしながら学べる本
- OAuth、OAuth 認証、OpenID Connect の違いを整理して理解できる本
- OAuth・OIDC への攻撃と対策を整理して理解できる本(リダイレクトへの攻撃編)
- SAML 入門
Auth 屋の書籍のチュートリアルで手を動かしてフローを学んだ他、簡単な Web アプリケーションで Next-Auth や Auth0 で OIDC を導入したこともあります。
目的
以下の効果を得られることを目的に読み始めました。
- OAuth2.0、OIDC の正しい理解を深める
- Keycloak を用いた、実践的な OAuth(OIDC)のユースケースを学ぶ
書籍自体には、Keycloak の実践かつ応用的な利用方法も紹介されています。 その分野は今回の目的ではなかったので読みませんでした。 具体的には 1 章から 5 章を読みました。
読了時間
1 章から 5 章を 4 週間かけて読み、毎週末には知り合いと勉強会を開催し認識合わせを行いました。 1 週間に平均 2 時間ぐらいかけ準備し、勉強会も 2 時間ぐらいだったので、合計 16 時間ほどかけました。 ただし、勉強会参加メンバーは全員 OAuth・OIDC の前提知識を持っています。 もし知識がなかったら、もっと時間がかかると思いました。
感想
OAuth・OIDC の復習に最適な本で、当初の目的だった「OAuth2.0、OIDC の正しい理解を深める」を達成しました。 良かった点、気になった点をそれぞれ述べていきます。
良かった点
良かった点は 3 つあります。
1 つ目は言葉の定義が適切に行われているため知識の整理に役立つことです。 OAuth に限らない認証・認可や、IAM の領域の用語が出てくるたびに解説したり図で整理してくれうため、非常に参考になりました。 初歩的なところで言えば「認可」と「認可判断」の違いを解説します。自分は混合して認識しており、書籍を読んで区別したとき理解の甘さを実感しました。 IAM(Identity and Access Management)は、AM、IGA、IDM に区別され、普段の業務で認可周りの作業に名前がついてたり名前をつけられることがわかりました。 最も参考になったのは、RFC で定義されている OAuth の仕様を逐一、逐一 RFC 番号と一緒に解説してくれることです。それぞれの用語が登場するたびに RFC の番号とリンクを記述してあるため、書籍だけでなく原本を読むことでさらに理解を深められました。OAuth や OIDC の言葉の定義を RFC まで読み込んでいる人は少ない印象です。自分もその一人だったため自戒のため、RFC が記述されているときは RFC も見るようになりました。
2 つ目は OAuth・OIDC のシーケンス図がわかりやすかったことです。 OAuth・OIDC はパラメータが多く混雑しがちです。 この本はさまざまな解説の中でも特に完結でわかりやすかったため、人に説明する際には参考にしようと思えました。 また、攻撃パターンのタイミングについて触れられているのもよかったです。 しかし、攻撃から守るためのパラメータを整理していないため、ちょっとわかりづらかったです。 これに関しては、Auth 屋さんの「OAuth・OIDC への攻撃と対策を整理して理解できる本(リダイレクトへの攻撃編)」がわかりやすく整理されているので推奨します。
3 つ目は、チュートリアルの完成度が非常に高いことです。 OAuth のチュートリアルは Auth 屋さんの書籍と「OAuth 徹底入門」で実践したことがありました。 たしかに、OAuth のフローを学ぶには、それらで十分でした。特に、「OAuth 徹底入門」のチュートリアルは OAuth の内部実装まで学ぶことができます。 しかし、それらはあくまで OAuth のフローのチュートリアルとし十分なだけで、OAuth・OIDC を実導入するときに考えることからは解離している印象です。 本書籍では、ユーザーの登録、ロールの設定、クライアントシークレット、シークレット ID の生成など、OAuth を導入するときに認識すべきことを GUI の操作によって、体感できます。 Keycloak 以外の認可基盤を使用するときにも、これらのフローは役に立つので、勉強用に最適だと思いました。
気になった点
気になった点は 1 つだけあります。
OAuth・OIDC の知識が皆無の人には向かない印象を持ったことです。 OAuth・OIDC のフローはたしかにわかりやすかったのですが、細かいところを理解したり具体的なリクエスト・レスポンスを学ぶには、もっと詳細な解説が必要に思えました。 Keycloak 専用の単語もあるので、書籍でも明示されていますが「OAuth 用語」「Keycloak 用語」を切り分けて読み進める必要性を感じました。 当初の目的の「Keycloak を用いた、実践的な OAuth(OIDC)のユースケースを学ぶ」も、途中から Keycloak 専用の概念になってくるため、達成できませんでした。 Keycloak を本番利用する or 本番利用しているといった動機がないと最後まで読むのは難しいと思いました。
以上を踏まえると、OAuth 初心者には Auth 屋さんの書籍を推奨しています。 Auth 屋さんの書籍で一通り学んだら、ローカルで動作する完成度の高いチュートリアルを学べる、この本を読むといいと考えました。 より深い内部実装を知りたければ「OAuth 徹底入門」のチュートリアルをおすすめします。
OAuth・OIDC・SAML で勉強すること
OAuth・OIDC・SAML 関連について勉強することは現状特に決めていません。 セキュリティ関連でいえば、「徳丸実務知識試験」を受験するために徳丸本を読み直そうとしています。