SAP Cloud Platformアプリケーションのセキュリティ構成

SAP Cloud Platformには多数の組み込みサービスがあります。 この記事では、セキュリティのトピックに焦点を当てます-Neo環境のセキュリティサービス、および開発したアプリケーションとサービスのセキュリティを確保するためのSAP Cloud Platformの機能を検討します。



この記事では、SAP Cloud Platformセキュリティサービスの機能、およびこれらの用語またはそれらの用語の意味をよりよく理解するために、以下のトピックを扱います。









次に、SAP Cloud Platformの無料試用アカウントの実際の例を見てみましょう-誰でも作成できます。 このパートでは、ランタイム(HTML5やJavaなど)に応じてアプリケーションのセキュリティ構成がどのように機能するかを説明します。



NeoのSAP Cloud Platformセキュリティサービスに関する記事の計画:





(以降-再び多くのテキスト)





パート1.セキュリティサービスの概要





SAP Cloud Platformの重要な概念の1つは、プラットフォーム上で実行されるあらゆるシナリオでの認証および許可管理が、いわゆるIDプロバイダー(IdP)を介して実行されることです。 このシステムは、ユーザーを安全に管理するように設計されています。 ユーザーにはさまざまなタイプがあります-通常の従業員、管理者、その他。 これらのユーザーを安全に管理するタスク、特に資格情報の安全な管理は、多くの場合IDプロバイダーに委任されます。 認証セキュリティとユーザーアカウント管理を保証するために、アプリケーションに依存するアプリケーションに識別情報を提供します。







何千ものユーザーアカウントを追跡し、何度も何度も新しいユーザーと新しいパスワードを作成する必要はありません。 私たちのほとんどは、毎日作業しなければならないさまざまなアプリケーションのパスワードとユーザーアカウントの膨大なリストを持っています。 ユーザー管理を一元化するのは簡単ではありませんか? これにより、既存のアカウントが再利用されます。 このために、ユーザーアカウントを確実に格納および管理するIDプロバイダーがあります。 SAP Cloud Platformは、アプリケーション開発者としてユーザーアカウントの管理に使用するIDプロバイダーとの統合を提供します。

たとえば、生産的なシナリオでは、ユーザーはSAP Cloud Platformに基づく新しいアプリケーションを使用する従業員です。 この場合、ユーザーの企業ディレクトリはIDプロバイダーです。



B2Cシナリオの場合、ユーザーアカウントはソーシャルネットワークアカウント(Twitter、Facebook、Googleなど)にすることができます。 この場合、ソーシャルネットワークはIDプロバイダーの役割を引き受けます。



SAP Cloud Platformは、オプションとしてSAPのIDプロバイダーも提供します。 したがって、すぐに使い始めたい場合で、テスト用に複数のアカウントをすばやくセットアップできる認証プロバイダーがない場合は、SAP IDサービスをいつでも標準認証プロバイダーとして使用できます。 彼女は、SAPのかなり多数のユーザーアカウントを管理しています。 たとえば、SAP IDサービスのユーザーは、SAP Cloud Platformのトライアルアカウントユーザー、またはSAPのお客様の場合はSユーザーです。 ただし、SAP Cloud Platformにアプリケーションをデプロイし、このサービスをプロバイダーとして使用したい開発者の観点から、SAP IDにはいくつかの制限があります。 SAP IDにユーザーを登録するプロセスを制御することはできません。これはSAPユーザーベースであるため、このユーザーベースからユーザーを単純に削除することはできません。



したがって、プロバイダーの最初のオプションはSAP IDです。

SAPオンラインIDプロバイダー









