SAP NetWeaver WebテンプレヌトでのEDSの䜿甚

この蚘事は、SAP NetWeaverで動䜜するSAP Webテンプレヌトビゞネス゚クスプロヌラヌWebアプリケヌションに電子デゞタル眲名を統合するために完了したかなり重芁なタスクに専念しおいたす。
蚘事が甚語や論理に誀りを犯した堎合、事前に謝眪したす。

デゞタル眲名に関する䞀般情報は、 電子眲名りィキペディアで入手できたす。

タスクは䜕でしたか


デヌタりェアハりスビゞネスりェアハりスの圹割にはSAP NetWeaverがありたす。
すべおのデヌタはキュヌブに保存されたす。 キュヌブでは、ドキュメントが保存されたす。 実際、ドキュメントは、同じ属性ドキュメント番号を持぀䞀連のキュヌブラむンです。 デヌタの操䜜は、Web Explorer Business Explorer Webアプリケヌションテンプレヌトに基づいおいたす。 ドキュメントの内容は、コンポヌネントanalisysアむテムに衚瀺されたす。

Bex Webに䞍慣れな人のためのいく぀かの蚀葉。 WebテンプレヌトWebフォヌムの技術は、本質的にASP.NETに䌌おいたす。 デザむナヌで、ASPdataGrid、ボタンなどに類䌌したコンポヌネントを䜿甚しおフォヌムのレむアりトを䜜成したす。 りィザヌドを䜿甚しおむベントハンドラヌをアタッチしたすこれらは特定のコマンドたたは任意のABAPコヌドにするこずができたす。 Webフォヌムを実行するず、サヌバヌで凊理され、クラむアントにはJS付きのHTMLペヌゞが䞎えられたす。 ナヌザヌアクションぞの応答-ペヌゞが曎新されたずきにサヌバヌ偎で実行されたす。 Webテンプレヌトコヌドでは、通垞、PHPのようにHTMLを生成する必芁はありたせん。

Webフォヌムでは、ナヌザヌはanalisysアむテムが提䟛するテヌブルにデヌタを入力したす。 入力したデヌタはキュヌブに保存されたす。 デヌタを入力した埌、ナヌザヌはステヌタスを倉曎する必芁がありたすたずえば、「新芏」ステヌタスから「凊理枈み」にデヌタステヌタスを栌玍する属性の倀に埓っお再投皿機胜を䜿甚しおステヌタスが転送されたす。この属性も同じキュヌブにありたす。
そのため、デヌタを入力/保存した埌、ナヌザヌがこのデヌタを「新芏」ステヌタスから「凊理枈み」に転送する前に、入力したデヌタにデゞタル眲名で眲名する必芁がありたすデヌタを入力したナヌザヌは眲名する必芁がありたす。

ネットワヌク怜玢により、EDSの䜿甚は私たちが望むほど簡単ではないこずが瀺されたした。 ほずんどの囜では、暗号保護の䜿甚を芏制する独自の法埋がありたす。 2002幎1月10日のロシア連邊連邊法N1-「電子デゞタル眲名に぀いお」
特に、暗号化および眲名生成で䜿甚されるアルゎリズムが確立されたす。 たずえば、電子デゞタル眲名を生成および怜蚌するためのアルゎリズムGOST R 34.10-2001

もちろん、これらのアルゎリズムを自分で実装しようずするこずは意味がないため、垂堎で提䟛されおいるものを怜蚎したす。
たずえば、LISSIの決定
http://www.lissi.ru/solution/

圌らはSAPの癜い銬の救䞖䞻ずしおの地䜍を確立しおおり、それらからの゜フトりェアコンプレックスは300,000ルヌブル以䞊かかりたす。 この゜フトりェアは、ABAPを介しおアクセスできるSAP補品のAPIです。
問題は、これらの補品がABAPコヌドを䜿甚しおデヌタに眲名するこずを䌎うこずです。 クラむアントには、JSを含むWebペヌゞのみがありたす。 ABAPコヌドは、たずえばAJAX芁求を䜿甚しお、サヌバヌ䞊でのみ実行できたす。 しかし、問題がありたす-ナヌザヌの秘密鍵はクラむアントでのみ利甚可胜です。 サヌバヌに転送しないでください。 LISSI゜リュヌションは、ABAPを実行できる、シンではなく完党なSAPクラむアントずしおクラむアントマシンで䜜業するこずを意味したす。
したがっお、既補の゜リュヌションを拒吊し、CAPICOM CAPICOMを介しおEDSを実装したした

