
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_S4HCとCIS_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(登壇)