完全に制御できる独自のテナントが必要な場合は、クラウドベースのIDプロバイダーを使用できます。これは、SAP Cloud Platformのサービスの一部として提供され、ID認証サービスと呼ばれます。 このサービスはSAP IDに似ていますが、独自のテナントとして提供され、クライアントとしてこのテナントのユーザーベースを完全に管理するために使用できます。 また、外観、ユーザーインターフェイスをカスタマイズし、独自のロゴを配置することもできます。 そして最も重要なのは、テナントとそのテナントに設定したパスワードポリシーの観点からセキュリティレベルを制御できることです。 たとえば、一部のクライアントシナリオで使用する場合、3か月ごとにパスワードを変更する必要がある従業員(またはそのようなもの)ほど要件が厳しくない場合があります。 したがって、統合されたSAP Cloud Platformサービスは、無料のSAP IDよりも機能的です。 ただし、有料です-無料試用アカウントでは、Identity Autentificationサービスは利用できません。



2番目のオプションはID認証です。









既存の企業IDプロバイダーと統合する機能が必要な場合はどうなりますか? SAP Cloud Platformにもこの機能が含まれています。 このシナリオでは、SAPプロバイダーとMicrosoft Active Directoryなどのサードパーティプロバイダーの両方がサポートされています。 選択したプロバイダーと統合するための唯一の条件は、この分野でよく知られている標準であるSAML 2.0セキュリティマークアップ言語と互換性があることです。 このプロトコルは、SAPだけでなく、他のほとんどのIDプロバイダーでもサポートされています。

これにより、プラットフォームとSAP Cloud Platformで実行されるアプリケーションを、選択したIDプロバイダーと非常に簡単に統合できます。



3番目のオプションは、コーポレートアイデンティティプロバイダーです。









次に、これに応じて、IDプロバイダーを使用するためのさまざまなタイプのユーザーとオプションを見てみましょう。



実際、ほとんど制限はありません。 ユーザーには、ビジネスユーザーとプラットフォームユーザーの2種類があります。 この用語は、SAP Cloud Platformに関連するほとんどすべてのトピックにあります。 ビジネスユーザーは、SAP Cloud Platformで実行されているアプリケーションのエンドユーザーとしてログインします。 たとえば、SuccessFactorsを使用する場合、従業員データを管理するビジネスユーザーがいます。 たとえば、Twitterアカウントを介してログインするプライベートユーザーは、ビジネスユーザーとしても使用できます。 したがって、ビジネスユーザーはエンドユーザーです。



プラットフォームユーザーは、プラットフォームで管理タスクを実行するユーザーです。 このようなユーザーは、ビジネスユーザーに比べてはるかに小さいです。 通常、彼らはアプリケーションの開発者または管理者であり、原則として、コントロールパネル(クラウドコックピット)、コンソールクライアント、またはプラットフォームと対話するためのEclipseツールなどのツールを使用します。



次の図は、ユーザーの種類に応じてIDプロバイダーを使用するためのオプションといくつかの推奨事項を示しています。







ビジネスユーザーは、SAP IDサービスをプロバイダーとして使用できます。 ただし、生産的なシナリオでは、SAP Cloud Platform Identity Authenticationサービスまたは企業プロバイダーを使用して完全に制御し、テストにSAP IDを使用することをお勧めします。



プラットフォームユーザーは、SAP ID、SAP Cloud Platform Identity Authentication、および企業IDPの3種類すべてのIDプロバイダーを使用することもできます。 ただし、このようなユーザーには企業IDPの使用に関する制限があります。このシナリオでは、Neo環境のコンソールクライアントを使用してプラットフォームユーザーを認証することはできません。 結果として、かなり豊富なオプションのセットが得られます。



次に、SAP Cloud Platformでの承認について少し説明しましょう。 プラットフォームユーザーの場合、プラットフォームレベルで役割が割り当てられます。 Neo環境では、これらは管理者、開発者、またはサポートユーザー向けの事前定義されたロールにできます。 Neo SAP Cloud Platform環境は、事前定義されたロールのセットを提供します。たとえば、生産的なアカウントを使用し、そのアカウントの管理者である場合、これらのロールをアカウントメンバーに割り当てることができます。 ところで、プラットフォームのユーザーはアカウントのメンバーです。 コントロールパネルのメニューには「メンバー」(または「参加者」)と呼ばれるタブがあります。ここで、プラットフォームにユーザーを追加し、ロールを割り当てることができます。