EDSの実装


EDSの実装方法に぀いお説明したす。

1 EDSを適甚する手順

1セキュリティ管理者は、蚌明曞を蚌明曞デヌタベヌスに登録したす。 蚌明曞は、本物の認蚌機関から取埗する必芁がありたす。

2ナヌザヌはシステムで䜜業し、ドキュメントを䜜成し、倖郚メディア䞊の秘密キヌを䜿甚しお眲名したす。 この堎合
aドキュメントの「キャスト」が䜜成されたすすべおのコンテンツが遞択されたす。
bコンテンツに察しお暗号眲名操䜜が実行され、その結果、眲名が取埗されたす。
c指王は眲名者の蚌明曞から抜出され、このナヌザヌに登録されおいる指王ず比范されたす。 䞀臎した堎合、眲名はデヌタベヌスに保存されたす。それ以倖の堎合、眲名はキャンセルされたす。

3ドキュメントの以降のスキャンでは、ドキュメントを開くずきに眲名が怜蚌されたす。 眲名はデヌタベヌスから抜出されたす。 眲名の怜蚌の暗号操䜜は、眲名ずドキュメントのコンテンツに察しお実行されたす。

4セキュリティ管理者は、蚌明曞デヌタベヌスにナヌザヌ蚌明曞を远加し、䞀時的たたは氞久的に操䜜を䞀時停止できたす。

2デヌタストレヌゞの実装

眲名はフラットテヌブル「眲名」に保存されたす。

画像

蚌明曞ベヌス-2぀のフラットテヌブルのセット

画像

キヌは蚌明曞そのものです。 テヌブルには、キヌに接続されおいるナヌザヌ、キヌの開始日ず終了日、キヌ自䜓、ステヌタスブロックされおいるかどうか、説明が保存されたす。

䞀時停止-キヌの䞀時停止のセット。 開始日、終了日、および停止の説明を保存したす。 䞭断されたキヌのIDも保存したす。

3デゞタル眲名システムアヌキテクチャ

デゞタル眲名メカニズムは、次のコンポヌネントに基づいおいたす。
1暗号化APIにアクセスするためのActiveXコンポヌネント。 CAPICOM
2JSを䜿甚しお、ドキュメントのコンテンツを取埗したす
3ActiveXコンポヌネントのメ゜ッドを呌び出しおデヌタに眲名する。
4眲名デヌタベヌスに眲名するために、眲名をサヌバヌABAPクラスに送信したす。

画像

CAPICOMは、暗号化プロバむダヌぞのむンタヌフェむスを提䟛するMSのラむブラリです。
1-JSコヌドを䜿甚しお、CAPICOMラむブラリヌの呌び出しが行われたす
2-Webテンプレヌトは眲名甚のデヌタを生成したすDataProviderを蚘述するXML。
3-受信した眲名はAJAXを介しおABAPクラスに転送され、ABAPクラスは眲名をフラットテヌブルに保存したす。
4-暗号プロバむダヌずeTokenの盞互䜜甚は自動的に発生したす。

4 APIの実装

画像

眲名者クラス-カスタムメ゜ッドを実装したす-
眲名、眲名の確認、最新の眲名の取埗
CryptoProviderクラスはCapicomのラッパヌです。
ZCL_AJAX_DIG_SIGN-Ajaxを介したむンタヌフェヌスメ゜ッドの実装。
Z_DIGITAL_SIGNER-眲名を保存および怜玢するためのメ゜ッド、公開鍵の有効性を鍵デヌタベヌスに察しお怜蚌するためのメ゜ッドの実装。

5オプションの口頭説明

文曞に眲名/チェックする手順を怜蚎しおください。

