Oracle Service RegistryのACLデモでは、Oracle Service RegistryのACL Application Programming Interface(API)の機能およびこのAPIの使用方法が示されます。
ACL拡張機能は、選択したユーザーまたはグループに対して権限を付与するか、権限を取り消すために使用します。ACLを作成、保存、削除、取得および検索する方法を学習します。
Oracle Service RegistryのSecurityのACLデモ・セットには、Oracle Service RegistryのクライアントAPIの学習を支援する次のデモが含まれています。
Create Create ACLを使用して、1人のユーザーに対し、別のユーザーのビジネス・エンティティにサービスを作成する権限を付与する方法のデモンストレーションです。
Save Save ACLを使用して、1人のユーザーに対し、別のユーザーのビジネス・エンティティを更新する権限を付与する方法のデモンストレーションです。
Delete Delete ACLを使用して、1人のユーザーに対し、別のユーザーのビジネス・エンティティを削除する権限を付与する方法のデモンストレーションです。
Get Get ACLを使用して、選択したユーザーから、ビジネス・エンティティのビジネスの詳細を取得する権限を取り消す方法のデモンストレーションです。
Find Find ACLを使用して、選択したユーザーからfind_business操作内のビジネス・エンティティを非表示にする方法のデモンストレーションです。
Oracle Service Registryがすでにインストールされ、環境変数REGISTRY_HOMEにレジストリのインストール場所が設定されていることを想定しています。
Oracle Service Registryのデモを実行するには、レジストリが実行中である必要があります。
デモを構成する必要があります。構成システムには、グローバルとローカルの2つのレベルがあります。グローバル・レベルで定義されたプロパティは、ローカル・レベルで上書きできます。グローバル・プロパティは、次のファイルにあります。
Windows: | %REGISTRY_HOME%¥demos¥env.properties |
UNIX: | $REGISTRY_HOME/demos/env.properties |
Oracle Service Registryのインストール中に設定された値はそのまま使用でき、値の変更はすべてのデモに影響を与えます。単一のデモについて(つまりローカル・レベルで)プロパティの値を再定義する必要がある場合は、env.propertiesを編集してください。このファイルは、ファイルrun.sh(run.bat)と同じディレクトリにあります。ACLデモのローカル・レベルのプロパティは、次のファイルからロードされます。
Windows: | %REGISTRY_HOME%¥demos¥security¥acl¥env.properties |
UNIX: | $REGISTRY_HOME/demos/security/acl/env.properties |
表15 デモで使用されるプロパティ
名前 | デフォルト値 | 説明 |
---|---|---|
uddi.demos.user.john.name | demo_john | 1人目のユーザーの名前 |
uddi.demos.user.john.password | demo_john | 1人目のユーザーのパスワード |
uddi.demos.user.jane.name | demo_jane | 2人目のユーザーの名前 |
uddi.demos.user.jane.password | demo_jane | 2人目のユーザーのパスワード |
uddi.demos.url.publishing | http://localhost:8888/registry/uddi/publishing | 公開Webサービス・ポートのURL |
uddi.demos.url.security | http://localhost:8888/registry/uddi/security | セキュリティWebサービス・ポートのURL |
この項では、すべてのデモで使用されるプログラミング・パターンを、Findデモを例にして説明します。このデモのソース・コードは次のファイルにあります。
Windows: | %REGISTRY_HOME%¥demos¥security¥acl¥src¥demo¥uddi¥acl¥Find.java |
UNIX: | $REGISTRY_HOME/demos/security/acl/src/demo/uddi/acl/Find.java |
mainメソッドは、複数のロジックの部分に分けられます。最初の部分は、ユーザーのデモを構成するために使用します。Goodユーザーとは許可のACLを受け取るユーザーを表し、Badユーザーとは禁止のACLを受け取るユーザーを表します。
2つ目の部分では、情報が追加されたsave_business操作が実行されます。ACLはcategoryBagに設定されています。次のセクションでは、Badユーザーが名前でビジネス・エンティティを検索しようとして失敗し、最終的にはGoodユーザーがビジネス・エンティティを見つけます。
String name = UserInput.readString("Enter business name", "ACL find demo"); String description = UserInput.readString("Enter description", "Demonstration of find-allowed, find-denied ACLs"); String searchName = UserInput.readString("Enter search string", "ACL%"); String owner = UserInput.readString("Enter entity owner", "admin"); String password = UserInput.readString("Enter owner's password", "changeit"); String loginGood = UserInput.readString("Enter good user's login", DemoProperties.getProperty(USER_JOHN_NAME)); String passwordGood = UserInput.readString("Enter good user's password", DemoProperties.getProperty(USER_JOHN_PASSWORD)); String loginBad = UserInput.readString("Enter bad user's login", DemoProperties.getProperty(USER_JANE_NAME)); String passwordBad = UserInput.readString("Enter bad user's password", DemoProperties.getProperty(USER_JANE_PASSWORD)); System.out.println(); UDDI_Security_PortType security = getSecurityStub(); String authInfoOwner = getAuthInfo(owner, password, security); Save_business saveBusiness = createSaveBusiness(name, description, loginGood, loginBad, authInfoOwner); BusinessDetail result = saveBusiness(saveBusiness); printBusinessDetail(result); discardAuthInfo(authInfoOwner, security); System.out.println(" "); System.out.println("Finding business entity where"); String authInfoGood = getAuthInfo(loginGood, passwordGood, security); Find_business findBusiness = createFindByName(searchName, authInfoGood); BusinessList businessList = findBusiness(findBusiness); printBusinessList(businessList); discardAuthInfo(authInfoGood, security); System.out.println(" "); System.out.println("Finding business entity where"); String authInfoBad = getAuthInfo(loginBad, passwordBad, security); findBusiness = createFindByName(searchName, authInfoBad); businessList = findBusiness(findBusiness); printBusinessList(businessList); discardAuthInfo(authInfoGood, security);
createSaveBusiness操作を使用して、Save_businessオブジェクトが作成されます。ACLは、uddi:systinet.com:acl tModelKeyをkeyedReferenceにしてkeyedReferenceGroupに保存されます。ここではtModelKeyによってACLのtModelKeyが指定され、keyValueによってユーザーまたはグループのログイン名が保持され、最後にkeyNameを使用してkeyValue内のユーザーとグループが区別されます。
public static Save_business createSaveBusiness(String name, String description, String goodUser, String badUser, String authInfo) throws InvalidParameterException { System.out.println("name = " + name); System.out.println("description = " + description); System.out.println("goodUser = " + goodUser); System.out.println("badUser = " + badUser); BusinessEntity businessEntity = new BusinessEntity(); businessEntity.addName(new Name(name)); businessEntity.addDescription(new Description(description)); CategoryBag categoryBag = new CategoryBag(); businessEntity.setCategoryBag(categoryBag); KeyedReferenceGroup aclGroup = new KeyedReferenceGroup("uddi:systinet.com:acl"); aclGroup.addKeyedReference(new KeyedReference("uddi:systinet.com:acl:find-allowed", goodUser, "user")); aclGroup.addKeyedReference(new KeyedReference("uddi:systinet.com:acl:find-denied", badUser, "user")); categoryBag.addKeyedReferenceGroup(aclGroup); Save_business save = new Save_business(); save.addBusinessEntity(businessEntity); save.setAuthInfo(authInfo); return save; }
find_business操作では、問合せを実行するユーザーの識別に使用されるauthInfoパラメータを取ります。
public static Find_business createFindByName(String name, String authInfo) throws InvalidParameterException { System.out.println("name = " + name); Find_business find_business = new Find_business(); find_business.addName(new Name(name)); find_business.setMaxRows(new Integer(MAX_ROWS)); find_business.setAuthInfo(authInfo); find_business.addFindQualifier("approximateMatch"); return find_business; }
この項では、Oracle Service RegistryのACLデモをビルドして実行する方法を示します。
デモが適切に構成され、Oracle Service Registryが実行中であることを確認してください。
次のディレクトリに移動します。
Windows: | %REGISTRY_HOME%¥demos¥security¥acl |
UNIX: | $REGISTRY_HOME/demos/security/acl |
次のコマンドを使用して、デモをビルドします。
Windows: | run.bat make |
UNIX: | ./run.sh make |
![]() | 注意 |
---|---|
Windowsプラットフォームでデモをコンパイルすると、次のテキストが表示されることがあります。 A subdirectory or file ..\..\common\.\build\classes already exists. これは予想される現象であり、問題を示すものではありません。 |
利用可能なすべてのコマンドのリストを表示するには、次のコマンドを実行します。
Windows: | run.bat help |
UNIX: | ./run.sh help |
選択したデモを実行するには、runコマンドのパラメータにデモの名前を指定して実行します。たとえば、Findデモを実行するには、次のように起動します。
Windows: | run.bat Find |
UNIX: | ./run.sh Find |
このデモの出力は次のようになります。
Running Find demo... Saving business entity where Enter business name [ACL find demo]: Enter description [Demonstration of find-allowed, find-denied ACLs]: Enter search string [ACL%]: Enter entity owner [admin]: Enter owner's password [changeit]: Enter good user's login [demo_john]: Enter good user's password [demo_john]: Enter bad user's login [demo_jane]: Enter bad user's password [demo_jane]: Using Security at url https://mycomp.com:8443/registry/uddi/security .. done Authenticating the user admin .. done name = ACL find demo description = Demonstration of find-allowed, find-denied ACLs goodUser = demo_john badUser = demo_jane Using Publishing at url https://mycomp.com:8443/registry/uddi/publishing .. done Save business in progress ... done Business 1 : uddi:91ba8390-a8e0-11d8-b2ad-779f83c0b2ad <businessEntity businessKey="uddi:91ba8390-a8e0-11d8-b2ad-779f83c0b2ad" xmlns="urn:uddi-org:api_v3"> <name>ACL find demo</name> <description>Demonstration of find-allowed, find-denied ACLs</description> <categoryBag> <keyedReferenceGroup tModelKey="uddi:systinet.com:acl"> <keyedReference tModelKey="uddi:systinet.com:acl:find-allowed" keyName="user" keyValue="demo_john"/> <keyedReference tModelKey="uddi:systinet.com:acl:find-denied" keyName="user" keyValue="demo_jane"/> </keyedReferenceGroup> </categoryBag> </businessEntity> Logging out .. done Finding business entity where Authenticating the user demo_john .. done name = ACL% Using Inquiry at url http://mycomp.com:8888/registry/uddi/inquiry .. done Search in progress .. done Displaying 1 of 1, starting at position 1 Business 1 : uddi:91ba8390-a8e0-11d8-b2ad-779f83c0b2ad <businessInfo businessKey="uddi:91ba8390-a8e0-11d8-b2ad-779f83c0b2ad" xmlns="urn:uddi-org:api_v3"> <name>ACL find demo</name> <description>Demonstration of find-allowed, find-denied ACLs</description> </businessInfo> Logging out .. done Finding business entity where Authenticating the user demo_jane .. done name = ACL% Using Inquiry at url http://mycomp.com:8888/registry/uddi/inquiry .. done Search in progress .. done Displaying 0 of 0, starting at position 1 Nothing found Logging out .. done
デモを再ビルドするには、run.bat clean(./run.sh clean)を実行してclassesディレクトリを削除し、run.bat make(./run.sh make)を実行してデモ・クラスを再ビルドします。