Permission(パーミッション)  目次

Oracle Service RegistryのPermission(パーミッション)デモは、Oracle Service RegistryのApplication Programming Interface(API)の機能およびこのAPIの使用方法のデモンストレーションを行うために使用します。

パーミッションを設定および検索する方法を学習します。

Oracle Service RegistryのPermission(パーミッション)デモ・セットには、Oracle Service RegistryのクライアントAPIの学習を支援する次のデモが含まれています。

SetPermission Set_permissionオブジェクトをビルドして入力し、UDDIレジストリのPermissionスタブを取得し、set_permissionコールを実行する方法のデモンストレーションです。

WhoHasPermission Who_hasPermissionオブジェクトをビルドして入力し、UDDIレジストリのPermissionスタブを取得し、who_hasPermissionコールを実行する方法のデモンストレーションです。

GetPermission Get_permissionオブジェクトをビルドして入力し、UDDIレジストリのPermissionスタブを取得し、get_permissionコールを実行する方法のデモンストレーションです。

前提条件および準備手順: コード  目次

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.shrun.bat)と同じディレクトリにあります。 Permissionデモのローカル・レベルのプロパティは、次のファイルからロードされます。

Windows: %REGISTRY_HOME%¥demos¥security¥permission¥env.properties
UNIX: $REGISTRY_HOME/demos/security/permission/env.properties

表14 デモで使用されるプロパティ

名前デフォルト値説明
uddi.demos.url.permissionhttp://localhost:8888/registry/uddi/permissionパーミッションWebサービス・ポートのURL
uddi.demos.url.securityhttp://localhost:8888/registry/uddi/securityセキュリティWebサービス・ポートのURL

プレゼンテーションおよび機能プレゼンテーション  目次

この項では、すべてのデモで使用されるプログラミング・パターンを、SetPermissionデモを例にして説明します。このデモのソース・コードは次のファイルにあります。

Windows: %REGISTRY_HOME%¥demos¥security¥permission¥src¥demo¥uddi¥permission¥SetPermission.java
UNIX: $REGISTRY_HOME/demos/security/permission/src/demo/uddi/permission/SetPermission.java

mainメソッドは、2つの部分に分けられます。最初の部分では、ユーザーがデモを構成します。デモを実行する予定の、パーミッションの設定が許可されるユーザーの資格証明が読み取られます。次にパーミッションのタイプ、名前、アクションが読み取られます。

2つ目の部分では、デモが実行されます。Securityスタブが検索され、ユーザーが認証されます。次にSet_permissionオブジェクトが作成され、SOAPを経由してset_permission操作としてUDDIレジストリに送信されます。この操作に存在しないパーミッションをユーザーが明示的に宣言していた場合は、該当するパーミッションが削除されます。

String user = UserInput.readString("Enter login","admin");
String password = UserInput.readString("Enter password","changeit");
String principal = UserInput.readString("Enter principal type", PrincipalType.user.getValue());
String login = UserInput.readString("Enter login/group name",
                                                        DemoProperties.getProperty(USER_JOHN_NAME));
String type = UserInput.readString("Enter permission type",
                                       "org.systinet.uddi.security.permission.ApiManagerPermission");
String name = UserInput.readString("Enter permission name",
                                                 "org.systinet.uddi.client.taxonomy.v3.TaxonomyApi");
String action = UserInput.readString("Enter action", "download_taxonomy");
System.out.println();

UDDI_Security_PortType security = getSecurityStub();
String authInfo = getAuthInfo(user, password, security);
Set_permission set = createSetPermission(login, principal, name, type, action, authInfo);
setPermission(set);
discardAuthInfo(authInfo, security);

メソッドcreateSetPermissionによって、set_permission操作を表すオブジェクトが作成されます。

