IDプロバイダーの管理
SAMLまたはOIDCシングルサインオン用のカスタムIDプロバイダー(IdP)を設定することで、組織のユーザーが既存の企業認証情報を使って認証できるようにします。
IDプロバイダーの管理は、Enterpriseプランの管理者のみが利用できます。
カスタムIDプロバイダー(IdP)を設定して、組織のシングルサインオン(SSO)を有効にします。IdPを設定すると、IDE、Bob Shell、Bob WebでIBM Bobにログインする際、Bobが認証のためにそのIdPにリダイレクトします。
BobではSAMLおよびOpenID Connect(OIDC)IDプロバイダーを設定できます。組織のIDプラットフォームに合ったプロトコルを使用してください。
SSOプロトコルの互換性
IBM Bobは以下のSSOプロトコルと互換性があります:
- SAML(Security Assertion Markup Language)
- OIDC(OpenID Connect)
検証済みOIDCプロバイダー
設定とトークンの要件を満たす他のOIDCプロバイダーも使用できますが、以下のプラットフォームは検証済みです:
- Auth0
- Keycloak
- Okta
- PingOne
IDプロバイダーの追加
IdPの追加は2ステップのプロセスです。まずIdPを設定して保存し、次にそれを使用するメールドメインを追加します。
ステップ1:IDプロバイダーの設定
IBM Bob管理ページに移動します。
Authenticationタブを選択します。
Add IdPをクリックします。 IdPの名前を入力します。 IdPの種類を選択します:SAMLまたはOIDC。 サービスプロバイダー(SP)の認証情報を生成します。
BobはSAML認証リクエストに署名するために、SPの秘密鍵とSP証明書を必要とします。これらはopensslコマンドラインツールを使用して自分で生成する必要があります。
すでにSPキーペアと証明書がある場合は、次のステップにスキップしてください。
次のコマンドを実行してSPの秘密鍵を生成します:
openssl genrsa -out sp_private_key.pem 2048次に、このコマンドを実行して秘密鍵からSP証明書を生成します。/CN、/O、/Cの値を、わかりやすい証明書名、組織名、2文字の国コードに置き換えてください:
openssl req -new -x509 -key sp_private_key.pem -out sp_certificate.pem -days 365 -subj "/CN=Bob SAML SP/O=IBM/C=US"sp_certificate.pemファイルは、IdPがBobからのリクエストの署名を検証できるように、IdPにもアップロードする必要があります。
IdPの設定の詳細を入力します。 以下のセクションでプロトコル固有の要件を確認します。 Saveをクリックします。
IdPが作成され、Authenticationタブの表に表示されます。
SAML設定
SAMLには以下の設定の詳細が必要です:
Identity providerフィールド — これらはIdPから取得します:
idp_entity_id— IdPの一意の識別子(例:https://idp.example.com)idp_sso_url— BobがSSO認証リクエストを送信するSSO URLidp_certificate— IdPからのSAMLレスポンスを検証するために使用されるPEMエンコードされたX.509証明書
Service providerフィールド — 前のステップで生成したファイルを使用します:
sp_private_key—sp_private_key.pemの内容sp_certificate—sp_certificate.pemの内容
オプションフィールド:
idp_slo_url— IdPのSingle Logout URL。Single LogoutはBobではまだ完全には実装されていません。
Attribute mappingセクションで、IdPのユーザー属性をIBM Bobのユーザーフィールドにマッピングします。マッピング形式はBob属性名 → IdP属性名またはURIです。正しい属性名についてはIdPの設定を確認してください。
email(必須) — ユーザーのメールアドレスname(オプション)— ユーザーのフルネーム表示名given_name(オプション)— ユーザーの名family_name(オプション)— ユーザーの姓groups(オプション)— ユーザーのグループ
IdP管理者:新しいOIDCクライアントの登録
Bob インスタンス管理者が Bob で OIDC IdP レコードを設定する前に、IdP 管理者がまず ID プロバイダー内で OIDC アプリケーション(クライアント)を作成する必要があります。このステップで生成された値が、Bob インスタンス管理者が Bob に IdP を追加する際に入力するものになります。
アプリケーションタイプと付与タイプ
ID プロバイダーで Web アプリケーション(サーバーサイド / 機密クライアント)を作成し、付与タイプ Authorization Code を有効にします。Bob は Authorization Code フローのみを使用します — Implicit、Device Code、Client Credentials は選択しないでください。
リダイレクト URI
以下のコールバック URL を OIDC アプリケーションに登録してください。ほとんどのプロバイダーは文字列を厳密に照合するため、正確にコピーしてください:
https://api.us-east.bob.ibm.com/authn/v1/auth/callbackクライアントで有効にするスコープ
| スコープ | 目的 | 必須 |
|---|---|---|
openid | OIDC モードを有効にし、id_token を返す | はい |
email | ユーザーのメールアドレスを id_token またはユーザーinfo エンドポイント経由で公開する | はい |
offline_access | アクセストークンとともに refresh_token を付与する | ほとんどのプロバイダーでは「はい」 |
Bob は、すべての Authorization Code 交換レスポンスに refresh_token が含まれていることを要求します。プロバイダーが別のメカニズム(例:プロバイダー固有のスコープ、またはコード交換ごとに無条件に)でリフレッシュトークンを発行する場合は、それに応じて設定してください — ただし、クライアントがリフレッシュトークンを受け取れることを確認してください。refresh_token が返されない場合、ログインは中断されます。
トークンエンドポイントの認証方式
OIDC アプリケーションのトークンエンドポイント認証方式を client_secret_post に設定してください。Bob はすべてのトークンリクエストで client_id と client_secret をフォームボディパラメーターとして送信します。client_secret_basic、private_key_jwt、none は使用できません。
トークン設定
| 設定 | 必要な値 |
|---|---|
| アクセストークンの形式 | 任意(JWT または不透明 — Bob は IdP のアクセストークンを直接解析しません) |
| ID トークン | すべての Authorization Code 交換とすべてのトークン更新時に発行される必要がある |
| ID トークン署名アルゴリズム | RS256、ES256、または PS256 |
| リフレッシュトークンのローテーション | リフレッシュトークンのローテーションを使用できます。Bob は各更新時に新しいトークンを保存します。プロバイダーがリフレッシュトークンをローテーションする場合、Bob が置換トークンを受信した後にのみプロバイダーが以前のトークンを無効化するようにしてください(標準的なローテーション動作。猶予期間なしの一回限りの使用ではありません)。 |
Bob インスタンス管理者に渡す値
クライアントアプリケーションが作成されたら、以下の値を Bob インスタンス管理者に渡してください:
| 値 | 取得場所 | Bob 設定フィールド |
|---|---|---|
| クライアント ID | アプリケーションの資格情報ページ | client_id |
| クライアントシークレット | アプリケーションの資格情報ページ | client_secret |
| Authorization エンドポイント URL | プロバイダーの OIDC エンドポイントページまたは .well-known/openid-configuration | authorization_endpoint |
| トークンエンドポイント URL | プロバイダーの OIDC エンドポイントページまたは .well-known/openid-configuration | token_endpoint |
| JWKS URI | プロバイダーの OIDC エンドポイントページまたは .well-known/openid-configuration | jwks_uri |
| Issuer URL | プロバイダーの OIDC エンドポイントページまたは .well-known/openid-configuration | issuer |
| ユーザーinfo エンドポイント URL(任意) | プロバイダーの OIDC エンドポイントページまたは .well-known/openid-configuration | userinfo_endpoint |
ほとんどのプロバイダーは https://<プロバイダードメイン>/.well-known/openid-configuration ですべてのエンドポイント URL を公開しています。
OIDC設定
OIDCプロバイダーディスカバリーを使用できます。Retrieve configurationボタンをクリックして、プロバイダーの.well-known/openid-configurationドキュメントからエンドポイントフィールドを自動入力するか、各エンドポイントURLを手動で入力できます。
OIDCには以下の設定の詳細が必要です:
| フィールド | 必須 | 説明 |
|---|---|---|
client_id | はい | IDプロバイダーに登録されたクライアント識別子。 |
client_secret | はい | 登録されたアプリケーションのクライアントシークレット。Bobはこれを安全に保存し、APIレスポンスで返すことはありません。 |
scopes | はい | 認証フロー中に要求されるスコープ。このリストにはopenidを含める必要があります。通常、emailと、offline_accessなどのリフレッシュトークンを発行するために使用されるプロバイダー固有のスコープも含まれます。 |
authorization_endpoint | はい | Bobがユーザーをサインインのためにリダイレクトする、HTTPS認証URL。 |
token_endpoint | はい | 認証コードをトークンと交換するために使用される、HTTPSトークンURL。 |
jwks_uri | はい | id_tokenレスポンスの署名を検証するために使用される、JSON Web Key Set(JWKS)のHTTPS URL。 |
issuer | いいえ | IDプロバイダーのHTTPS発行者識別子。 |
prompt | いいえ | 認証リクエストに転送されるOIDC prompt値。 |
OIDCはAttribute mappingを使用しません。Bobはid_tokenのemailクレームからユーザーのメールアドレスを直接読み取ります。
OIDC設定例
{
"authorization_endpoint": "https://corp.okta.com/oauth2/default/v1/authorize",
"token_endpoint": "https://corp.okta.com/oauth2/default/v1/token",
"issuer": "https://corp.okta.com/oauth2/default",
"client_id": "0oa1b2c3d4e5f6g7h8i9",
"client_secret": "super-secret-value",
"scopes": ["openid", "email", "offline_access"]
}OIDC要件と制限事項
- Bobは認証コード交換レスポンスに
refresh_tokenを必要とします。プロバイダーがこれを返さない場合、ログインは失敗します。 - ほとんどのプロバイダーでは、
scopesにoffline_accessを追加することでリフレッシュトークンの発行がトリガーされます。一部のプロバイダーは異なる動作を使用するため、プロバイダーのドキュメントを確認してください。 - OIDCバックチャネルログアウトは利用できません。
- プロバイダーがエンドポイントURLを変更した場合は、BobのIdP設定を更新してください。
ステップ2:ドメインフィルターの追加
IdPを保存した後、認証にそのIdPを使用するメールドメインを追加します。
Authenticationタブで、作成したIdPを見つけてその設定を開きます。 Domain filtersセクションで、このIdPを使用するメールドメインを追加します。設定済みのドメインに一致するメールアドレスを持つユーザーは、ログイン時にこのIdPにリダイレクトされます。 変更を保存します。
各メールドメインは1つのIdPにのみ関連付けることができます。あるドメインが別のIdPですでに使用されている場合、競合が解決されるまで設定を保存できません。SSOが適用される前に、各ドメインを確認する必要があります。ドメイン所有権の確認を参照してください。
ドメイン所有権の確認
IBM Bobでは、SSOが適用される前に、組織が各ドメインを所有していることを確認する必要があります。確認は、ドメインにDNS TXTレコードを追加することで行います。
IBM Bob管理ページに移動します。 Authenticationタブを選択します。 確認したいドメインを含むIdPを選択します。 Domain filtersセクションでドメインを見つけ、表示されている確認コードをコピーします。 DNSプロバイダーで、以下の形式でドメインにTXTレコードを追加します:
bob-verify=<verification-code>_verification-code_をDomain filtersセクションからコピーしたコードに置き換えてください。 Authenticationタブに戻り、ドメインのCheck verificationをクリックします。
IBM BobがTXTレコードを正常に検出すると、ドメインの確認ステータスがVerifiedに更新されます。DNS変更が反映されるまで時間がかかる場合があります。
IDプロバイダーの削除
IBM Bob管理ページに移動します。 Authenticationタブを選択します。 削除するIdPを見つけてDeleteをクリックします。 確認ダイアログでConfirmをクリックします。
IdPを削除すると、関連するすべてのドメインのSSO設定が削除されます。そのIdPを認証に使用していたユーザーは、別の方法でログインする必要があります。IdPに確認済みのドメインがある場合は警告が表示されます。