ビジネスユーザーの場合、このプロセスは少し異なります。 数千または数万のビジネスユーザーにロールを割り当てることができるはずです。 これはプラットフォームレベルのロールではなく、ビジネスアプリケーションによって定義されたロールです。 ロールをビジネスユーザーに割り当てるには、プラットフォームユーザーを介してSAP Cloud Platformコントロールパネルに移動し、ビジネスアプリケーションで定義されたロールに「静的に」ビジネスユーザーを追加できます。



ただし、特に膨大な数のビジネスロールを同様に膨大な数のビジネスユーザーに割り当てる必要がある場合、ある時点でこのモデルがスケーラブルではなくなることを想像してください。 Neoでは、このタスクに「グループ」を使用できます。 基本的に、これらのグループはプラットフォーム上の1つのオブジェクトの1つまたは複数のアプリケーションロールをカバーし、ビジネスユーザーをそのようなグループに追加すると、ユーザーはこのグループに割り当てられたアプリケーションからこれらすべてのビジネスロールに自動的に割り当てられます。 ユーザーがここで設定できるいくつかのプロパティを使用できます。 たとえば、ユーザーが主にモスクワで働く部門に属している場合、ユーザーはモスクワからのデータのみを表示する必要があります。



したがって、SAP Cloud Platformコントロールパネルのアプリケーションの設定を介してビジネスユーザーにロールを割り当てることは、静的にのみ行うことができます。つまり、識別子「abc」を持つユーザーをロール「xyz」に割り当てます。変更しない(たとえば、ユーザーIDを削除する)と、ロールが割り当てられます。

グループへのビジネスユーザーの割り当ては、静的に実行することもできます。つまり、このユーザー「abc」をグループに割り当て、各ロールを個別に割り当てる必要はありません。 これは動的に行うことができます、つまり 数千または数百万のビジネスユーザーが共有する属性に基づいています。 この属性は、ユーザーがSAP Cloud Platformのアプリケーションにログインしたときにランタイムで使用され、この属性とその値に基づいてユーザーをグループに動的に割り当てます。



管理者(プラットフォームユーザー)にとって、これは毎回ロール割り当てアクションを実行する必要がないことを意味します。



属性が変更され、これらのユニオン属性の値が通常ベースユーザーベースで変更されるとすぐに、ユーザーが次にシステムにログオンするときに、この属性の値に応じて役割の割り当てが発生するかどうかが決まります。







パート2. HTML5アプリケーションのセキュリティ設定









多くのSAP Cloud Platformユーザーは通常、HTML5とJavaを使用してNeoでアプリケーションを構築します。 FioriおよびSAPUI5ライブラリに基づく最新のテクノロジーを使用したビジネスアプリケーションのユーザーインターフェイスの実装は、HTML5アプリケーションの一部として行われます。 より複雑なビジネスロジックは、たとえば企業ネットワークや特定のSAPシステムなどのバックエンドシステムに常駐する場合があり、通常はJavaで実装されます。 HTML5またはJavaの両方のアプリケーションは、相互に作用する場合に意味があります。 それらはそれぞれ、異なるが補完的な機能を実装しています。



このパートでは、HTML5アプリケーションを見ていきます。 xProjectは、シンプルなプロジェクト管理アプリケーションです。 たとえば、従業員はSAP Cloud Platformのアプリケーションを使用して、プロジェクトを管理し、企業内のさまざまなタスクに費やした時間を追跡できます。



特定のプロジェクトのワーキンググループに所属している場合、このアプリケーションを使用してログインし、企業内のさまざまなプロジェクトに費やした時間を記録できます。 このアプリケーションの管理者であるユーザーのグループもあります。