public static Set_permission createSetPermission(String login, String principal,
  String name, String type, String action, String authInfo) throws InvalidParameterException {
    System.out.println(principal+", login/name = " + login);
    System.out.println("type = " + type);
    System.out.println("name = " + name);
    System.out.println("action = " + action);

    PermissionDescriptors permissionDescriptors = new PermissionDescriptors();
    permissionDescriptors.setPrincipal(new Principal(login, PrincipalType.getPrincipalType(principal)));
    PermissionDescriptor descriptor = new PermissionDescriptor();
    descriptor.setName(name);
    descriptor.setType(type);
    descriptor.addAction(action);
    permissionDescriptors.addPermissionDescriptor(descriptor);

    Set_permission set = new Set_permission();
    set.setPermissionDescriptors(permissionDescriptors);
    set.setAuthInfo(authInfo);

    return set;
}

ヘルパー・メソッドgetPermissionStub()によって、URL_PERMISSIONプロパティで指定されたURLでリスニングするWebサービスのUDDI Permissionスタブが返ります。

public static PermissionApi getPermissionStub() throws SOAPException {
// you can specify your own URL in property - uddi.demos.url.permission
String url = DemoProperties.getProperty(URL_PERMISSION, "http://localhost:8888/registry/uddi/permission");
System.out.print("Using Permission API at url " + url + " ..");
PermissionApi permission = PermissionStub.getInstance(url);
System.out.println(" done");
return permission;
}

Oracle Service RegistryのAPIコールset_permissionが、setPermissionメソッドで実行されます。

public static void setPermission(Set_permission set) throws
  SOAPException, PermissionException {
    PermissionApi permissionApi = getPermissionStub();
    System.out.print("Save in progress ...");
    permissionApi.set_permission(set);
    System.out.println(" done");
}

デモのビルドと実行  目次

この項では、Oracle Service Registryのパーミッション・デモをビルドして実行する方法を示します。

  1. デモが適切に構成され、Oracle Service Registryが実行中であることを確認してください。

  2. 次のディレクトリに移動します。

    Windows: %REGISTRY_HOME%¥demos¥security¥permission
    UNIX: $REGISTRY_HOME/demos/security/permission

  3. 次のコマンドを使用して、デモをビルドします。

    Windows: run.bat make
    UNIX: ./run.sh make

    注意注意

    Windowsプラットフォームでデモをコンパイルすると、次のテキストが表示されることがあります。

    A subdirectory or file ..\..\common\.\build\classes already exists.

    これは予想される現象であり、問題を示すものではありません。

  4. 利用可能なすべてのコマンドのリストを表示するには、次のコマンドを実行します。

    Windows: run.bat help
    UNIX: ./run.sh help

  5. 選択したデモを実行するには、runコマンドのパラメータにデモの名前を指定して実行します。たとえば、SetPermissionデモを実行するには、次のように起動します。

    Windows: run.bat SetPermission
    UNIX: ./run.sh SetPermission

    このデモの出力は次のようになります。

    Running SetPermission demo...
    Setting permission where
    Enter login [admin]:
    Enter password [changeit]:
    Enter principal type [user]:
    Enter login/group name [demo_john]:
    Enter permission type [org.systinet.uddi.security.permission.ApiManagerPermission]:
    Enter permission name [org.systinet.uddi.client.taxonomy.v3.TaxonomyApi]:
    Enter action [download_taxonomy]:
    
    Using Security at url https://mycomp.com:8443/registry/uddi/security .. done
    Logging in .. done
    user, login/name = demo_john
    type = org.systinet.uddi.security.permission.ApiManagerPermission
    name = org.systinet.uddi.client.taxonomy.v3.TaxonomyApi
    action = download_taxonomy
    
    Using Permission API at url https://mycomp.com:8443/registry/uddi/permission .. done
    Save in progress ... done
    Logging out .. done
  6. デモを再ビルドするには、run.bat clean./run.sh clean)を実行してclassesディレクトリを削除し、run.bat make./run.sh make)を実行してデモ・クラスを再ビルドします。