ブログ

【図解】CISが2つある時はどうする?S/4HANA CloudとSAP BTPのSAML連携をゼロから解説!

この記事をSNSでシェア!

KYOSOの新たな挑戦

これまでKYOSOは、SAP Business Technology Platform(SAP BTP)上でのアプリケーション開発に注力し、お客様のビジネスを支援してまいりました。この度、技術領域のさらなる拡大とお客様へのより包括的なソリューション提供を目指し、新たにS/4HANA Cloud環境を導入しました

これまでに使用しているBTP環境と今回導入したS/4HANA Cloud環境を連携することで、開発の幅はグンと広がります。本記事では、連携時に直面した課題とその解決方法を、具体的な手順とともにご紹介します。

前提

プロビジョニング

本記事は、既にS/4HANA Cloud環境がプロビジョニングされた状態であることを前提として、解説を進めます。プロビジョニングについては、以下の公式サイトをご参照ください。

S/4HANA Cloudのプロビジョニング手順(SAP Help Portal)

環境情報

S/4HANA Cloud
 Cloud test, demo, and development for SAP S/4HANA Cloud Public Edition, one-system landscape
SAP BTP
 Pay-As-You-Go for SAP BTP for cloud test, demo, and development

ユーザー認証(SAML)の実現

概要

S/4HANA Cloudは、プロビジョニング時にCloud Identity Services(CIS・旧IAS)との紐づけを求められます。S/4HANA Cloud専用のCIS(以下、CIS_S4HC)をプロビジョニングと一緒に新規作成する、もしくはお持ちのCISが既にある場合は、それを選択してプロビジョニングすることもできます。

当社がプロビジョニングをした際には、前者の方法で専用のCIS_S4HCを作成しました。これに加えて既存のBTP側にも別のCIS(以下、CIS_BTP)が存在する状態です。

CISが1つの場合は、そのCISをIdPにS/4HANA CloudとBTPの両方を連携することでSAML連携を実現できます。

<構成>
CIS:アイデンティティプロバイダ(IdP)
S/4HANA Cloud:サービスプロバイダ(SP)
SAP BTP:サービスプロバイダ(SP)



(あれ?それじゃあ、今回のようにCISが2つある場合はどうすれば良いの・・・?)



ここでCISが2つあるという課題に直面したのですが、調べたところCISには「IdP プロキシ構成 (IdP Chaining)」がサポートされていました。今回のようにCIS_S4HCCIS_BTPの両方が存在する場合、次のような構成で連携することが可能になります。「プロキシIdP」とあるように、CIS_S4HCは中継役として自身が受け取った認証リクエストをCIS_BTPに転送する役割を持ちます。
本記事では、このIdPプロキシ構成の設定方法について詳しく解説いたします。

<構成>
CIS_BTP:プライマリ IdP
CIS_S4HCプロキシ IdP
S/4HANA Cloud:サービスプロバイダ(SP)
SAP BTP:サービスプロバイダ(SP)

手順

CIS_S4HC側の設定

1.CIS_BTPの管理コンソールにログインし、[Tenant Settings]を押下


2.[SAML 2.0 Configuration]を押下


3.[Download Metadata File]を押下し、CIS_BTPのメタデータをダウンロードする


4.CIS_S4HCの管理コンソールにログインし、[Corporate Identity Providers]を押下


5.[Create]を押下


6.Typeを「SAP Single Sign-On(SAML 2.0)」にして任意の名称を入力し、[Create]を押下


7.作成されたCorporate Identity Providerの詳細画面から[SAML 2.0 Configuration]を押下


8.手順3でダウンロードしたCIS_BTPのメタデータをインポートする
設定変更はせずそのまま[Save]を押下


9.(ココが重要)[Name ID Policy]を設定
今回はe-mailで紐づけたいため[Email]を選択して[Save]を押下


10.[Identity Federation]内が何も有効化されていないことを確認


11.[Applications]を押下


12.対象のS/4 HANA Cloud のURLが記載されたアプリケーションを選択
(S/4HANA Cloudプロビジョニング時にアプリケーションが自動作成されている)


13.(ココが重要)[Subject Name Identifier]を押下し、プライマリ属性を9で設定したポリシーに合わせて保存(今回の例では「Email」)


14.(ココが重要)[Default Name ID Format]を押下し、プライマリ属性を手順9で設定したポリシーに合わせて保存(今回の例では「Email」)


15.[Conditional Authentication]を押下し、[Default Identity Provider]を「Identity Authentication」から手順6で作成したIdentity Providerに変更して保存する


