Upgrade to Pro — share decks privately, control downloads, hide ads and more …

実践 KeycloakとAdvancedな機能の紹介

Hiroyuki Wada
October 14, 2022

実践 KeycloakとAdvancedな機能の紹介

OSSセキュリティ技術の会 第11回勉強会での発表資料です。

Hiroyuki Wada

October 14, 2022
Tweet

More Decks by Hiroyuki Wada

Other Decks in Technology

Transcript

  1. 1. Webアプリケーションが従来型 or SPA? 2. SPAなら、呼び出すREST APIが同一 or 外部ドメイン? 3.

    外部ドメインのREST APIを呼ぶなら、仲介APIを経由 or 直接通信? どのアーキテクチャに合致するかを判断する 1. サーバーサイドWebアプリケーション 2. 専用REST APIを使用するSPA 3. 仲介REST APIを使用するSPA 4. 外部REST APIを使用するSPA Webアプリケーションのアーキテクチャを考慮してセ キュリティー保護のアプローチを決定する
  2. 1. サーバーサイドWebアプリケーション • ベーシックなパターン • Webアプリケーションはコンフィデン シャルクライアントとなる • OIDCではなくSAMLを使用することも 可能

    • OIDCであれば、アクセストークンを 利用してユーザーの認証コンテキス トでWebアプリケーションから外部の REST APIを呼び出すことも可能 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ )
  3. 2. 専用REST APIを使用するSPAのセキュリティー保護 • SPAが同じドメイン上の専用のREST APIを使用するパターン • 専用REST APIはコンフィデンシャル クライアントとなる

    • SPAと専用REST API間の呼び出しに はセッションCookieを利用 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ )
  4. 3. 仲介REST APIを使用するSPAのセキュリティー保護 • SPAから外部(別ドメイン)のREST APIを、仲介REST APIを経由して呼 び出すパターン (いわゆる、BFFパターン) •

    仲介REST APIはコンフィデンシャル クライアントとなる • SPAと仲介REST API間の呼び出しに はセッションCookieを利用 • 仲介REST APIと外部REST API間の 呼び出しにはアクセストークンを利 用 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ )
  5. 4. 外部REST APIを使用するSPAのセキュリティー保護 • SPAから外部(別ドメイン)のREST APIを直接出すパターン • SPAはパブリッククライアントとなる • リフレッシュトークン/アクセストーク

    ンがブラウザーに渡るため安全性が低 い • リフレッシュトークンローテーション などのテクニックで安全性を確保 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ ) 書籍では12章で解説
  6. • SPAからアクセストークンを直接使いREST API呼び出す方がアプリケーション 全体としてはシンプルになる (=保守コスト削減) ◦ 外部REST APIを呼び出すためだけの仲介サービスは不要 ◦ セッションCookieを使うことで気にしないといけない点を考えなくてよい

    • 一方で、トークン漏洩によるセキュリティーリスクはある ◦ トークン格納先論争 (In-Memory vs Local/SessionStroage vs WebWorker) があるが、いずれにせよXSSに対しては漏洩の危険性がある • 結局のところ、どれを採用するかはセキュリティーと利便性やコストとのトレード オフを考慮した上で、決定する必要あり どのアプローチにするか FAPI 1.0 Part2 だと パブリッククライアントは禁止
  7. • 「実践 Keycloak」のみどころの1つとして、6章より「Webアプリケーション のセキュリティー保護」を紹介 ◦ OIDC/OAuth2のよくある解説では余り触れられていない、 Webアプリケーションの アーキテクチャを考慮した方式について紹介 ◦ 書籍では他にも、ネイティブ/モバイルアプリやREST

    APIのセキュリティー保護につ いても説明しています • WebAuthnを利用した「IDレス認証」の方法、今後の普及 が期待されるConditional UIなどについてデモを交えて紹介 ※デモで利用したカスタム Authenticatorの実装例は以下のGitHubで公開しています  https://github.com/wadahiro/keycloak-webauthn-conditional-ui まとめ