Zen のセキュリティ
Zen フォームとシステム構成設定の組み合わせを使用して、Zen にアプリケーション・レベルのセキュリティを実現できます。背景情報は、"Caché セキュリティ管理ガイド" の “アセットおよびリソース” の章にある “アプリケーション・リソースとその特権” を参照してください。操作方法は、次の “アプリケーションへのアクセスの制御” を参照してください。
Zen アプリケーション内の個々のページおよびコンポーネントへのアクセスを制限する方法は、他にもあります。この章の後半にある “ページへのアクセスの制御” および “コンポーネントへのアクセスの制御” を参照してください。
アプリケーションへのアクセスの制御
既定では、ユーザが Zen アプリケーションを起動すると、Caché 標準のユーザ名とパスワードのダイアログ・ボックスが表示され、ユーザはログインを要求されます。アプリケーションでカスタム・ログイン・フォームを表示する場合は、そのフォームを以下のように作成し、構成する必要があります。
-
新しい Zen ページ・クラスを作成します。
-
XData Contents 内で、<loginForm> コンポーネントを設定します。<loginForm> は特別な目的を持ったコンポーネントで、ログイン・ページの開発を簡素化し、すべてのログイン処理を CSP で扱うようにします。
-
<loginForm> が以下の制御を含むことを確認してください。
-
ユーザ名に対する <text name="CacheUserName"/>
-
パスワードに対する <password name="CachePassword"/>
これらの各コントロールに name 属性が指定されていること、対応する name の値が、正確に上記の "CacheUserName" および "CachePassword" のとおりになっていることを確認してください。コントロールのその他の属性は、必要に応じて指定できます。各コントロールの label は入力する内容をユーザに知らせるうえで役立ちます。
-
-
<submit> ボタンを指定します。既定では、Enter キーを押すことでフォーム送信のトリガとなります。この動作を望まない場合、ondefault="return true;" 属性を <loginForm> 定義に追加してください。最小限のユーザ・ログイン・フォームは以下のようになります。
<page xmlns="http://www.intersystems.com/zen" title=""> <loginForm id="loginForm" > <text name="CacheUserName" label="User:" /> <password name="CachePassword" label="Password:" /> <submit caption="Login" /> </loginForm> </page>
-
必要に応じて、フォームのその他の特性を定義します。
-
管理ポータルを起動します。
-
[ウェブアプリケーション] ページに移動します ([システム管理]→[セキュリティ]→[アプリケーション]→[ウェブアプリケーション])。
Note:この手順の背景情報は、“Zen アプリケーション・プログラミング” の章の “Zen アプリケーションの構成” を参照してください。
-
一覧から該当の Web アプリケーションを探し出し、その [編集] ボタンをクリックします。[ウェブアプリケーション] ページが表示されます ([システム管理]→[セキュリティ]→[アプリケーション]→[ウェブアプリケーション])。
-
[ログイン・ページ] フィールドに、新しい Zen ページ・クラスのパッケージ名とクラス名を入力します。パスの先頭には、次のように必ず [ウェブアプリケーション名] を指定します。
/csp/myNamespace/myPackage.myLoginPage.cls
-
[保存] をクリックします。
<password> コンポーネントを使用して、パスワードを変更するフォームも作成できます。次のように、古いパスワードの値を含むコントロールの名前として "CacheOldPassword" を使用し、新しいパスワードの値を含むコントロールの名前として "CachePassword" を使用し、ユーザが確認のために新しいパスワードを再入力するためのコントロールの名前として "CacheRepeatPassword" を使用する必要があります。また、アプリケーションを構成するときは、この Zen ページをログイン・ページとしてではなく、パスワードの変更ページとして識別する必要があります。
<page xmlns="http://www.intersystems.com/zen" title="">
<form>
<text name="CacheUserName" label="Name:"/>
<password name="CacheOldPassword" label="Old Password:"/>
<password name="CachePassword" label="New Password:"/>
<password name="CacheRepeatPassword" label="Retype New Password:"/>
<submit caption="Submit"/>
</form>
</page>
ページへのアクセスの制御
各 Zen ページには、RESOURCE というクラス・パラメータがあります。このパラメータは、このページの表示、またはクライアントからのサーバ側メソッドの呼び出しのために現在のユーザが USE 特権を保持する必要のあるシステム Resource の名前を指定します。
RESOURCE などのクラス・パラメータに関する背景情報は、“Zen アプリケーション・プログラミング” の章の “ページ・クラスのパラメータ” を参照してください。システム Resource および USE 特権の概要は、"Caché セキュリティ管理ガイド" の “アセットおよびリソース” の章にある “アプリケーション・リソースとその特権” を参照してください。
コンポーネントへのアクセスの制御
各 Zen コンポーネント (%ZEN.Component.componentOpens in a new tab のサブクラス) には、%resource というサーバのみのプロパティがあります。このプロパティは、このコンポーネントをページ・コンポーネントのセットに追加するかどうかを指定します。このコンポーネントは、このプロパティを resource という名前の属性として XML に投影します。このリソースは、コンポーネントを XData Contents に追加する際に使用できます。以下はその例です。
<button id="myButton" caption="Press Me" resource="ADMIN" />
resource 値が指定されている場合、現在のユーザはこのリソースに対して USE 特権を持つ必要があります。この特権がない場合、ユーザがページを表示しようとしても、コンポーネントはページ・コンポーネントのセットに追加されません。このプロパティは、クライアントからは使用できません。
従来のアプリケーションのアクセス
管理ポータルの [Web アプリケーションの構成] ページを使用すると、“非認証のアクセス” を許可できます (“Zen アプリケーションの構成” を参照)。 この設定により、Cache 5.2 より前に実装されたアプリケーションが、変更を加えることなく、引き続き機能します。この設定は、プロダクション・システム上のどのようなアプリケーションにも使用しないでください。プロダクション・サーバでこの設定を使用するのは、従来のアプリケーションで、既存のアプリケーションがロールとリソースによるアクセス制御で安全に実行できるように変更されるまでの短い期間のみとしてください。開発システムでは、開発中のアプリケーションが Caché セキュリティとの相互作用の準備が整うまで、アプリケーションを “非認証のアクセス” で実行できるようにすると役立つことがあります。ただし、これに該当する Web アプリケーションの %UnknownUser は、ロールとして %ALL で実行されており、オペレーティング・システム・レベルの特権に関しては、システムの起動や停止に使用されるアカウントの特権を持つ可能性があることに注意する必要があります。