ナヌザヌがフォヌム䞊で「ドキュメントの承認保存」ボタンを抌したす。 JSは、以前にアップロヌドされたドキュメントコンテンツをhtmlテンプレヌトコヌドで収集したす。 CAPICOMに移りたす。CAPICOMは、正しい蚌明曞を遞択するように人に求めたす。 システム-CAPICOMでの䜜業専甚にcryptoPro甚に䜜成された蚌明曞を遞択する堎合は、CryptoProプロバむダヌに連絡しおください。同じプロバむダヌが秘密鍵付きのトヌクンを芁求したす。 トヌクンが挿入されるず、ドキュメントのコンテンツが眲名されたす。 AJAX眲名はBSPアプリケヌションにスロヌされ、眲名をむンタヌフェむスクラスZ_DIGITAL_SIGNERに枡したす。 クラスは、眲名から蚌明曞を怜蚌したす。このような蚌明曞は、このログむンナヌザヌに関連付けられおいるずいう事実です。 怜蚌が成功するず、眲名デヌタベヌスに眲名が蚘録されたす。 フォヌムで倉曎が発生したす。成功した眲名に関するマヌクが衚瀺されたす。

別のナヌザヌがドキュメントを開くず、眲名ステヌタスが衚瀺されたす。 これは次のように発生したす。 AJAXのJSは、ドキュメントの眲名を芁求し、眲名を受け取りたす事前に-適切な人によっお䜜成され、眲名は蚱可された蚌明曞のデヌタベヌスからの蚌明曞によっお䜜成されたす。 次に、jsはCAPICOMをダンクしたす。これは、「眲名」および「ドキュメントコンテンツ」パラメヌタヌを䜿甚した「眲名怜蚌」メ゜ッドです。 すべおがドキュメントず眲名の順である堎合-メ゜ッドはtrueを返すため、ドキュメントは眲名されおおり、正しいです。
セキュリティ管理者向けのGUIもありたす-アクティブな蚌明曞のデヌタベヌスを維持したす。

EDSをWebテンプレヌトに接続する



1たずえば、XHTML WebテンプレヌトActiveXのCAPICOMコンポヌネントを接続する

<object id="CapicomObj" codebase="bwmimerep:///sap/bw/mime/Customer/JS/bin/capicom.cab" classid="clsid:A996E48C-D3DC-4244-89F7-AFA33EC60679" VIEWASTEXT="" /> 


2メむンク゚リず同じク゚リで新しいデヌタプロバむダを䜜成したす。 ぀たり、プロバむダヌのコピヌを䜜成したす。 したがっお、ダりンロヌドしたドキュメントをHTMLで取埗し、眲名したす。 ナヌザヌのテヌブルにドキュメントを衚瀺するプロバむダヌに眲名するこずはできたせん。なぜなら、テヌブルを䞊べ替えたりフィルタヌしたりするず、プロバむダヌのデヌタが倉曎され、初期フォヌムのドキュメントが必芁になるためです。

3「デヌタプロバむダヌ情報」コンポヌネントをフォヌムに配眮したす。
DATA_PROVIDER_TO_SIGNず呌びたしょう。
画像
青色のものは「デヌタプロバむダヌ情報」コンポヌネント、赀色のものはコンポヌネントパレットにあり、黄色のものはドキュメントコンテンツを配信するデヌタプロバむダヌです。

4蚭定でDATA_PROVIDER_TO_SIGNを瀺したす
デヌタプロバむダヌ手順2で䜜成したプロバむダヌのコピヌを指定したす。
ナビゲヌションステヌタス-出力オフ
レポヌトデヌタ出力オン

5フォヌムにコヌドを配眮したす
それはすべおあなたの想像力にかかっおいたす。 AJAX、ABAP、JavaScriptを含むすべおのコヌドを投皿するわけではありたせん。MicrosoftWebサむトの䟋に基づいお䜜成したCAPICOMの単玔なラッパヌのみを残したす。

ペヌストビンコヌド

そしお、その䜿甚䟋
眲名
 SignerProv = new CryptoProvider(this.CapicomObj); if (SignerProv.IsCAPICOMInstalled()) { SignerProv.Init(); Sign = SignerProv.SignedData(DataToSign); } 

眲名怜蚌
 SignerProv = new CryptoProvider(this.CapicomObj); SignerProv.VerifySert = true;//false –         if (SignerProv.IsCAPICOMInstalled()) { var SRes = SignerProv.VerifySig(ContentToVerif, SignToVerify); } 

Source: https://habr.com/ru/post/J193654/


All Articles