ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Rocket.Chatとシングル・サインオンのアイデンティティ・ドメインの統合
イントロダクション
Rocket.Chatは、高度なセキュリティおよびプライバシに関する懸念を持つ組織向けの、安全で高度にカスタマイズ可能なオープンソース通信プラットフォームです。Rocket.Chatは、ユーザー・データおよび会話を完全に制御します。このプラットフォームは、ネイティブ・アプリケーション、サードパーティ・アプリケーションとのシームレスな統合、クロスチャネル・コラボレーション、Security Assertion Markup Language (SAML)ベースのシングル・サインオン(SSO)および構成制御をAPIを使用してサポートします。
Oracle Cloud Infrastructure Identity and Access Management(OCI IAM)は、ユーザーおよびロールの管理、ユーザーのフェデレートおよびプロビジョニング、Oracle SSO構成を介したセキュアなアプリケーション統合、およびSAML/OAuthベースのアイデンティティ・プロバイダ(IdP)管理のためのコンテナです。
このチュートリアルでは、Rocket.Chatのインストールを自動化し、OCI IAMをSSO用のIdPとして統合します。
目的
-
Terraformベースのスタックを使用して、次のリソースを作成します。
- キーストアおよびハードウェア・セキュリティ・モジュール(HSM)で保護されたキー。
- 証明書と認証局(CA)。
- Rocket.ChatをホストするOCIコンピュート・インスタンス。
- Rocket.Chatに安全にアクセスするためのOCI Load Balancer。
-
コンピュート・インスタンスにRocket.Chatを自動デプロイし、その上に作成されたロード・バランサを追加します。
-
Rocket.Chatを設定し、OCI IAM用のSAMLベースのIdPを作成します。
-
OCI IAMとRocket.Chat間のSSOフローをテストすること。
前提条件
-
アクティブなOCIサブスクリプション。
-
アイデンティティ・ドメインとその管理者アカウント。
-
OCI IAMおよびTerraformをよく理解します。
-
既存のVCNおよびパブリック・サブネット。
-
次のポートがイングレス・トラフィック用に開いているセキュリティ・リスト。
タイプ ソース・ポート ソースCIDR 接続先ポート プロトコル 説明 イングレス すべて 0.0.0.0/0 22 TCP SSH イングレス すべて 0.0.0.0/0 3000 TCP Rocket.Chatサーバー用 イングレス すべて 0.0.0.0/0 443 TCP 標準HTTPSポート イングレス すべて 0.0.0.0/0 80 TCP ポートのTCPトラフィック: 80
タスク1: 自動Terraformスタックを使用したRocket.ChatのインストールおよびSAMLアプリケーションの作成のためのスタックのデプロイ
Rocket.Chatは、様々なメソッドを使用してデプロイできます。このチュートリアルでは、DockerおよびDocker Composeでデプロイ・オプションを使用しました。詳細は、「Rocket.Chatのデプロイ」を参照してください。
Rocket.Chatのインストールを容易にするために、Terraform自動化スタックが作成されました。このスタックは次のことを行います。
- VM.Standard.E2.1シェイプのホストLinuxボックスを作成します。
- Rocket.Chatをインストールします。
- インターネットを介したキーストア、HSM保護キー、認証局およびSecure Sockets Layer (SSL)通信用の証明書を作成します。
- ロード・バランサをデプロイし、SSLを介してRocket.Chatにアクセスするように構成します。
- 既存のアイデンティティ・ドメインの下にSAMLアプリケーションを作成します。
ノート:リンクされたスタックを実行する前に、作成するリソースのサービス制限を確認してください。詳細は、アイデンティティ・ドメインのあるIAMの制限を参照してください。
-
Full_Stack_Rocket.Chat.zipからRocket.Chatフル・スタックをダウンロードします。
Rocket.Chatフル・スタックのzipファイルがダウンロードされたら、ファイルを解凍し、
-rchat.pem
ファイルの内容を秘密キーのそれぞれの内容に置き換えます。ノート: OCIコンソールからOCI Resource Managerを使用してスタックをデプロイし、障害を回避します。
-
管理ユーザーとしてOCIコンソールにログインし、「開発者サービス」に移動し、「リソース・マネージャ」で「スタック」をクリックします。
-
コンパートメントを選択し、「スタックの作成」をクリックします。「スタック構成」セクションで、ステップ1でダウンロードしたスタックzipファイルを選択してスタックをデプロイし、「次へ」をクリックします。
-
「変数の構成」ページで、コンピュート・インスタンスおよびその他のリソースの作成に必要な詳細を入力し、「次へ」をクリックします。
ノート:コンピュート・インスタンスとロード・バランサを作成するには、パブリック接続を持つ既存のVCNが必要です。
-
「確認」ページで、表示された詳細を確認し、「作成」をクリックします。
-
「スタックの詳細」ページで、「プラン」をクリックします。「成功」出力が表示されます。
-
「スタックの詳細」ページで、「適用」をクリックします。「成功」出力が表示されます。
-
スタックが正常に実行された後、Rocket.Chatをホストしているコンピュート・インスタンスにアタッチされたロード・バランサと、IAMドメイン内のSAMLアプリケーションを見つけることができます。
ノート:スタックの実行には約40分かかる場合があります。ジョブが成功するまで待ちます。
タスク2: Rocket.Chat管理アカウントの設定
このタスクでは、ローカル・システムのhostsファイルを更新し、デプロイされたリソースを検証します。
Windowsの場合: C:\Windows\System32\Drivers\etc\hosts
。
Linuxの場合: /etc/hosts
Public IP Address of Load Balancer your-domain-name.com
https://your-domain-name.com:443
のRocket.Chatにアクセスすると、設定ページにリダイレクトされます。
ノート:管理パスワードは保護したままにしておきます。Rocket.ChatでSAML IdPを作成する際に必要です。
タスク3: シングル・サインオン用のRocket.ChatでのSAML IdPの作成
-
Rocket.Chatインスタンスにログインし、「ワークスペース」および「設定」に移動します。
-
「設定」ウィンドウで、SAMLと入力し、「開く」をクリックします。
-
「接続」ページで、「有効化」を選択します。次の詳細を入力し、「変更の保存」をクリックします。管理パスワードの入力を求められた場合は、パスワードを入力します。
-
カスタム・プロバイダ:
idcs
と入力します。 -
カスタム・エントリ・ポイントの更新:カスタム・エントリ・ポイントを入力します。たとえば、
https://idcs-xxxx.identity.oraclecloud.com/fed/v1/idp/sso
。 -
IDP SLOリダイレクトURL: IdP SLOリダイレクトURLを入力します。たとえば、
https://idcs-xxxx.identity.oraclecloud.com/fed/v1/idp/slo
。 -
カスタム発行者:カスタム発行者を入力します。たとえば、
https://your-domain-name.com/_saml/metadata/idcs
です。 -
カスタム証明書:スタックを使用して作成されたSAMLアプリケーションから署名証明書をダウンロードし、コンテンツをコピーします。
ノート: BEGIN CERTIFICATEおよびEND CERTIFICATE行を除外します。
-
パブリック証明書の内容:証明書の内容全体をコピーします。
-
署名検証タイプ: 「アサーション署名の検証」を選択します。
ノート:同じカスタム・プロバイダの静的値を使用してください。そうしないと、タスク1で作成したSAMLアプリケーションでSSOが参照され、SSOが失敗する可能性があります。
-
-
「一般」ページの「ユーザー・インタフェース」セクションで、変更する必要がある場合は、「ボタン・テキスト」およびその他の詳細を更新し、「変更の保存」をクリックします。
タスク4: OCI IAMを使用したRocket.ChatのSSOのテスト
-
ブラウザを開き、Rocket.Chat
https://demo.rocketchat.com:443
のURLを入力します。 -
OCI IAMアイデンティティ・ドメインのサインイン・ページが表示されます。前に作成したユーザーの「ユーザー名」および「パスワード」を使用します。
-
認証に成功すると、ユーザーはRocket.Chatホームページにリダイレクトされます。
ノート: OCI IAMとRocket.Chatの両方に、同じ電子メール・アドレスを持つ共通ユーザーが作成されている必要があります。
OCI IAMを使用したRocket.Chat SSOの一般的なトラブルシューティング・シナリオ
-
「ドメイン」、ドメイン、「設定」および「セッション設定」で、「クロスオリジン・リソース共有(CORS)の許可」が有効になっていることを確認します。
-
Rocket.Chatインスタンスのロードに時間がかかる場合は、インスタンスにSSHで接続し、次のコマンドでDocker作成を再起動できます。
docker compose down docker compose up -d
関連リンク
承認
- 著者 - Chetan Soni (クラウド・ソリューション・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Integrate Rocket.Chat with Identity Domains for Single Sign-On
G12058-03
August 2024