したがって、2つのグループに分かれたビジネスユーザーがいます。 インターフェイスとして使用されるHTML5アプリケーションと、バックエンド用のJavaアプリケーションもあります。 この場合、アプリケーションのJava部分は、HTTPプロトコルを使用してこのビジネス機能を使用したいコンポーネントに提供するRESTful APIを提供します。 Webアプリケーションは、ユーザーインターフェイスと、アプリケーションのJava部分が提供するビジネス機能を使用できる他のクライアント用のAPIを提供します。







HTML5アプリケーションとビジネスユーザーの認証を詳細に検討してください。 すでにわかっているように、IDプロバイダーの選択肢があります。 SAP Cloud Platformの概念は、認証をIDプロバイダーに委任することです。 このシナリオでは、SAP IDをIDプロバイダーとして使用するため、HTML5アプリケーションはSAP IDの認証を委任します。 エンドユーザー認証、HTML5側での承認、およびHTML5アプリケーションのSAP IDサービスからのユーザー情報を使用して特定のユーザー情報を取得するプロセスを検討します。 これにより、ユーザー名などのユーザー属性を読み取ることができます。 ただし、SAP IDサービスでは、名、姓、電子メールアドレス、表示名の限られた属性セットを使用します。 HTML5側でこれらの属性を使用して、ユーザーに表示できます。



テストを行うには、xProjectというHTML5デモアプリケーションが必要です 。これはGitHubリポジトリにあります

このリポジトリのREADME.mdの指示に従って、アプリケーションをSAP Cloud Platformにダウンロードします。



SAP Cloud Platformで試用アカウントを作成するには、 ここをクリックしてください 。 次に、ホームページで環境として「Neo Trial」を選択し(試用アカウントを使用している場合)、「アプリケーション」タブ->「HTML5アプリケーション」に移動します。 次に、GitHubで説明されている手順に従う必要があります。



その結果、実行中のHTML5アプリケーションを取得できます。







Web IDEでは、アプリケーションのセキュリティを担当するコードと機能に慣れることができます。



Web IDEに移動して、「neo-app.json」ファイルを開きます。 このファイルは、HTML5アプリケーションのデプロイメント記述子です。 すべてのユーザーがアプリケーションにアクセスできるわけではなく、プロジェクトのメンバーまたはxProjectアプリケーションのプロジェクトマネージャーのみがアクセスできるように、承認のプロパティが追加されます。







ファイル「neo-app.json」のコードフラグメントを考えます。



}

"authenticationMethod": "none",

...

"routes": […

],

"securityConstraints": [

{

"permission": "accessProjectData", "description": "Access Project Data", "protectedPaths": [

"/protected/"

]

}

],

...

}








最初のステップは、認証方法を識別することです。 HTML5アプリケーションのセキュリティを確保して、個々のソースが保護されるようにする場合は、このフラグメントの最初のプロパティである「SAML」を認証方法として使用する必要があります。



しかし、ご覧のとおり、この例では「なし」が使用されています。 これは、スクリプトに公開ソースも含まれていることを意味します。 したがって、すべての人がアクセスできるソースがある場合(たとえば、これがアプリケーションの開始ページである場合)、このパラメーターが指定されます。 認証方法として「なし」を使用する場合は、展開記述子ファイルで、特定のロールに属するユーザーのみが保護し、アクセスできるものを正確に指定する必要もあります。 私たちの場合、アプリケーションは「保護」に先行するパスを定義し(したがって、「/ protected /」が書き込まれます)、その下のすべては特定のロールを持つユーザーのみがアクセスできるようにする必要があります。



HTML5デプロイメント記述子では、「プロジェクトデータへのアクセス」というアクセス許可を宣言することにより、この安全なアクセスを指定します。 後のコントロールパネル(コックピット)で、このアクセス許可にロールを割り当て、このパスを通じてユーザーに割り当てることができます。 しかし同時に、これは、この権限を持たないユーザーもアプリケーションへのアクセスを取得できることを意味します。ただし、そのパブリック部分のみにアクセスできます。

次に、「neo-app.json」ファイルにも示されている別のコードを検討します。



}

...

