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

OCI IAM Identity Domains OpenID Connect認証連携設定(基本編)/Identity Domain OpenID Connect(Basic)

OCI IAM Identity Domains OpenID Connect認証連携設定(基本編)/Identity Domain OpenID Connect(Basic)

OCI IAM Identity DomainとOpenID Connect対応アプリケーションにてOpenID Connectによる認証連携を行うための設定手順(Basic編)になります。

oracle4engineer
PRO

June 05, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. OCI IAM Identity Domains
    OpenID Connectによる連携設定手順(Basic編)
    2022年12月12日
    日本オラクル株式会社

    View Slide

  2. Safe harbor statement
    以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、
    情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以
    下の事項は、マテリアルやコード、機能を提供することを確約するものではないため、購買
    決定を行う際の判断材料になさらないで下さい。
    オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊
    社の裁量により決定され、変更される可能性があります。
    Copyright © 2022, Oracle and/or its affiliates
    2

    View Slide

  3. はじめに
    本手順書により実現する構成イメージ
    Copyright © 2022, Oracle and/or its affiliates
    3
    本手順書は下記構成を実現するためのOCI IAM Identity DomainでのOpenID Connect(認可コードフロー)による連携設定手順書
    になります。
    ※対象のアプリケーション(OpenID Connect対応)は構築済みとの前提となります。
    ※対象アプリケーションとIdentity Domainにはユーザーが登録されている前提となります。
    OCI IAM
    Identity Domain
    OP OpenID Connect
    (認可コードフロー)による連携
    RP OpenID Connect対応
    アプリケーション
    利用者
    アプリケーションへアクセスすると
    Identity Domainへリダイレクト
    認証
    OP:OpenID Provider OP:Relying Party

    View Slide

  4. アジェンダ
    Copyright © 2022, Oracle and/or its affiliates
    4
    1. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    2. OpenID Connectのフロー(概要)と利用するREST API概要

    View Slide

  5. 1. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    5

    View Slide

  6. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    6
    1)OCIコンソール(https://www.oracle.com/jp/cloud/sign-in.html)にアクセスします。
    テナント名(クラウド・アカウント名)を入力し「Next」を選択します。
    アイデンティティ・ドメインの選択画面が表示される場合には、対象ドメイン(今回は「PoC_IdentityDomain01」)を選択し、
    管理者のユーザー名/パスワードを入力しOCIコンソールにログインします。
    ※ドメイン選択画面が表示されない環境はDefaultドメインのみ存在する環境になり、自動的に“Defaultドメイン”にログインすることになります。
    ※環境によりドメイン選択画面は表示されません。

    View Slide

  7. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    7
    2) OCIコンソールにログインした後、画面右上のアバターマークより
    「アイデンティティ・ドメイン:{アイデンティティ・ドメイン名} 」を選択します。

    View Slide

  8. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    8
    3)アイデンティティ・ドメイン詳細画面にて、ドメインURLをコピーして控えておきます。
    ※このURLは後続の手順で利用します。

    View Slide

  9. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    9
    4)アイデンティティ・ドメインの左側メニューより「アプリケーション」を選択し、「アプリケーションの追加」を選択します。
    アプリケーションの追加画面にて「機密アプリケーション」を選択し、「ワークフローの起動」を選択します。

    View Slide

  10. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    10
    5)名前、説明に適当な値を指定し、「次」を選択します。

    View Slide

  11. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    11
    6)クライアント構成部分にて「このアプリケーションをクライアントとして今すぐ構成します」をチェックONにします。
    認可部分の権限付与タイプにて「認可コード」をチェックONにします。

    View Slide

  12. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    12
    7)同じ画面にて「HTTPSのURLを許可」をチェックONにします。
    「リダイレクトURL」に認証後にリダイレクトするアプリケーションのURLを指定します。
    画面下部の「次」を選択します。
    ※必要に応じてログアウトURLやログアウト後のリダイレクトURLも指定します。

    View Slide

  13. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    13
    8) Web層ポリシー部分にて「スキップして後で実行」をチェックONにし、「終了」を選択します。

    View Slide

  14. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    14
    9)登録したアプリケーション詳細画面にて「アクティブ化」を選択します。
    アクティブ化確認画面にて「アプリケーションのアクティブ化」を選択します。

    View Slide

  15. OpenID Connect連携に必要なOCI IAM Identity Domain側での設定
    ~機密アプリケーションの作成~
    Copyright © 2022, Oracle and/or its affiliates
    15
    10)登録したアプリケーションがアクティブ化されたことを確認します。
    画面をスクロールダウンし、Oauth構成の一般情報にある「クライアントID」と「クライアント・シークレット」を控えておきます。
    ※この「クライアントID」と「クライアント・シークレット」は後続のREST APIを利用時に使用します。

    View Slide

  16. 2. OpenID Connectのフロー(概要)と利用するREST API概要
    Copyright © 2022, Oracle and/or its affiliates
    16

    View Slide

  17. Copyright © 2022, Oracle and/or its affiliates
    OpenID Connectアプリケーションアクセス時のフロー(概要)
    17
    ユーザー ブラウザ Identity Domain
    アプリケーション
    (OIDC対応)
    アプリケーションアクセス
    認可コード要求
    Identity Domainへリダイレクト https://{IdentityDomain URL}/authorize?・・・・
    認証要求
    Identity Domainログイン画面
    ID/パスワード指定
    サインイン押下 認証
    認可コード発行
    アプリケーションへリダイレクト https://{アプリURL}?code=・・・・
    認可コード取得
    IDトークン要求
    POST /oauth2/v1/token
    IDトークン/アクセス・トークン発行
    IDトークン検証
    ユーザー情報要求
    GET /oauth2/v1/userinfo
    ユーザー情報提供
    ログイン処理
    アプリケーション画面(ログイン後画面)
    必要に応じて
    概要2.
    概要3.
    概要4.
    概要5.
    OpenID Connect構成情報取得
    GET /.well-known/openid-configuration
    概要1.
    OpenID Connect構成情報送付
    必要に応じて

    View Slide

  18. Copyright © 2022, Oracle and/or its affiliates
    利用するREST APIの概要説明 – 概要1.
    18
    【メソッド】
    GET
    【エンドポイント】
    https://{上記1で控えたIdentity DomainのURL}/.well-known/openid-configuration
    ・Identity DomainのOpenID Connectの各種エンドポイント等の構成情報を取得する場合には下記REAT APIを利用します。
    ユーザー ブラウザ Identity Domain
    アプリケーション
    (OIDC対応)
    OpenID Connect構成情報取得
    GET /.well-known/openid-configuration
    概要1.
    OpenID Connect構成情報送付
    必要に応じて
    ⇒レスポンス
    {
    "issuer": "https://identity.oraclecloud.com/",
    "authorization_endpoint": "https://{上記1で控えたIdentity DomainのURL}/oauth2/v1/authorize",
    "token_endpoint": "https://{上記1で控えたIdentity DomainのURL}/oauth2/v1/token",
    "userinfo_endpoint": "https://{上記1で控えたIdentity DomainのURL}/oauth2/v1/userinfo",
    ・・・・・・・・・・・・・・
    (参考ドキュメント)
    https://docs.oracle.com/cd/E83857_01/paas/identity-cloud/rest-api/op-well-known-openid-configuration-get.html

    View Slide

  19. Copyright © 2022, Oracle and/or its affiliates
    利用するREST APIの概要説明 – 概要2.
    19
    ユーザー ブラウザ Identity Domain
    アプリケーション
    (OIDC対応)
    アプリケーションアクセス
    認可コード要求
    Identity Domainへリダイレクト https://{IdentityDomain URL}/authorize?・・・・
    概要2.
    https://{上記1で控えたIdentity DomainのURL}/oauth2/v1/authorize?
    client_id={上記1で作成した機密アプリケーションのクライアントID}
    &redirect_uri={上記1で作成した機密アプリケーションに指定したリダイレクトURL}
    &response_type=code
    &scope=openid
    ・アプリケーションからの認可コード要求は下記URLをコールします。
    (例)
    https://idcs-d4XXXX0e5.identity.oraclecloud.com/oauth2/v1/authorize?client_id=f65XXXXX872&redirect_uri=http%3A%2F%2Flocalhost%3A3001&response_type=code&scope=openid
    (注意事項)
    スコープには必ず”openid"を含めるようにします。
    Email情報や電話番号情報も取得したい場合には「scope=openid+email+phone」と指定します。
    (参考ドキュメント)
    https://docs.oracle.com/cd/E83857_01/paas/identity-cloud/rest-api/openidconnectauthcode.html

    View Slide

  20. Copyright © 2022, Oracle and/or its affiliates
    利用するREST APIの概要説明 – 概要3.
    20
    https://{上記1で作成した機密アプリケーションに指定したリダイレクトURL}?code={発行された認可コード}
    ・Identity Domainでの認証が完了すると、下記のように認可コードが付与された状態で機密アプリケーションに指定した
    リダイレクトURLに遷移します。
    リダイレクト先アプリケーションにて、後続のIDトークン/アクセストークン要求のためこの認可コード(code値)を取得します。
    ユーザー ブラウザ Identity Domain
    アプリケーション
    (OIDC対応)
    (参考ドキュメント)
    https://docs.oracle.com/cd/E83857_01/paas/identity-cloud/rest-api/openidconnectauthcode.html
    認可コード発行
    アプリケーションへリダイレクト https://{アプリURL}?code=・・・・
    認可コード取得
    概要3.
    (例)
    https://XXXXXXX:3001?code=AgAgMjNiMDQ・・・・・・・・・・・・・・・T6h2NV1_C5s=

    View Slide

  21. Copyright © 2022, Oracle and/or its affiliates
    利用するREST APIの概要説明 – 概要4.
    21
    【メソッド】
    POST
    【エンドポイント】
    https://{上記1で控えたIdentity DomainのURL}/oauth2/v1/token
    【Header】
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic {上記1にて作成した機密アプリのクライアントID:クライアントシークレットのBase64エンコード値(※1)}
    【Body】
    grant_type=authorization_code&code={上記の詳細3で取得した認可コード(code値)}
    ・アプリケーションより、概要3で取得した認可コードをもとにIDトークン/アクセストークンを要求するため下記のREST APIをコールし、
    レスポンスよりIDトークン(id_token)やアクセス・トークン(access_token)を取得します。
    ユーザー ブラウザ Identity Domain
    アプリケーション
    (OIDC対応)
    IDトークン要求
    POST /oauth2/v1/token
    IDトークン/アクセス・トークン発行
    IDトークン検証
    概要4.
    ※1 機密アプリのクライアントID:クライアントシークレットのBase64エンコードの方法については後続ページ参照
    ⇒レスポンス
    {
    "access_token": "eyJr............Ao8A",
    "token_type": "Bearer",
    "id_token": "eyJr............vMZQ",
    "expires_in": 3600
    }
    (参考ドキュメント)
    https://docs.oracle.com/cd/E83857_01/paas/identity-cloud/rest-api/openidconnectauthcode.html

    View Slide

  22. Copyright © 2022, Oracle and/or its affiliates
    利用するREST APIの概要説明 – 概要4. (補足)
    22
    IDトークン/アクセストークン取得時に指定する{機密アプリのクライアントID:クライアントシークレットのBase64エンコード値}の生成方法
    2) ローカルPC上でコマンドプロンプトを開き、下記コマンドを実行しクライアントID:クライアント・シークレットのBase64でのエンコードを行います。
    certutil -encode {上記にて作成したテキストファイル名} {Base64エンコード後のファイル名}
    3) Base64エンコードしたファイルを開き値を取得します。
    途中に改行がある場合には改行を削除します。
    1) テキストエディタにて、上記1にて控えた機密アプリケーションの「クライアントID」と「クライアント・シークレット」をコロンで繋いだ形式で保存します。
    ※最後に改行をしないようにします。

    View Slide

  23. Copyright © 2022, Oracle and/or its affiliates
    利用するREST APIの概要説明 – 概要5.
    23
    【メソッド】
    GET
    【エンドポイント】
    https://{上記1で控えたIdentity DomainのURL} /oauth2/v1/userinfo
    【Header】
    Content-Type: application/x-www-form-urlencoded
    Authorization: Bearer {上記4にて取得したアクセス・トークン(access_token)}
    ・アプリケーションより、ログインユーザーの情報を取得するため、概要4で取得したアクセス・トークンを用いて下記のREST APIをコールします。
    ユーザー ブラウザ Identity Domain
    アプリケーション
    (OIDC対応)
    ⇒レスポンス
    {
    "birthdate": "",
    "family_name": "test",
    "gender": "",
    "given_name": "user001",
    "name": "user001 test",
    "preferred_username": "test001",
    "sub": "test001",
    "updated_at": 1670827316,
    "website": ""
    }
    (参考ドキュメント)
    https://docs.oracle.com/cd/E83857_01/paas/identity-cloud/rest-api/openidconnectauthcode.html
    ユーザー情報要求
    GET /oauth2/v1/userinfo
    ユーザー情報提供
    必要に応じて
    概要5.

    View Slide

  24. View Slide