はじめに
本ブログでは、SAP Cloud Identity ServicesのIdentity Authentication(SAP IAS)とSAP S/4HANAの間でSAML 2.0プロトコルを使用してシングルサインオン(SSO)を構成する方法について説明します。この設定により、ユーザーは一度の認証で複数のアプリケーションにアクセスできるようになります。
目次
- SAML 2.0 とは?
- SAP IAS <-> SAP S/4HANA の接続 セットアップ手順
- 動作確認
- まとめ
1. SAML 2.0 とは?
SAML (Security Assertion Markup Language) 2.0 は、異なるドメイン間での認証と認可情報の交換を標準化するためのXMLベースのフレームワークです。
SAML 2.0の基本概念
- ユーザーの認証を行い、SAMLアサーションを生成するエンティティ。今回の例では、SAP IASがIdPとして機能します。
- IdPからのSAMLアサーションを受け取り、ユーザーにサービスを提供するエンティティ。今回の例では、SAP S/4HANAがSPとして機能します。
- IdPが生成し、SPに送信する認証情報を含むXML文書。これにより、ユーザーが認証されたことを証明します。
- 一度の認証で複数のサービスにアクセスできる仕組み。ユーザーは一度IdPで認証されると、他のSPにもシームレスにアクセス可能です。
SAML 2.0の利点
- セキュリティの向上:
- ユーザーのパスワードを各サービスプロバイダーに保存する必要がなく、セキュリティリスクを軽減します。
- ユーザーエクスペリエンスの向上:
- 一度のログインで複数のサービスにアクセスできるため、ユーザーの利便性が向上します。
- 統合管理:
- IdPを中心とした認証管理により、ユーザーアカウントの管理が容易になります。
2. SAP IAS <-> SAP S/4HANA の接続 セットアップ手順
本セクションでは、SAP IASとSAP S/4HANA の間でのSAML2.0セットアップ手順について、画面を交えてご紹介します。基本的な内容は下記SAP Help Portalに依存しますので、公式な内容はこちらをご参照ください。
https://help.sap.com/docs/cloud-identity/system-integration-guide/identity-authentication-configurat...
SAP IASのSAMLメタデータを取得する
この章では、SAP IASのSAMLデータを取得し、またSAP IASとSAP S/4HANA の間で暗号化通信を行うために、SAP IAS上で生成された証明書を取得し、そこから公開鍵を抽出するまでの手順を示します。
SAP IASのテナントにアクセスし、「Applications & Resources」->「Tenant Settings」->「SAML 2.0 Configuration」へ移動します。ここでは、SAP IASのSAML2.0に関する設定を行うことができます。
- 画面右側の「Download Metadata File」をクリックし、メタデータをダウンロードします。本ブログ内では、こちらのメタデータを「metadata_IAS.xml」として扱います。
- Signing Certificate セクションに証明書がない場合には「add」ボタンから追加してください。この証明書のActionからメガネマークのDisplayをクリックすると、証明書の中身を確認することができます。

- 証明書情報をコピーします。

- お手元のテキストエディタで「cert.cer」というファイルを生成し、下記のようにペーストします。
-----BEGIN CERTIFICATE-----
<コピーした証明書の内容>
-----END CERTIFICATE-----
- ローカルファイルシステムで前述の「cert.cer」を保存したディレクトリに移動し、下記のコマンドを実行します。今回はopensslというツールを用いて、証明書から公開鍵を抽出し、「public_key.cer」というファイルに格納しています。
openssl x509 -in cert.cer -pubkey -noout > public_key.cer
- これにより、下記のような公開鍵が生成されます。なお下記に示す公開鍵は形式を表すためのものであり、ダミーです。
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArVRlbWhP4Zc6XT9z+p7E 4F8o2X/o/LC/QQ08QR+F/LkE1EFi/V2YdMsa6yYB3gwn/A8Tv5e3AGsrfFL53G+o
B8MULygouF3WQ <公開鍵のイメージ> +B8MULygouF3WQB8MULygouF3WQB8MU odPUI4ML8pX5Sz1OG+NwzSHB6NxFg80URpj/D1fqu3WvVZcUGBNryICMeWXGfLhZ R7u4odCZzg+0LKwO14O6UkD4ftIJeUCNL8Ne3bX0y8WsVsAi+iwOuhF0Z0HD2V5T MRAkfw9BkTSJX4A9cwJfH/BUPsCU5kPm/xkTY2U76Y4YIozBPMDNEQa9MP7QWx/N
-----END PUBLIC KEY-----
SAP IAS上でSAP S/4HANAを指すApplicationを作成する
SAP IAS に登録するApplicationとは、SAP IAS と連携する先のアプリケーションを意味します。今回はSAP S/4HANA を追加していきます。SAP IASのテナントにアクセスし、「Applications & Resources」->「Applications」 へ移動します。
- Createボタンをクリックし、新しいApplicationを追加します。Applicationのタイプとして「SAP on-premise solution」 を選択します。

