重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
このチュートリアルでは、オンプレミスアプリケーションの保護に役立つ Strata Maverics Identity Orchestrator と Azure Active Directory B2C (Azure AD B2C) を統合する方法について説明します。 ID システムに接続し、ユーザーと資格情報を移行し、ポリシーと構成を同期し、認証とセッション管理を抽象化します。 Strata を使用して、アプリケーションを書き換えることなく、レガシから Azure AD B2C に移行します。
このソリューションには次の利点があります。
-
オンプレミスハイブリッド アプリへの顧客シングル サインオン (SSO) - Azure AD B2C では、Maverics Identity Orchestrator に対する顧客 SSO がサポートされます
- ユーザーは、Azure AD B2C または ID プロバイダー (IdP) でホストされているアカウントでサインインします
- Maverics は、従来、Symantec SiteMinder などのレガシ ID システムによってセキュリティ保護されたアプリへの SSO を証明します
- 標準 SSO をアプリに拡張する - Azure AD B2C を使用してユーザー アクセスを管理し、Maverics Identity Orchestrator Security Assertion Markup Language (SAML) または OpenID Connect (OIDC) コネクタで SSO を有効にする
- 簡単な構成 - Maverics Identity Orchestrator SAML または OIDC コネクタを Azure AD B2C に接続する
[前提条件]
作業を開始するには、以下が必要です。
Azure サブスクリプション
- お持ちでない場合は、Azure 無料アカウントを取得できます
- Azure サブスクリプションにリンクされた Azure AD B2C テナント
- Maverics Identity Orchestrator によって使用されるシークレットを格納するための Azure Key Vault のインスタンス。 Azure AD B2C またはライトウェイト ディレクトリ アクセス プロトコル (LDAP) ディレクトリやデータベースなどの他の属性プロバイダーに接続します。
- Azure 仮想マシン (VM) またはオンプレミス サーバーで実行されている Maverics Identity Orchestrator のインスタンス。 ソフトウェアとドキュメントを入手するには、「 Strata.io Strata Identity に問い合わせる」を参照してください。
- Azure AD B2C に移行するオンプレミス アプリケーション
シナリオの説明
Maverics Identity Orchestrator の統合には、次のコンポーネントが含まれています。
-
Azure AD B2C - ユーザー資格情報を検証する承認サーバー
- 認証されたユーザーは、Azure AD B2C ディレクトリ内のローカル アカウントを使用してオンプレミス アプリにアクセスします
-
外部ソーシャルまたはエンタープライズ ID プロバイダー (IdP):OIDC プロバイダー、Facebook、Google、または GitHub
- Azure Active Directory B2C テナントへの ID プロバイダーの追加に関するページを参照してください
- Strata Maverics Identity Orchestrator: HTTP ヘッダーを介してアプリに ID を渡すユーザー サインオン サービス
次のアーキテクチャ図は、実装を示しています。
- ユーザーは、オンプレミスでホストされているアプリケーションへのアクセスを要求します。 Maverics Identity Orchestrator は、アプリケーションに要求をプロキシします。
- オーケストレーターは、ユーザー認証の状態を確認します。 セッション トークンがない場合、またはトークンが無効な場合、ユーザーは認証のために Azure AD B2C にアクセスします
- Azure AD B2C は、構成されたソーシャル IdP に認証要求を送信します。
- IdP はユーザーに資格情報を要求します。 多要素認証 (MFA) が必要な場合があります。
- IdP は、認証応答を Azure AD B2C に送信します。 ユーザーは、Azure AD B2C ディレクトリにローカル アカウントを作成できます。
- Azure AD B2C は、Azure AD B2C テナントでの Orchestrator アプリの登録中に指定されたエンドポイントにユーザー要求を送信します。
- Orchestrator は、アプリに転送される HTTP ヘッダーのアクセス ポリシーと属性値を評価します。 オーケストレーターは、他の属性プロバイダーを呼び出して、ヘッダー値を設定する情報を取得する場合があります。 Orchestrator は、要求をアプリに送信します。
- ユーザーは認証され、アプリにアクセスできます。
メイバリックス・アイデンティティ・オーケストレーター
ソフトウェアとドキュメントを入手するには、「 Strata.io Strata Identity に問い合わせる」を参照してください。 Orchestrator の前提条件を決定します。 インストールして構成します。
Azure AD B2C テナントを構成する
次の手順の間に、記録してください。
- テナント名と識別子
- クライアントID
- クライアント シークレット
- 構成済みの要求
- リダイレクト URI
- Azure AD B2C テナントの Azure Active Directory B2C に Web アプリケーションを登録 します。
- アプリケーションに Microsoft MS Graph API のアクセス許可を付与します。 アクセス許可を使用する:
offline_access、openid。 - Orchestrator Azure AD B2C コネクタ構成の
oauthRedirectURLパラメーターに一致するリダイレクト URI を追加します (例:https://example.com/oidc-endpoint)。 - Azure Active Directory B2C でユーザー フローとカスタム ポリシーを作成します。
- Azure Active Directory B2C テナントに ID プロバイダーを追加します。 ローカル アカウント、ソーシャル アカウント、または企業を使用してユーザーをサインインさせます。
- サインアップ時に収集する属性を定義します。
- Orchestrator インスタンスを使用してアプリケーションに返される属性を指定します。
注
Orchestrator は、Azure AD B2C によって返された要求の属性を使用し、LDAP ディレクトリやデータベースなどの接続された ID システムから属性を取得できます。 これらの属性は HTTP ヘッダー内にあり、アップストリームのオンプレミス アプリケーションに送信されます。
Maverics Identity Orchestrator の構成
Orchestrator インスタンスを構成するには、次のセクションの手順に従います。
Maverics Identity Orchestrator サーバーの要件
オンプレミスでも、Azure、AWS、GCP などのプロバイダーによるパブリック クラウド インフラストラクチャでも、任意のサーバーで Orchestrator インスタンスを実行できます。
- オペレーティング システム: RHEL 7.7 以降
- ディスク: 10 GB (小)
- メモリ: 16 GB
- ポート: 22 (SSH/SCP)、443、80
- ルート アクセス: インストール/管理タスクの場合
-
Maverics Identity Orchestrator:
mavericsの下でユーザーsystemdとして実行されます - ネットワーク エグレス: Microsoft Entra テナントに到達できる Maverics Identity Orchestrator をホストしているサーバーから
Maverics Identity Orchestrator のインストール
最新の Maverics RPM パッケージを入手します。
Maverics をインストールするシステムにパッケージを配置します。 リモート ホストにコピーする場合は、SSH scp を使用します。
次のコマンドを実行します。 実際のファイル名を使って
maverics.rpmを置き換えます。sudo rpm -Uvf maverics.rpm既定では、Maverics は
/usr/local/binディレクトリにあります。Maverics は、
systemdでサービスとして実行されます。Maverics サービスが実行されていることを確認するには、次のコマンドを実行します。
sudo service maverics status次のようなメッセージが表示されます。
Redirecting to /bin/systemctl status maverics.service
maverics.service - Maverics
Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
Main PID: 330772 (maverics)
Tasks: 5 (limit: 11389)
Memory: 14.0M
CGroup: /system.slice/maverics.service
└─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml
注
Maverics の起動に失敗した場合は、次のコマンドを実行します。
journalctl --unit=maverics.service --reverse
最新のログ エントリが出力に表示されます。
- 既定の
maverics.yamlファイルは、/etc/mavericsディレクトリに作成されます。 - アプリケーションを保護するように Orchestrator を構成します。
- Azure AD B2C と統合し、格納します。
- Azure Key Vault からシークレットを取得します。
- Orchestrator が構成を読み取る場所を定義します。
環境変数を使用して構成を指定する
環境変数を使用して Orchestrator インスタンスを構成します。
MAVERICS_CONFIG
この環境変数は、Orchestrator インスタンスに使用する YAML 構成ファイルと、起動時または再起動時に見つける場所を通知します。 環境変数を /etc/maverics/maverics.env に設定します。
Orchestrator TLS 構成を作成する
tlsの maverics.yaml フィールドは、Orchestrator インスタンスが使用するトランスポート層セキュリティ構成を宣言します。 コネクタでは、TLS オブジェクトと Orchestrator サーバーが使用されます。
maverics キーは Orchestrator サーバー用に予約されています。 他のキーを使用して、TLS オブジェクトをコネクタに挿入します。
tls:
maverics:
certFile: /etc/maverics/maverics.cert
keyFile: /etc/maverics/maverics.key
Azure AD B2C コネクタを構成する
オーケストレーターは、コネクタを使用して認証および属性プロバイダーと統合します。 Orchestrators App Gateway は、認証および属性プロバイダーとして Azure AD B2C コネクタを使用します。 Azure AD B2C はソーシャル IdP を使って認証を行い、その後、属性をオーケストレーターに提供して、HTTP ヘッダー内のクレームセットとして渡します。
コネクタの構成は、Azure AD B2C テナントに登録されているアプリに対応します。
- アプリ構成から、クライアント ID、クライアント シークレット、リダイレクト URI をテナントにコピーします。
- コネクタ名を入力します (例:
azureADB2C)。 - コネクタ
typeをazureに設定します。 - コネクタ名を書き留めます。 この値は、他の構成パラメーターで使用します。
-
authTypeをoidcに設定します。 -
oauthClientIDパラメーターには、コピーしたクライアント ID を設定します。 -
oauthClientSecretパラメーターには、コピーしたクライアント シークレットを設定します。 -
oauthRedirectURLパラメーターには、コピーしたリダイレクト URI を設定します。 - Azure AD B2C OIDC コネクタは、OIDC エンドポイントを使用して、URL や署名キーなどのメタデータを検出します。 テナント エンドポイントには、
oidcWellKnownURLを使用します。
connectors:
name: azureADB2C
type: azure
oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
oauthRedirectURL: https://example.com/oidc-endpoint
oauthClientID: <azureADB2CClientID>
oauthClientSecret: <azureADB2CClientSecret>
authType: oidc
認証プロバイダーとして Azure AD B2C を定義する
認証プロバイダーは、アプリ リソース要求中に有効なセッションを提示しないユーザーの認証を決定します。 Azure AD B2C テナント構成によって、ユーザーが資格情報に対してどのようにチャレンジされるかが決まりますが、他の認証ポリシーが適用されます。 たとえば、認証を完了し、認証後に Orchestrator App Gateway に返される内容を決定するために、2 番目の要素を要求します。
authProviderの値は、コネクタのnameの値と一致している必要があります。
authProvider: azureADB2C
Orchestrator App Gateway を使用してオンプレミス アプリを保護する
Orchestrator App Gateway 構成では、Azure AD B2C がアプリケーションを保護する方法と、ユーザーがアプリにアクセスする方法を宣言します。
- アプリ ゲートウェイ名を入力します。
-
locationを設定します。 この例では、アプリ ルート/を使用します。 -
upstreamで保護されたアプリケーションを定義します。 host:port 規則:https://example.com:8080を使用します。 - エラー ページと未承認ページの値を設定します。
- 認証と制御を確立するために、アプリケーションの HTTP ヘッダー名と属性値を定義します。 ヘッダー名は通常、アプリの構成に対応します。 属性値はコネクタによって名前空間付けされます。 この例では、Azure AD B2C から返される値の前にコネクタ名
azureADB2Cが付いています。 サフィックスは、given_nameなど、必要な値を持つ属性名です。 - ポリシーを設定します。
allowUnauthenticated、allowAnyAuthenticated、allowIfAnyの 3 つのアクションが定義されています。 各アクションは、resourceに関連付けられます。 そのresourceに対してポリシーが評価されます。
注
headers と policies は、JavaScript または GoLang のサービス拡張機能を使用して任意のロジックを実装します。
appgateways:
- name: Sonar
location: /
upstream: https://example.com:8080
errorPage: https://example.com:8080/sonar/error
unauthorizedPage: https://example.com:8080/sonar/accessdenied
headers:
SM_USER: azureADB2C.sub
firstname: azureADB2C.given_name
lastname: azureADB2C.family_name
policies:
- resource: ~ \.(jpg|png|ico|svg)
allowUnauthenticated: true
- resource: /
allowAnyAuthenticated: true
- resource: /sonar/daily_deals
allowIfAny:
azureADB2C.customAttribute: Rewards Member
シークレット プロバイダーとしての Azure Key Vault
Orchestrator が Azure AD B2C やその他の ID システムに接続するために使用するシークレットをセキュリティで保護します。 Maverics は maverics.yamlからプレーン テキストでシークレットを読み込みますが、このチュートリアルでは、シークレット プロバイダーとして Azure Key Vault を使用します。
「 クイック スタート: Azure Portal を使用して Azure Key Vault からシークレットを設定および取得する」の手順に従います。 シークレットを保管庫に追加し、各シークレットのSECRET NAME をメモします。 たとえば、AzureADB2CClientSecret のようにします。
maverics.yaml構成ファイルで値をシークレットとして宣言するには、山かっこで囲んでシークレットをラップします。
connectors:
- name: AzureADB2C
type: azure
oauthClientID: <AzureADB2CClientID>
oauthClientSecret: <AzureADB2CClientSecret>
角かっこ内の値は、Azure Key Vaultのシークレットに指定されたSECRET NAMEと一致している必要があります。
Azure Key Vault からシークレットを読み込むには、azure-credentials.json ファイル内の資格情報を使用して、ファイル MAVERICS_SECRET_PROVIDERに/etc/maverics/maverics.env環境変数を設定します。 次のパターンを使用します。
MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'
構成を完了する
次の情報は、Orchestrator の構成がどのように表示されるかを示しています。
version: 0.4.2
listenAddress: ":443"
tls:
maverics:
certFile: certs/maverics.crt
keyFile: certs/maverics.key
authProvider: azureADB2C
connectors:
- name: azureADB2C
type: azure
oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
oauthRedirectURL: https://example.com/oidc-endpoint
oauthClientID: <azureADB2CClientID>
oauthClientSecret: <azureADB2CClientSecret>
authType: oidc
appgateways:
- name: Sonar
location: /
upstream: http://example.com:8080
errorPage: http://example.com:8080/sonar/accessdenied
unauthorizedPage: http://example.com:8080/sonar/accessdenied
headers:
SM_USER: azureADB2C.sub
firstname: azureADB2C.given_name
lastname: azureADB2C.family_name
policies:
- resource: ~ \.(jpg|png|ico|svg)
allowUnauthenticated: true
- resource: /
allowAnyAuthenticated: true
- resource: /sonar/daily_deals
allowIfAny:
azureADB2C.customAttribute: Rewards Member
フローをテストする
- オンプレミスのアプリケーション URL (
https://example.com/sonar/dashboard) に移動します。 - Orchestrator は、ユーザー フロー ページにリダイレクトします。
- 一覧から IdP を選択します。
- IdP で必要な場合は、MFA トークンを含む資格情報を入力します。
- アプリ要求を Orchestrator リダイレクト URI に転送する Azure AD B2C にリダイレクトされます。
- Orchestrator はポリシーを評価し、ヘッダーを計算します。
- 要求されたアプリケーションが表示されます。