!--a11y-->
Web Dynpro for Java のセキュリティ側面 
Web Dynpro アプリケーションを開発または実行するときには、他の Web アプリケーションをプログラミングする場合と同様に、利用可能な各種セキュリティ機能を統合することが非常に重要になります。Web Dynpro アプリケーションのセキュリティ側面は、以下のように分類することができます。
● 認証
● モデルインポートセキュリティ
● ビューコンテキストデータのセキュリティ
● フロントエンドセキュリティ
● 修正可能なユーザインタフェースエレメント
● URL 生成サービスで生成した URL のチェック
● URL パラメータのセキュリティ
● スタックトレース
● Web Dynpro コンソール
● パスワードセキュリティ
● SAP エンタープライズポータルでの Web Dynpro アプリケーションのセキュリティ
実際のアプリケーションの開始に必要な Web Dynpro アプリケーションユニットについて、認証を実行するかどうかを設定することができます。この認証設定は、アプリケーション設定の一環として行います。SAP NetWeaver Developer Studio の Web Dynpro パースペクティブでアプリケーションエンティティアプリケーションを登録するときに、適切なフラグを設定します。権限をチェックするには、ユーザ管理サービスが使用できます。さまざまなインタフェースとメソッドをこの目的で利用可能です。
Web Dynpro アプリケーションに対してデータを利用可能にするためのバックエンドシナリオはいくつかあります。
● SAP ビジネス API (BAPI) (適応 RFC モデル)
● Web サービス (Web サービスモデル)
● XMI モデル (UML 定義からの Web Dynpro モデル (XMI 書式))
適応 RFC モデルをインポートするときには、RFC を使用して呼び出される BAPI に対して有効なセキュリティ設定がすべて適用されます。RFC コールのセキュリティ関連の側面については、ローカルまたはセントラルの SAP システムランドスケープディレクトリ (SLD) の設定が SAP システムの標準管理の一環として行われる点に注意してください。たとえば、静的ユーザを使用してバックエンドに接続する Web Dynpro アプリケーションを開発している場合は、SLD を使用することによって、Web Dynpro アプリケーションコードの一部としてパスワードを使用する必要がなくなります。これは、SLD では、パスワード用にセキュアストレージが使用されるためです。Web Dynpro アプリケーションの SLD は、Visual Administrator を使用して設定します。論理宛先の指定は、適応 RFC モデルのインポート時に適切なウィザードで行います。Web Dynpro コンテンツアドミニストレータでは、特殊な宛先指定を行うことができます。宛先自体への接続は、カスタムコントローラソースコードで実装されます。
Web サービスの概要、およびWeb サービスをプログラミングして使用する場合のセキュリティ関連の側面については、Web サービスの文書を参照してください。
外部 UML モデルをインポートした場合、セキュリティ関連の情報は処理、インポート、または保存されません。インポートでは、オブジェクトモデルインタフェースが記述されている .xmi ファイルのみが必要となります。Java ベースの実装 (特殊な命名規則に準拠させることによって XML ファイル内の記述に沿っている必要があります) およびメタデータには、セキュリティ関連の情報が含まれていません。
ただし、バックエンドへの接続を利用可能にする環境、または現在のユーザを認識する環境などが実行時に必要になることがあります。これにより実行時にセキュリティギャップが生じることがありますが、セキュリティギャップは、Web Dynpro へのモデルインポートが原因で発生するわけではありません。セキュリティギャップは、個々のモデル実装固有の属性を表しています。
ビューコンテキストで保持および処理されるデータは、すべての Web Dynpro アプリケーションの中核部分となります。ビューデザイナで適切なビュー用に定義されたユーザインタフェースエレメントは、通常、クライアントとサーバとの間でデータフローが行われるようにするために Web Dynpro アプリケーション開発者によって個々のビューコンテキストエレメントにバインドされます。ただし実際には、ビューコンテキストデータがビューコンテキスト内でバインドされていないこともあります。このような状況は、既存の SAP バックエンドシステムからデータを取得して使用しているものの、データをバインドする時点になってもどの属性が Web Dynpro アプリケーションで必要不可欠なのかが明確ではないという場合などに発生します。通常の Java クラスに相当する Java プロキシがバックエンドのビジネス API ごとに複数生成されますが、生成されたプロキシまたはモデルクラスのすべてがアプリケーションで必要になるとは限りません。Web Dynpro 開発者は通常、コンテキストとモデルのバインドにオプションのエレメントも含まれるようにコントローラコンテキストを定義します。このようなオプションのエレメントは、以後のステップでオプションの全データが一時的に利用可能になるように、コンテキストマッピング (たとえば、ビューコンテキストとカスタムコンテキスト間のマッピング) に組み込まれます。モデルにバインドされているコンテキスト構造のすべてのエレメントをデータバインドに使用するわけではない場合は、未使用のコンテキスト属性がクライアントからサーバに誤って送信されないように安全性を十分に確保することをお奨めします。
このセキュリティを確保するには、プロパティビューで属性プロパティを readOnly = true に設定するか、または関連する属性を削除します。このセキュリティを確保しないと、クライアントを使用してビューコンテキストの内容に不正にアクセスすることが可能になります。一般的に、ビューコンテキストには変更禁止のデータを含めないことをお奨めします。
Web Dynpro レンダリングフレームワークには、クライアント側の JavaScript 以外に、Web Dynpro に固有であり、Web Dynpro アプリケーション全体の高度なセキュリティを確保するのに有用な拡張機能が数多く含まれています。通信プロトコルを使用したり、サードパーティのファイルをデータ出力のために統合する場合は、以下の点に注意してください。
● HTTPS
Web Dynpro アプリケーションがブラウザ内で安全に実行されるように、通信プロトコルとしてセキュア HTTP (HTTPS) を使用することをお奨めします。Web Dynpro で HTPPS を使用するには、Visual Administrator で適切なフラグを設定する必要があります。Web Dynpro アプリケーションは、HTTPS 接続用に入力したポートで実行することができます。
● Office の統合および Adobe フォームの使用
出力に Microsoft Office 文書または Adobe フォームを使用する場合は、セキュリティ確保のため、署名の入った文書のみを使用することをお奨めします。署名技術については、両社のホームページを参照してください。ユーザ管理および SSL 接続に関するセキュリティ設定については、インタラクティブフォームセキュリティガイドを参照してください。アドビドキュメントサービス設定ガイドでは、必要なユーザおよびさまざまな通信接続を設定するステップ、および SSL 接続の証明書や署名をインストールし設定するステップ、および認証について説明しています (SAP サービスマーケットプレイス: http://service.sap.com/instguides)。
Web Dynpro アプリケーションで、エンドユーザに対してコントロールの width プロパティおよび height プロパティの変更を許可する場合は、ユーザが指定した値をデフォルトでは実行時にチェックしないようにする必要があります。そうでなければ、不適切な JavaScript コマンドが含まれている値が実行時に動的に設定されることがあります。このような JavaScript コマンドは、インタフェースエレメントがブラウザに表示されるときに実行されます。このため、エンドユーザには UI エレメントの高さと幅の変更を許可しないようにする必要があります。許可すると、動的に設定された値が未確認のまま入力項目としてインポートされ、別のエンドユーザによって使用されることがあります。この場合、JavaScript コードが別のユーザのセッションで実行される可能性があります。width 属性または height 属性が実行時に設定される場合は、常にその値をチェックすることをお奨めします。この処理は特に、width 属性または height 属性がコンテキストにバインドされている場合に重要となります。未確認のデータはどのような場合でもコンテキストに含まれないようにする必要があります。
URL 生成サービスで生成した URL のチェック
生成プロセスでは、無効なJavaScript タグや事前に定義されていない不明なプロトコルが含まれていないかどうか、生成サービスによってURL がチェックされます。管理者は、default.properties ファイルの sap.url.protocols パラメータを使用して、有効なプロトコルの一覧をあらかじめ設定しておくことができます。生成サービスでは、デフォルトで HTTP、HTTPS、FTP の各プロトコルがサポートされています。
Web Dynpro アプリケーションをモデル化するには 2 つの方法があります。アプリケーションが複雑な場合には相互に呼出可能な複数の小さなアプリケーションに分割することができ、アプリケーションのロジックがさまざまに変化する場合にはフロー関連の見地に従って複数の Web Dynpro コンポーネントに分割し、それぞれのコンポーネントをプログラミングすることができます。1 つ目の方法の場合、アプリケーションへのナビゲーションが常に、呼出側の別のアプリケーションからセキュリティ関連以外 (つまり可視) の正しく有効なパラメータによって実行される必要があります。
理論的には、どのような方法でもアプリケーションをアドレス指定することが可能です。つまり、URL パラメータで無効な値を渡すことができます。Web Dynpro アプリケーションに不正に URL パラメータが渡されないようにするには、まず、パラメータの妥当性をチェックして、動作中のアプリケーション用に指定する必要があります。URL ではセキュリティ関連のパラメータを使用しないことをお奨めします。つまり、Web Dynpro アプリケーション開発者は使用されるパラメータを自分で定義し、その有効な値のみをアプリケーションに割り当てる必要があります。このため、URL でアドレスされるインタフェースビューの開始プラグに対するイベントハンドラでは、不正な要求を捕捉し、値をコンテキストに保存せず、妥当性をチェックするというようにアプリケーションロジックをプログラミングする必要があります。
Web Dynpro アプリケーションに指定した URL を使用してパラメータを設定することができるため、Web Dynpro アプリケーションを SAP エンタープライズポータルに統合すると、ポータル内で URL への直接アクセスが発生しなくなり、アプリケーション全体で高度なセキュリティを確保することができます。
Web Dynpro アプリケーションでのエラー分析の場合、ログファイルにログを書き込むことができますが、Java スタックトレースを照会する方法を使用することもできます。Java Web Dynpro アプリケーションのスタックトレースを照会するには、アプリケーション構成パラメータ Development Mode を True に設定します。
パラメータ値 DevelopmentMode = true を使用すると、オペレーティングシステムも含めて、数多くのコンポーネントのバージョン情報がクライアントに渡されることにもなります。このセキュリティギャップは、コンピュータへの攻撃を可能にしてしまいます。このため、セキュリティ関連のデータを保護するには、Development Mode パラメータを False に設定するようにしてください。
また、Java スタックトレースにはコンテキストデータ(“Cannot find file …“) への相対パスが含まれます。このため、エラー検索時にこのパスを表示しないようにするには、Development Mode パラメータを False に設定することをお奨めします。これにより、エラーページが表示されるときに、スタックトレースがレンダリングされず、一般メッセージ “Error occurred” が表示されます。また、Java スタックトレースにはコンテキストデータ (“Cannot find file …“) への相対パスが含まれます。
“スタックトレース” で説明したように Web Dynpro 構成パラメータ Development Mode を False に設定した場合でも、管理者は Web Dynpro コンソールコマンドを使用することによって、Web Dynpro ランタイム、Java Development Kit (JDK)、クライアントなどに関するすべてのバージョン情報にアクセスすることができます。管理者はコンソールコマンドを使用して、要求ごとに HTML 出力に書き込まれるサーバオペレーティングシステムや Java バージョンなどのバージョン情報に他のユーザがアクセスすることができるようにすることができます。これらのユーザは、Web Dynpro コンソールを使用してこの情報にアクセスすることができるようになります。
パスワードプロンプトの場合、サーバにアクセスすると、ビューコンテキストにバインドされている情報が SAP Web Application Server に移送されます。同じビューを再度照会した場合には、サーバからその情報が返されます。String 型のコンテキスト属性にバインドされているパスワード入力項目は、判読不能な形で表示されます。ただし、SAP Web Application Server とのデータ交換で渡されるときには、判読可能な状態になっています。
パスワードの不正認証を防ぐには、Web Dynpro アプリケーション開発者がパスワードをビューとサーバとの間のデータフローに関与しない別のコンテキスト属性に転送する必要があります。この方法以外に、(****) を設定して入力項目を判読不能にする方法があります。
トレースを実行している場合、トレース設定によってはパスワードが判読可能な形で表示されることがあります。パスワードはそのパスワードを参照した開発者本人以外には表示されませんが、パスワードが判読可能な形で表示されることもあるという点に注意してください。
SAP NetWeaver 技術プラットフォームを使用すると、標準化された方法でユーザ情報にアクセスすることができます。SAP エンタープライズポータル 6.0 に使用されるロールおよび権限は、iView として埋め込まれた Web Dynpro アプリケーションでも自動的に利用可能になります。Web Dynpro アプリケーションと SAP EP 6.0 では同じユーザストアを使用することができます。ユーザデータにアクセスするには、ユーザマネジメントエンジン (UME) の Java API を使用して、LDAP ディレクトリ、外部データベース、または SAP ユーザ管理に接続します。SAP エンタープライズポータルに統合された Web Dynpro アプリケーションでは、シングルサインオンというログオン方法を使用することができます。ポータルに統合された Web Dynpro アプリケーションが複数のバックエンドにアクセスする場合、つまり複数のバックエンドサポートを使用する場合は、論理システムのセキュリティ側面に注意してください。