ABAP PlatformをSAMLサービスプロバイダーとして有効化する
この章では、SAP S/4HANAをSAMLにおけるSPとして登録するための設定を行います。
- SAP GUIを起動し、適切な権限を持ったユーザーとしてSAP S/4HANA にログオンしたのち、トランザクションコード 「SAML2」 を起動します。

- ブラウザが立ち上がります。「Enable SAML2.0 Support」 -> 「Create SAML 2.0 Local Provider」の順にクリックします。

- 今回、SPはSAP S/4HANA自身が該当します。したがって名前は 「S4PCE」 としました。必要に応じて、お好きな名前を入力します。「Next」をクリックします。

- デフォルトの設定で「Next」をクリックします。

- こちらもデフォルトのまま「Finish」をクリックします。

- これでSAP S/4HANA 自身がSPとして設定されました。したがって、次のステップとしてこのSPのメタデータをダウンロードしましょう。「metadata」をクリックします。

- デフォルトのまま「Download Metadata」をクリックします。今回はこのメタデータを「metadata_S4.xml」として保存します。

SAP IASをアイデンティティプロバイダーとして信頼する
- SAML2.0の仕組みにおいては、メタデータの相互交換が必要となります。まずはSAP S/4HANA に対して、SAP IASのメタデータをアプロードします。「Trusted Providers」 -> 「Add」 -> 「Upload Metadata File」 の順にクリックします。

- Metadata File をクリックして、「metadata_IAS.xml」をアップロードします。「Next」をクリックして次に進みます。

- アップロードされたメタデータの確認が走ります。Upload From File をクリックし、先述の「cert.cer」をアップロードします。「Next」をクリックします。

- デフォルトの状態で「Next」をクリックします。

- こちらもデフォルトで「Next」をクリックします。

- メタデータから抽出された、SSOに用いるエンドポイントの設定が表示されます。デフォルトで「Next」をクリックします。

- 同様にログアウト用のエンドポイントが表示されます。デフォルト状態で「Next」をクリックします。

- デフォルト状態で「Next」をクリックします。

- デフォルトの状態で 「Finish」 をクリックします。

ABAP Platform クライアントのName IDフォーマットを設定する
ユーザーに関する情報を共有するためには、通信先システムが異なるIDを使用している場合でも、ユーザーを識別できる必要があります。SAML 2.0規格では、共通の識別子を確立する手段として、名前識別子(Name ID)を定義しています。この章では、このName IDを設定します。
- 「Identity Federation」 -> 「Add」の順にクリックします。

- 今回はSAP IAS に登録されたユーザーとSPA S/4HANAに登録されたユーザーをemailアドレスによって識別したいので、「E-mail」をクリックし、「OK」により確定します。

- SAMLアサーション内のName IDがABAP Platform (SAP S/4HANA) 内のユーザーにどのようにマッピングされるかを設定する必要があります。このマッピングを通じて、ABAP Platformは誰がログオンしているかを識別します。SAMLアサーションで提供される情報は、ABAPプラットフォームの単一ユーザーと1対1で一致する必要があります。これを行うため、 「User ID Mapping Mode」にて、適切な項目を設定します。

- 最後に、「Enable」 をクリックしてIdP(SAP IAS)との間のSAML連携を有効化します。

- List of Trusted Providers 内の 「Active」 の部分が緑色に変化すれば完了です。

ABAP Platformクライアントをサービスプロバイダーとして信頼する
今度は逆の信頼設定を行います。
- SAP IASに移動し、「Applications & Resources」 -> 「<先ほど作成したS/4HANAを指すApplication>」 -> 「SAML 2.0 Configuration」 の順にクリックします。Metadata Fileの部分に先ほどダウンロードしておいた「metadata_S4.xml」をアップロードします。これにより、SAMLの設定に必要な情報が自動で読み込まれます。「Save」をクリックします。

ABAP Platformが使用するサブジェクトネーム識別子の設定
- 「Applications & Resources」 -> 「<先ほど作成したS/4HANAを指すApplication>」 -> 「Subject Name Identifier」 の順にクリックします。今回は「Email」を指定します。

動作確認
- Fiori Launchpad にアクセスすると、SAMLの設定が有効化されているため、NetWeaverの画面でIdPを選択する画面が表示されます。IdP(SAP IAS)のURLを選択し、「続行」をクリックします。

- SAP IAS の認証画面にリダイレクトされます。ここでは、SAP IAS に登録されたユーザーにより認証を行うことになります。

- SAP IAS側のユーザーとSAP S/4HANA 側のユーザーが持つ 「email」 属性によりユーザーマッピング、識別が行われ、Subject Name Identifierで指定した項目にて、SPA S/4HANA へのログオンが行われます。

まとめ
本ブログでは、SAP Cloud Identity ServicesのIdentity AuthenticationとSAP S/4HANA間でSAML 2.0を使用したSSOの設定手順について説明しました。これにより、ユーザーは一度の認証で複数のシステム間でシームレスに認証できるようになります。適切な設定とテストを行うことで、エンタープライズ環境におけるセキュリティとユーザビリティの向上が期待できます。
参考資料