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

OpenID Connectによるサービス間連携

OpenID Connectによるサービス間連携

JJUG CCC 2026 Springの再演 + α

Avatar for Shigeki Shoji

Shigeki Shoji

June 25, 2026

More Decks by Shigeki Shoji

Other Decks in Technology

Transcript

  1. 4

  2. 最小権限の原則 (1975年~) "Every program and every user of the system

    should operate using the least set of privileges necessary to complete the job." システムのすべてのプログラムおよびすべてのユーザーは、業務 を完了するために必要な、最小限の権限のセットを使用して動作 する必要がある。 引用: https://www.cs.cornell.edu/fbs/publications/leastPrivNeedham.pdf 6
  3. OpenID Connect (OIDC) • OIDCは認証 認可リクエスト:アプリケーション (Client) が許可してほしい アクセスの内容 (openid、email、profile

    等) を scope に指定 して取得 • openid が scope にある場合、id_token (JWT) を受け取ること ができる • id_tokenはあくまでも身元を証明するための「身分証明書」。 アクセス制御のための「通行許可証」として設計されていない 16
  4. CI/CDで使用するOIDC • CI/CDパイプライン上のトークン • GitHub Actions • GitHub APIでid_tokenの取得が可能 •

    GitLab CI/CD • 指定したAudience値でid_tokenを生成し環境変数に設定する • id_tokenを使用してリソースにアクセス • AWSやAzureの場合、IAMロールやEntra IDを通じてアクセス 20
  5. id_token (JWT) • ヘッダ、ペイロード、署名で構成 • 各パートは、. (ドット) で区切られる • ヘッダ、ペイロードは、JSONをBase64エンコードした文字列

    • 署名は、ヘッダで指定されたアルゴリズム (alg) で署名し、そ れをBase64エンコードした文字列 22
  6. プロバイダ別のエンドポイント • Amazon Cognito Userpools 26 エンドポイント 認可エンドポイント https://[ドメインプレフィックス].auth.[リージョ ン].amazoncognito.com/oauth2/authorize

    トークンエンドポイント https://[ドメインプレフィックス].auth.[リージョ ン].amazoncognito.com/oauth2/token 公開鍵取得エンドポイント https://cognito-idp.[リージョン].amazonaws.com/[ドメインプレ フィックス]/.well-known/jwks.json
  7. プロバイダ別のエンドポイント • Microsoft Entra ID (common) 28 エンドポイント 認可エンドポイント https://login.microsoftonline.com/common/oauth2/v2.0/authorize

    トークンエンドポイント https://login.microsoftonline.com/common/oauth2/v2.0/token 公開鍵取得エンドポイント https://login.microsoftonline.com/common/discovery/v2.0/keys
  8. 署名検証に使用するキー情報 公開鍵取得エンドポイントから取得可能 30 キー 説明 kid 鍵の識別子 alg 署名アルゴリズム(RSA SHA-256

    の場合は RS256) use デジタル署名の検証の場合は “sig” n RSA公開鍵を構成する数学的なパラメータ(モジュラス) e RSA公開鍵を構成する数学的なパラメータ(指数)
  9. 公開鍵の復元 RS256の場合の公開鍵を復元するサンプルコード public RSAPublicKey publicKey(String n, String e) throws NoSuchAlgorithmException,

    InvalidKeySpecException { BigInteger modulus = new BigInteger(1, Base64.getUrlDecoder().decode(n)); BigInteger publicExponent = new BigInteger(1, Base64.getUrlDecoder().decode(e)); RSAPublicKeySpec spec = new RSAPublicKeySpec(modulus, publicExponent); return (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(spec); } 32
  10. フロー概要 1. 認可エンドポイントを response_type=code で遷移 2. 認証プロセスが完了すると、code パラメータと共に redirect_uri に指定したURLにリダイレクト

    3. codeパラメータの値を使用して、トークンエンドポイントを 呼び出し、トークン(id_token、アクセストークン、リフ レッシュトークン)を取得 4. id_token の検証は、復元した公開鍵が使用可能 33
  11. e-Learningに関連する標準規格 • SCORM 米国の国防総省に属するAdvanced Distributed Learning Initiative(ADL Initiative)が制定したeラーニングのプラット フォームとコンテンツの標準規格 •

    LTI 国際的な非営利の標準化団体 1EdTech Consortium が策定した 標準 • xAPI あらゆる学習や経験のデータを記録・収集するための次世代e ラーニング技術標準規格 36
  12. 主体的アイデンティティとの紐付け • id_token は、iss と sub でユニークに識別可能。自組織のアイ デンティティと、両者を紐付ける • 自組織のアイデンティティに必要な属性を付加

    • アプリケーションは、オパークトークンを活用する • 独自のオパークトークンから属性を取得する方法とJWTにカス タム属性として付加する方法がある • 実装方法は扱うサービス間の結合度あるいは制御可能性による 46
  13. 参考文献 • 崎村夏彦著 (2021) デジタルアイデンティティー. 日経BP • 土岐孝平著 (2026) OpenID

    Connect入門. 技術評論社 • Phillip J. Windley (2024) デジタルアイデンティティのすべて. オライリー・ジャパン • Rob Koper, Colin Tattersall (2005) Learning design : a handbook on modelling and delivering networked education and training. Springer • Vlad Khononov (2025) ソフトウェア設計の結合バランス. イン プレス 48