【IBM Security Verify】IBMCloudとSAML連携する

# はじめに
IBMCloudとIBM Security Verify(以下、ISV)とSAML連携してIBMCloudへIdPであるISVを経由してログインする設定を共有します。
なお、IBMCloudのアカウントは事前準備済みの前提で説明します。

:::note info
記事の内容は2024年4月9日時点のものとなります。
:::
# 連携手順
## IBMCloud側の設定その1
### APIキーの生成
IBM Cloudトップ画面＞IAM＞IDの管理＞APIキー
APIキーを作成し、コピーしておく。ISV側の設定で必要です。
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/990bb192-b6a1-c545-30db-4de759a38a0f.png)
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/0b181722-4f39-e731-58e4-2138096bda8d.png)
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/d58d1140-2cf1-f7c7-7100-b92f0319da6c.png)
### AppIDの作成
IAM＞IDプロバイダー
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/e57c1ca5-a80e-ff0b-be21-b16503364875.png)
「インスタンスを作成」のところをクリックしてAppIDページへジャンプします。
・ロケーション
・料金プラン
を選択して、使用条件に同意して「作成」。
「App IDへようこそ」画面が表示。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/63ae85e6-befd-ed97-2a3d-36c479be61af.png)
### IBM CloudのSAML2.0連携設定
AppID＞「IDプロバイダ」＞「SAML2.0連携」
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/93b26bc0-8c70-adc5-8396-6d5de5562aff.png)
**ここでメタデータをダウンロードしておきます。ISV側の設定で必要です。**
**また、ここでISV側の設定で出てくる情報が必要になるのでISV側の設定へ移ります。。**
以下の情報はISVのアプリケーション追加画面の右側に出てくる情報をコピーしてペースト。
・エンティティID
・サインインURL
・１次証明書
・IdP開始ログイン→「IBM Cloud」は、アイデンティティー・プロバイダーが開始した SSO をサポートしません。そのため無効。

## ISV側の設定その1
### アプリケーションの追加
ISVトップ画面＞アプリケーションの追加
「IBM Cloud」で検索しますとIBMCloudが出てきますので、それを追加します。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/17f08a0f-b728-44db-e907-c8cf3662bbee.png)
サインオンタブの
・プロバイダーID
・アサーション・コンシューマー・サービスURL
は、**IBMCloud側からダウンロードしたメタデータファイル内に記述されているものを入力してください。**
・サービス・プロバイダーのSSO URLは、IBMCloudの「管理」>「IAM」>「IDプロバイダー」の、「デフォルトIdP URL」の値を入力します。
次に、サインオンタブの右側のところにある
・EntityID
・Sign in URL
・Primary certificate
の情報をコピーします。**これらを前述のIBMCloud SAML2.0連携設定画面へ入力します。**
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/9df75fd4-fd18-4380-20ca-d6ad563ceaee.png)

## IBMCloud側の設定その2
AppID＞「IDプロバイダ」＞「SAML2.0連携」
ISV側からコピーした情報を記載して保存します。
### App-IDでユーザ作成
前述で作成したApp-IDの画面＞ユーザー＞SAMLでログインさせたいユーザーを作成します。
なお、ISVとIBMCloud間のユーザーはEmailアドレスで紐づけがなされます。（記事下部の参考リンクを参照）
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/9a84cd04-cc05-3566-0b93-194543ff1253.png)
### SAML2.0有効化
AppID＞「認証の管理」＞SAML2.0有効化
「SAML2.0」のトグルをONにする。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/98c1834b-75bf-1009-bdde-061e6d66fcf7.png)
SAML連携のテストボタンがあるので連携がうまくできていれば以下の画面が表示されます。
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/07be48ae-fbde-4205-eab4-3416c217ed10.png)
### IDプロバイダーの設定
管理＞IAM＞IDプロバイダー
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/1eeaec27-4a73-6b34-2b76-e3992eef01ea.png)
「作成」をクリック。
・名前は適当に自分がわかりやすいものでよいです。
・サービスインスタンスは、先ほどまで設定していたインスタンス名をプルダウンから選択します。
・ユーザをオンボードする方法
　→今回SAML JITを無効にしているので、「なし」を選択。
・アカウントのログインに有効にしますか？（日本語がおかしいですが）
　→チェック入れる
・デフォルトとして設定しますか
　→チェック外しておく
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/892fa6bb-1308-c47e-3728-4735187460b0.png)
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/510b7bdb-b348-af1e-958d-b3140ebf51a2.png)
#SAML接続の確認
デフォルトのIdP URLを叩いてみます
プルダウンで、先ほど設定していたIdPを選択します。
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/7f7653e4-d6e4-fedf-8b73-1d0f07039cfb.png)
Login with Googleの下に、新しくISV経由のログインボタンが出る。これを押す。
※IBM Cloudのデフォルト設定では、Facebookログイン、Googleログインまでが出るようになっています。今回のIdP設定を追加したことにより、グレーの「Login with XXXX」のボタンが新たに追加されました。
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/665d35bb-1159-798c-9ff2-adf13bf7e060.png)
IBMCloudへログインする際、ISVのログイン画面へ遷移されるようになります。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/c0eab052-87b8-76db-a770-13b6ff0b56b1.png)
# 参考
アイデンティティー・プロバイダーでの SAML シングル・サインオンの構成
https://www.ibm.com/docs/ja/security-verify?topic=sign-configuring-saml-single-in-identity-provider
IBM Cloud でサポートされる属性とエラー処理
https://www.ibm.com/docs/ja/security-verify?topic=cloud-supported-attributes-error-handling