"logoutPage": "/logout.html", ...

"cacheControl": [

{

"directive": "private",

"maxAge": 0,

"path": "/protected/*html"

},

...

}










アプリケーションにログインした後、ログオフすることもできます。このプロパティは、デプロイメント記述子で「logoutPage」と呼ばれます。



これは、アプリケーションの終了ボタンをクリックした後、ユーザーをリダイレクトするためのページの内容を決定します。 ブラウザが終了後にキャッシュされたページを表示しないようにするには、HTML5アプリケーションでこれらのページの最大期間「0」を決定する必要があります。 これは、それらがキャッシュされないことを意味します。 そうしないと、ブラウザがキャッシュされたページを実際に表示するため、「ログアウト」をクリックした後、ユーザーが実際にログアウトしないという事実に遭遇する可能性があります。 または、ユーザーはログアウトされますが、ページにはユーザーがまだそこにいるかのように情報が表示されます。 少し後で、この終了要求が実行されているかどうかを確認する方法と、この終了要求をブラウザーでトレースする方法を見ていきます。



「neo-app.json」ファイルに示されている次のコードフラグメントに進みましょう。



...

"routes": [

{

"path": "/services/userapi",

"target": {

"type": "service",

"name": "userapi"

}

},


...








ログインに成功すると、ユーザーにデータが表示されます。 既に述べたように、SAP IDサービスを使用する場合、利用可能なユーザー情報のセットは非常に限られています:名、姓、および電子メールアドレス。 それらを表示するには、HTML5アプリケーションのAPIへのアクセスを指定する必要があります。これは、ファイル「neo-app.json」にパス「/ services / userapi」を書き込むことでユーザーに関する情報を提供します。



その後、指定したパスを参照するJSONモデルを使用して、現在のユーザーに関する情報にアクセスできます。 JSONモデルは、SAP IDサービスまたはその他のIDプロバイダーからのデータを使用し、HTML5アプリケーションにユーザー情報を表示します。



SAP Cloud Platformコントロールパネルに戻り、GitHub HTML5からダウンロードしたアプリケーションにアクセスして、ユーザーロールを割り当てることができます。



Neo環境のコントロールパネルに行きましょう。 「アプリケーション」タブで「HTML5アプリケーション」を選択し、「xproject」という名前のアプリケーションをクリックします。 アプリケーションに関する詳細情報を含むウィンドウが表示されます。







[概要]タブで、アプリケーションのアクセス許可アプリケーションにアクセスするためのアクセス許可の説明を見つけます。 ご覧のとおり、「accessProjectData」と呼ばれる「neo-app.json」ファイルに記述されている権限は次のとおりです。







これで、デフォルトでアカウント開発者ロールを持つすべてのユーザーにアクセス権「accessProjectData」が割り当てられます。 これらは、プラットフォームレベルの「メンバー」アカウントのメンバーセクションでそのような役割を持っているユーザーです(トライアルアカウントにはそのようなタブはありません。メンバーは1人のみで、すべての可能な役割が既に割り当てられているためです)。



もちろん、何も変更することはできません。この場合、アカウント開発者として、アプリケーションとシステムにアクセスできます。 しかし、私たちはそれを少し違ったやり方で行い、ビジネスの役割を追加します。 次に、アクセスを提供したいユーザーにユーザーを割り当てます。



これを行うには、[ロール]タブに移動します。 ご覧のとおり、最初はロールのリストは空です。 [新しいロール]をクリックして、新しいビジネスロールを作成します。







開いたウィンドウで、ロールの名前「Employee」を入力し、変更を保存します。







次に、この役割をビジネスユーザーに割り当てる必要があります。 これを行うには、「割り当て」をクリックします。







その後、ユーザーIDを入力する必要があるウィンドウが表示されます。



表示されるフィールドに別の試用アカウントのユーザーIDを入力します。 権限でこのビジネスロールを割り当てた後、Neo環境の別のアカウントのユーザーはこのアプリケーションにアクセスできます。 また、このユーザーに関する情報はSAP IDに保存されるため、このシナリオではIDプロバイダーとして使用します。 ログインに識別パラメーターを使用することに似ています。



2つ目の試用アカウントがない場合は、作成して、このアカウントのユーザーIDをこのフィールドに入力できます。

たとえば、2番目のアカウントのユーザーIDはp1943269512です。 このデータを[ユーザーID]フィールドに入力します。 最後に試用なしでユーザー名を入力する必要があることに注意してください。



次に、「割り当て」をクリックする必要があります。







これは、ユーザーを「従業員」ロールに割り当てた後のページの外観です。 ご覧のように、アプリケーションへのアクセスが許可されるユーザーは、アプリケーションがデプロイされているSCPのコントロールパネルにいるユーザーとは異なります。







ここで、[概要]タブに戻り、従業員のビジネスロールをaccessProjectData権限に割り当てる必要があります。 これを行うには、[アプリケーションのアクセス許可]タブで[編集]をクリックして編集します。







「accessProjectData」権限の反対側で、ロールとして「AccountDeveloper」ではなく「Employee」を選択し、「保存」をクリックします。







アプリケーションを実行してみましょう。 これを行うには、[概要]タブでアプリケーションへのリンクをクリックするだけです。







アプリケーションウィンドウはシークレットモードで開く必要があります。そうしないと、ログインしようとすると、指定したものではなく、アプリケーションをデプロイしたアカウントのアカウントデータが使用される場合があります。 この場合、「HTTP Status 403-Forbidden」というエラーが表示されます。







すべてのユーザーが利用できるアプリケーションの最初のページが表示されます。 安全なパスの下にある他のリソースにアクセスするには、認証する必要があります。 [ログイン]ボタンをクリックすると、このアクションにより、HTML5ランタイムがユーザーをIDプロバイダーにリダイレクトします(この場合、これはSAP IDです)。



「ログイン」ボタンをクリックしてログインします。







表示されるウィンドウで、「従業員」ロールに追加したユーザーのユーザー名とパスワードを入力し、「ログイン」をクリックします。







ログインに成功すると、バックエンドへのアクセスに関するエラーメッセージと、「ロールが割り当てられていません」という赤い碑文が表示されます。 これは、これまでHTML5がバックエンドとして動作するJavaアプリケーションと対話していないためです。







したがって、HTML5サイトにユーザーとしてログインし、認証され、このページへのアクセス許可を受け取りました。 明らかに、ログインに使用されたユーザー情報は、ユーザーAPIを使用してSAP IDサービスとHTML5アプリケーション間で共有されるようになりました。 ウェルカムウィンドウに表示されるユーザー情報は、SAPサービスIDから取得されます。



次に、SAMLトレースを使用してログアウトする方法を見てみましょう。 Google Chromeブラウザーの[開発ツール]セクションで開くか、Mozilla Firefoxでインストールして開くことができます。 画面の右上にあるアイコンの形で「終了」ボタンを押します。







終了要求がSAMLトレースウィンドウで送信されたかどうかを確認します。







SAMLプロトコルからわかるように、リクエストは送信されました。つまり、ログアウトしていることを確認できます。 [ログイン]をクリックした場合、再度認証する必要があります。



パート3. Javaアプリケーションのセキュリティ設定





Javaアプリケーションにはビジネスロジックが含まれており、データの安全性を管理し、ユーザーがプロジェクトを管理し、これらのプロジェクトに費やした時間を報告できるようにします。



HTML5アプリケーションのカスタマイズでは、エンドユーザー認証を検討し、SAP IDサービスを使用してこれを行いました。 その結果、認証されたユーザーが作成され、xProjectアプリケーションのJava部分に転送する必要があります。 そして、Javaアプリケーションでエンドユーザーがどのように認証されるかを理解する必要がありますか? 認証されたユーザー、つまり「プリンシパル」は、ユーザーインターフェイス(HTML5アプリケーションから)からJavaアプリケーションにどのようにアクセスしますか? ユーザーインターフェイスがJavaビジネスロジックを使用するためにJavaアプリケーションに関連するAPIを使用するのはいつですか? そして、主な質問:HTML5を介してJavaにアクセスするためのこのメカニズムの実装方法は? この方法は、プリンシパル伝播とも呼ばれます。



このシナリオではユーザーがプロジェクトデータにアクセスするため、Javaアプリケーションのバックエンドのロールに基づいて承認モデルを適用し、データを表示するためのユーザー権限を設定する機能を実現する必要があります。



HTML5アプリケーションでは、承認モデルはかなり厳しいものでした。 「従業員」ビジネスロールが割り当てられた1つの権限「accessProjectData」を定義し、ビジネスロールをこのロールに追加しました。 したがって、このユーザーは、SAP IDサービスを使用して正常にログインした後、アプリケーションのユーザーインターフェイスの一部にアクセスできます。



次に、アプリケーションのJava側で管理および保存されているデータにアクセスします。 2つの役割を使用して、より詳細な承認の概念を整理する必要があります。







シナリオ承認モデルを検討してください。 バックエンドのデータへのアクセスに関しては、HTML5モデルと比較してより詳細な承認モデルを使用する必要があります。 このシナリオでは、Javaで定義されている2つの異なるロールを使用します。 1つはプロジェクトメンバー用で、もう1つはプロジェクトマネージャー用です。 プロジェクト参加者は、自分に割り当てられたプロジェクトで自分の時間を示すことができます。また、アプリケーションのプロジェクトマネージャーは、新しいプロジェクトを作成し、ビジネスアプリケーションの管理部分を実行することもできます。 プロジェクトマネージャーは、プロジェクト参加者を任命したり、削除したりすることができます。 したがって、すべての管理要素は、プロジェクトマネージャーの役​​割を割り当てられたユーザーと、プロジェクト参加者の残りの要素にのみ使用できます。







GitHubリポジトリにあるxProjectというJavaデモアプリケーションが必要です



このリポジトリのREADME.mdの手順に従って、Eclipse NEON開発環境を介してこれらのアプリケーションをSAP Cloud Platformにダウンロードします。 Eclipseに「SAP Cloud Platform Tools for Java」をインストールする必要があることに注意してください。 これを行うには、開いたウィンドウで[ヘルプ]-> [新しいソフトウェアのインストール]メニューに移動し、URL tools.hana.ondemand.com/neonを入力して、必要なコンポーネントをインストールします。



Javaアプリケーションのセキュリティを構成するには、通常、デプロイメント記述子で認証要件を指定します。 HTML5アプリケーションの「neo-app.json」ファイルと同様に、Javaベースのアプリケーションに対応するデプロイメント記述子もあります。これは「web.xml」と呼ばれます。



Eclipseでこのアプリケーションのソースコードを参照して、前述のweb.xmlファイルで説明されている承認および認証方法を確認します。







その最も重要な部分はlogin-configプロパティで、これは認証方法、つまり ビジネスユーザーの認証に使用する認証メカニズムは次のとおりです。



...

<login-config>

<auth-method> FORM </ auth-method>

</ login-config>

...





このシナリオでは、フラグメントからわかるように、FORMメソッドが使用されます。 FORMでは、SAMLベースの認証を次のように使用できます。 SAML 2.0と互換性のある選択したIDプロバイダーに認証を常に委任します。 FORMメソッドは、アプリケーション間の相互運用性を提供する「アプリケーション間のSSO」または「アプリケーションへのシングルサインオン」についても説明します。 したがって、「web.xml」は常に入力の構成を示す必要があります。

JavaバックエンドAPIを呼び出すHTML5コンポーネントにアクセスするには、同じファイルに次のスニペットが必要です。

"routes": [

...

{

"path": "/api/projects",

"target": {

"type": "destination",

"name": "projectAPI"

},

"description": "Project API"

},

...

],

...








これらのAPIは、いわゆる「宛先」または「宛先」を通じて呼び出されます。 SAP Cloud Platform上または外にあるコンポーネントを呼び出すたびに、宛先を設定します。 つまり、アプリケーション呼び出しコンポーネントで宛先の名前を指定する必要があります。 私たちの場合、これはHTML5の一部になります。



デプロイメント記述子「neo-app.json」では、バックエンドからプロジェクトデータを取得するためのAPIへのパスが宛先として設定されます。これは、「projectAPI」という名前の宛先を参照します。 次に、宛先を作成するときに、SAP Cloud Platformコントロールパネルでこの名前を使用します。 実際、2つの宛先が必要になります。1つはプロジェクトデータを抽出するため、もう1つはアプリケーションを介してユーザーが見る予定のデータを受信するためです。 これらの2つのポイントは、HTML5アプリケーションがJavaバックエンドを正常に呼び出すために必要です。 これらは、HTML5アプリケーションがJavaアプリケーションにアクセスするURLを理解できるように、SCPコントロールパネルで作成されます。 そのため、Javaアプリケーションによって提供されるAPI URLの実際のURLと技術的なエンドポイントを指定する必要があります。



HTML5, . - , – .



«web.xml»:



...

<security-role>

<role-name>ProjectManager</role-name>

</security-role>

<security-role>

<role-name>ProjectMember</role-name>

</security-role>

...

<security-constraint>

<web-resource-collection>

<web-resource-name>Protected APIs</web-resource-name>

<url-pattern>/api/v1/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>ProjectManager</role-name>

<role-name>ProjectMember</role-name>

</auth-constraint>

</security-constraint>

...










, Java-: . . «web.xml» Java .



SCP, . , , API- Java , , . , , — .



, SCP GitHub. SCP.



SAP Cloud Platform, . «Neo Trial» ( ) «Applications» -> «Java Applications».







, Java- «xproject» SCP.

.

«Security» -> «Trust». , «Principal Propagation» « » . , «Edit».







«Principal Propagation» «Enabled», .







«Principal Propagation» . , , . , «Application-to-application SSO».



«Connectivity» -> «Destinations», . API-.

«projectAPI» «timesheetAPI» GitHub , .







«Import Destinations» .







«projectAPI».



URL : xprojectXYZ.hanatrial.ondemand.com/xproject/api/v1/web/projects .



«XYZ» . Java- «xproject», «Applications» -> «Java Applications».



«Overview» Java-. これは次のようなものです。







«api/v1/web/projects/». : xprojectp2000075844trial.hanatrial.ondemand.com/xproject/api/v1/web/projects .



URL «projectAPI», «Save».







, «AppToAppSSO», «Principle Propagation».

«timesheetAPI»: URL Java- «api/v1/web/timesheets/». :



xprojectp2000075844trial.hanatrial.ondemand.com/xproject/api/v1/web/timesheets .



URL «timesheetAPI» .







, HTML5- .



- Java-. , «Applications» -> «Java Applications», «xproject».

«Security» -> «Roles».







, , Java, «web.xml». , , «Predefined» «». , «Employee» HTML5 .

: «ProjectMember» , «Assign». «ProjectManager».







できた! . -.



HTML5 , «Applications» -> «HTML5 Applications», .







-.







«Login» , .







HTML5 . «Application-to-application SSO» , , HTML5 , Java. , Java , . , , . , . .



:







, . , .



おわりに



, xProject, : HTML5 Java. , Neo SAP Cloud Platform.



HTML5, , , , , . . , , .



記事の後半では、システムバックエンドにアクセスするためのアプリケーションのJava部分に注目しました。ここでは、Principal Propagationメソッド、HTML5インターフェイスとJavaバックエンドおよびセキュリティ設定を接続するためにどのように使用されるかを見ていきました。Javaレベルでは、プロジェクトマネージャーとプロジェクト参加者の2つの役割が作成され、ユーザーはシステムバックエンドにアクセスできました。



All Articles