16.[Identity Federation]が「Corporate IdP」になっていることを確認

CIS_BTP側の設定


1.CIS_S4HCの管理コンソールにログインし、[Tenant Settings]を押下


2.[SAML 2.0 Configuration]を押下
[Download Metadata File]を押下し、CIS_S4HCのメタデータをダウンロードする


3.CIS_BTPの管理コンソールにログインし[Applications]を押下


4.[Create]を押下し、任意の名称で新規のアプリケーションを作成。Protocol Typeには「SAML2.0」を選択する。


5.作成したアプリケーションの[SAML 2.0 Configuration]を押下し、[Load from File]を押下して、2でダウンロードしたメタデータをインポートして保存する


※保存後


6.(ココが重要)[Subject Name Identifier]を押下し、プライマリ属性をCIS_S4HC側の設定」の手順9で設定したポリシーに合わせて保存(今回の例では「Email」)


7.(ココが重要)[Default Name ID Format]を押下し、プライマリ属性をCIS_S4HC側の設定」の手順9で設定したポリシーに合わせて保存(今回の例では「Email」)

ログイン確認

ログイン確認するには、事前に各システムにユーザ登録を済ませておく必要があります。


CIS(CIS_BTPのみ)CIS_S4HCはプロキシの役割であるためユーザの登録は不要
CIS_BTPの管理コンソールにアクセスし、[User Management]よりユーザ登録


SP(S/4HANA Cloud、SAP BTP)
S/4HANA CloudのFiori LaunchpadのURLにアクセスし、Woker(Manage Workforce)、Business User(Maintain Business Users)へのユーザ登録を行う

・Worker(Manage Workforce)

・Business User(Maintain Business Users)



SAP BTP Cockpitにアクセスし、[Security]->[Users]でユーザ登録を行う

ログイン確認方法


1.S/4HANA Cloudにアクセスする
ログインフォームがCIS_BTP側の設定」の手順4でCIS_BTP側に作成したアプリケーション名と一致することを確認し、CIS_BTPに登録したアカウントでログインを行う


2.CIS_BTPのアカウントでS/4HANA Cloudにアクセスできることを確認(SAMLの成立)

Subject Name Identifierの設定には注意が必要

今回の設定に際しては、なかなか想定通りの動作にならず苦戦しましたが、原因は手順内で「ココが重要」と記載した ユーザー識別子(Name ID)の整合性でした。IdP間およびSP(S/4HANA Cloud)間でのユーザー識別子のマッピングは最大のハマりポイントです。 デフォルト設定では「User ID」や「Unspecified」が使われることが多いですが、今回はS/4HANA Cloud側のBusiness User作成時に登録した「E-Mail」をキーとして紐づけを行いました。

  • CIS_BTP:E-MailをName IDとして送出
  • CIS_S4HC:受け取ったName ID (E-Mail) をそのままSPへ中継
  • S/4HANA Cloud:E-Mailでユーザーを特定

このバケツリレーのどこか一つでも設定が食い違うと、認証は成功しても「ユーザーが存在しません」というエラーになります。Subject Name Identifierの設定は慎重に行う必要があります。

おわりに

S/4HANA CloudとSAP BTPのSAML連携について、CISが2つ存在する場合の「IdPプロキシ構成」の手順を解説しました。

最初に直面した「CISが2つあるけれど、どう連携すればいいの?」という疑問も、SAMLのTrust設定を正しく連鎖させることで、セキュアかつシームレスなシングルサインオン環境を実現できました。これにより、開発者はBTP上のアプリケーションとS/4HANA Cloudを行き来する際に、再ログインの手間から解放され、より開発に集中できるようになります。

まだ導入したばかりではありますが、今後もS/4HANA Cloud関連の記事を投稿していく予定ですので、そちらもぜひご覧いただければと思います。

本記事の解説が、同じような環境構成で悩まれている方の助けになれば幸いです。
最後までお読みいただきありがとうございました!

投稿者プロフィール

大岩 香緒里
大岩 香緒里
2015年入社。会計管理システムやBIシステムのパッケージ開発を経て、現在はSAP BTP案件にて開発リーダーを担当しています。

【主な技術領域】
SAP BTP関連(Fioriアプリケーションほか)、SAP Analytics Cloud、AWS
【イベント参加実績】
2022年 JSUG INFO 企画編集委員
2024年 11月 SAUG-x 2024(オーストラリア・メルボルン)
2025年 2月 SAP Inside Track TOKYO 2025(登壇)
この記事をSNSでシェア!