BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > BPM トピック > BPM クライアント アプリケーション プログラミング > セキュリティ レルムのコンフィグレーション |
BPM クライアント アプリケーション プログラミング
|
セキュリティ レルムのコンフィグレーション
この章では、セキュリティ レルムのコンフィグレーション方法について説明します。内容は以下のとおりです。
ビジネス プロセスの管理に関連するタスクに対するセキュリティ実装の詳細については、『WebLogic Integration Studio ユーザーズ ガイド』の「データの管理」を参照してください。
セキュリティに関する基本情報の取得
com.bea.wlpi.server.principal.WLPIPrincipal メソッド、およびコンビニエンス com.bea.wlpi.client.common.WLPI クラス メソッドの一方または両方を使用して、以下のセキュリティ関連情報を取得できます。
これらのタイプのセキュリティ情報を取得する方法とコード例を以下に示します。
セキュリティ レルムのクラス名の取得
WebLogic Server セキュリティ レルムのクラス名を取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。
public java.lang.String getSecurityRealmClassName(
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、セキュリティ レルムのクラスの完全修飾名を返します。
たとえば、次のコードでは、WebLogic Server セキュリティ レルムのクラス名が取得されて、文字列 security_class に保存されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。
String security_class = principal.getSecurityRealmClassName();
getSecurityRealmClassName() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。
セキュリティ レルムの管理性および永続性のチェック
管理可能セキュリティ レルムでは、アプリケーションからグループおよびユーザのセキュリティ情報を更新できます。管理不可能セキュリティ レルムでは、アプリケーションからグループおよびユーザのセキュリティ情報を表示することのみができます。詳細については、BEA WebLogic Server のドキュメント セットに含まれている『WebLogic Server 管理者ガイド』の「セキュリティの管理」を参照してください。このマニュアルは、BEA WebLogic Server マニュアル セットの次の URL にあります。
http://edocs.beasys.co.jp/e-docs/wls/docs70/adminguide/index.html
セキュリティ レルムが管理可能かどうか調べるには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。
public boolean isManageableSecurityRealm(
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、セキュリティ レルムが管理可能であれば(そのレルムで ManageableRealm インタフェースが実装されているのであれば)true を返し、管理不可能であれば false を返します。
セキュリティ レルムが管理可能かつ永続的であるかどうかを調べるには、次の com.bea.wlpi.client.common.WLPI メソッドを使用します。
public boolean allowSecurityRealmUpdates(
) throws java.lang.IllegalStateException
このメソッドは、セキュリティ レルムが管理可能かつ永続的であれば true を返し、いずれかの特徴を欠く場合は false を返します。
たとえば、次のコードでは、セキュリティ レルムが管理可能かどうか調べます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。
Boolean ismanageable = principal.isManageableSecurityRealm();
isManageableSecurityRealm() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。allowSecurityRealmUpdates() メソッドの詳細については、Javadoc の com.bea.wlpi.client.common.WLPI を参照してください。
サーバの URL の取得
WebLogic Integration プロセス エンジンの URL を取得するには、次の com.bea.wlpi.client.common.WLPI メソッドを使用します。
public java.lang.String getURL()
このメソッドはプロセス エンジンの URL を返します。現在ログオンしていない場合は、null を返します。
たとえば、次のコードは、プロセス エンジンの URL を取得して、url に保存します。
String url = com.bea.wlpi.client.common.WLPI.getURL();
getURL() メソッドの詳細については、Javadoc の com.bea.wlpi.client.common.WLPI を参照してください。
ユーザ ID の取得
現在のユーザ ID を取得するには、次の com.bea.wlpi.client.common.WLPI メソッドを使用します。
public java.lang.String getUserId()
このメソッドは、ユーザ ID を返します。現在ログオンしていない場合は、null を返します。
たとえば、次のコードは、ユーザ ID を取得して、user に保存します。
String user = com.bea.wlpi.client.common.WLPI.getUserId();
getUserId() メソッドの詳細については、Javadoc の com.bea.wlpi.client.common.WLPI を参照してください。
セキュリティに関する基本情報の取得例
ここでは、コマンドライン管理のサンプルから抜粋して、セキュリティ レルムの基本情報を取得する方法を示します。
注意: コマンドライン管理サンプルの詳細については、コマンドライン管理サンプルを参照してください。
このサンプルでは、ユーザと通信を行うための入力ストリームが定義されており、ユーザはメニューからアクションを選択するよう求められます。ユーザが Security Realm オプションを選択すると、セキュリティ クラス名が表示され、セキュリティ レルムが管理可能かどうか示されます。
重要なコード行は、太字で強調されています。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。
/* ユーザとの通信のための入力ストリームを作成する */
stdIn = new BufferedReader( new InputStreamReader( System.in ) );
/* ツール タイトルを表示する */
System.out.print( "¥n--- Command Line Administration v1.1 ---" );
/* メイン メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n--- Main Menu ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Organizations" );
System.out.println( "2) Roles" );
System.out.println( "3) Users" );
System.out.println( "4) Security Realm" );
System.out.println( "5) Business Operations" );
System.out.println( "6) Event Keys" );
System.out.println( "7) Business Calendars" );
System.out.println( "8) EJB Catalog" );
System.out.println( "9) Server Properties" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
.
.
.
/* セキュリティ レルム */
case '4' :
/* WLPI セキュリティ レルムのプロパティと属性を
* 表示する */
System.out.println( "¥nSecurity Realm:" );
/* WLPI で現在使用中の セキュリティ レルムのクラスを
* 取り出して表示する */
System.out.println( "- Class Name: " +
/* WLPI 公開 API メソッド */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
principal.getSecurityRealmClassName( ) );
/* WLPI 公開 API メソッド */
/* WebLogic Process Integration で現在使用中のセキュリティ レルムの
* 管理可能性に関する情報を取り出して表示する */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
if( principal.isManageableSecurityRealm( ) )
System.out.println( "- This realm is manageable" );
else
System.out.println( "- This realm is not manageable" );
break;
.
.
.
オーガニゼーション、ロールおよびユーザのコンフィグレーション
オーガニゼーションは、Studio クライアントまたはカスタム定義のクライアントを使用して定義され、さまざまな業務エンティティ、地域、その他その企業の特定の事業に関連する分類を表します。オーガニゼーション内のロールおよびユーザに対して、セキュリティ パーミッションをさらに詳細に設定してコンフィグレーションを行うことができます。
この節の内容は以下のとおりです。
オーガニゼーションのコンフィグレーション
ここでは、オーガニゼーションのコンフィグレーション方法について説明します。内容は以下のとおりです。
オーガニゼーションを追加する
セキュリティ レルムにオーガニゼーションを追加するには、以下の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。
public void addOrganization(
com.bea.wlpi.common.OrganizationInfo orgInfo
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
addOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
たとえば、次のコードでは、指定された orgInfo オブジェクトの内容に基づいてオーガニゼーションが追加されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 addOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipalを参照してください。 オーガニゼーションにユーザを追加する オーガニゼーションにユーザを追加するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 addUserToOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.addOrganization(orgInfo);
public void addUserToOrganization(
java.lang.String userId,
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、ユーザ joe が指定されたオーガニゼーション ORG1 に追加されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 addUserToOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 すべてのオーガニゼーション名を取得する セキュリティ レルムに対して定義されているすべてのオーガニゼーションのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getAllOrganizations() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.addUserToOrganization(“joe”, “ORG1”);
public java.util.List getAllOrganizations(
boolean obtainAttributes
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.OrganizationInfo オブジェクトのリストを返します。各オーガニゼーションについての情報にアクセスするには、OrganizationInfo オブジェクトに記載の OrganizationInfo オブジェクト メソッドを使用します。 たとえば、次のコードは、オーガニゼーション ID のみを取得して(obtainAttributes パラメータが false に設定されている)、orgList リスト変数に保存します。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getAllOrganizations() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 特定のオーガニゼーションに対して定義されているロールを取得する 特定のオーガニゼーションに対して定義されているロールのリストは、以下に記載のメソッドを使用して取得できます。また、特定のロールが任意のオーガニゼーションに対して定義されているかどうかを調べます。 特定のオーガニゼーションに対して定義されているロールのリストを取得する 特定のオーガニゼーションに対して定義されているすべてのロールのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getRolesInOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List orgList = principal.getAllOrganizations(false);
public java.util.List getRolesInOrganization(
java.lang.String orgId,
boolean obtainAttributes
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.OrganizationInfo オブジェクトのリストを返します。各ロールについての情報にアクセスするには、RoleInfo オブジェクトに記載の RoleInfo オブジェクト メソッドを使用します。 たとえば、次のコードは、オーガニゼーション ORG1 内のロールを取得して、すべての属性を返します(obtainAttributes パラメータが true に設定されているため)。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getRolesInOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 特定のオーガニゼーションに対してロールが定義されているかどうか調べる 特定のロールが任意のオーガニゼーションに対して定義されているかどうか調べるには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 isRoleInOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List roles = principal.getRolesInOrganization(“ORG1”, true);
public boolean isRoleInOrganization(
java.lang.String roleId,
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、ロールがオーガニゼーションに対して定義されている場合は true を、そうでない場合は false を返します。 たとえば、次のコードでは、role1 ロールがオーガニゼーション ORG1 に対して指定されているかどうか調べます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 isRoleInOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 特定のオーガニゼーションに対して定義されているユーザを取得する 特定のオーガニゼーションに対して定義されているすべてのユーザのリストは、以下に記載のメソッドを使用して、取得できます。また、特定のユーザが任意のオーガニゼーションに対して定義されているかどうかを調べることもできます。 特定のオーガニゼーションに対して定義されているユーザのリストを取得する 特定のオーガニゼーションに対して定義されているユーザのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getUsersInOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List roles = principal.isRoleInOrganization(“role1”, “ORG1”);
public java.util.List getUsersInOrganization(
java.lang.String orgId,
boolean obtainAttributes
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.UserInfo オブジェクトのリストを返します。各ロールについての情報にアクセスするには、UserInfo オブジェクトに記載の UserInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、オーガニゼーション ORG1 内のユーザのリストを取得して、すべての属性を返します(obtainAttributes パラメータが true に設定されているため)。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getUsersInOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 特定のオーガニゼーションに対してユーザが定義されているかどうか調べる 特定のユーザが任意のオーガニゼーションに対して定義されているかどうか調べるには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 isUserInOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List users = principal.getUsersInOrganization(“ORG1”, true);
public void isUserInOrganization(
java.lang.String userId,
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、ユーザがオーガニゼーションに対して定義されている場合は true を、そうでない場合は false を返します。 たとえば、次のコードでは、user1 ユーザがオーガニゼーション ORG1 に対して定義されているかどうかを調べます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 isUserInOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 オーガニゼーション情報を取得する オーガニゼーション情報を取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getOrganizationInfo() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List roles = principal.isUserInOrganization(“user1”, “ORG1”);
public com.bea.wlpi.common.OrganizationInfo getOrganizationInfo(
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.OrganizationInfo オブジェクトを返します。オーガニゼーションについての情報にアクセスするには、OrganizationInfo オブジェクトに記載の OrganizationInfo オブジェクト メソッドを使用します。 このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getOrganizationInfo() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 オーガニゼーション情報を設定する オーガニゼーション情報を設定するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 setOrganizationInfo() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
OrganizationInfo orgInfo = principal.getOrganizationInfo(orgId)
public void setOrganizationInfo(
com.bea.wlpi.common.OrganizationInfo orgInfo
) throws java.rmi.RemoteException
たとえば、次のコードでは、指定された orgInfo オブジェクトの内容に基づいてオーガニゼーションが更新されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 setOrganizationInfo() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 オーガニゼーションからユーザを削除する オーガニゼーションからユーザを削除するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 removeUserFromOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.updateOrganization(orgInfo);
public void removeUserFromOrganization(
java.lang.String userId,
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードは、ユーザ user1 をオーガニゼーション ORG1 から削除します。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 removeUserFromOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 オーガニゼーションを削除する オーガニゼーションを削除するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 deleteOrganization() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.removeUserFromOrganization(“user1”, “ORG1”);
public void deleteOrganization(
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
次のサンプル コードでは、オーガニゼーション ID で指定されたオーガニゼーションを削除します。この例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 com.bea.wlpi.common.OrganizationInfo オブジェクトである Organization と関連付けられたメソッドを使用してオーガニゼーション ID を取得します。すべてのオーガニゼーション名を取得するに記載のメソッドを使用して、organization オブジェクトを取得できます。 deleteOrganization() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 オーガニゼーションのコンフィグレーション例 この節では、コマンドライン管理のコード例から抜粋して、オーガニゼーションのコンフィグレーション方法を示します。 注意: コマンドライン管理サンプルの詳細については、コマンドライン管理サンプルを参照してください。 このサンプルでは、ユーザと通信するための入力ストリームが定義されており、ユーザは以下のアクションのいずれかを指定するよう求められます。
principal.deleteOrganization(organization.getId())
重要なコード行は、太字で強調されています。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。
/* ユーザとの通信のための入力ストリームを作成する */
stdIn = new BufferedReader( new InputStreamReader( System.in ) );
/* ツール タイトルを表示する */
System.out.print( "¥n--- Command Line Administration v1.1 ---" );
/* メイン メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n--- Main Menu ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Organizations" );
System.out.println( "2) Roles" );
System.out.println( "3) Users" );
System.out.println( "4) Security Realm" );
System.out.println( "5) Business Operations" );
System.out.println( "6) Event Keys" );
System.out.println( "7) Business Calendars" );
System.out.println( "8) EJB Catalog" );
System.out.println( "9) Server Properties" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
.
.
.
public static void mngOrganizations( ) {
String answer;
String calendarId;
String orgId;
String userId;
String eMail;
String defaultOrgId;
/* ユーザとの通信のための入力ストリームを作成する */
BufferedReader stdIn = new BufferedReader( new InputStreamReader( System.in ) );
try {
/* WLPI 公開 API メソッド */
boolean isRealmManageable = principal.isManageableSecurityRealm( );
/* メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n¥n--- WLPI Organizations ---" );
System.out.println( "¥nEnter choice:" );
/* このレルムは管理可能か ? */
if( isRealmManageable ) {
/* このレルムは管理可能レルム。管理可能レルムを
* 必要とする表示メニュー オプション */
System.out.println( "0) Add a new Organization" );
System.out.println( "1) Delete an Organization" );
System.out.println( "2) Update Organization Info" );
System.out.println( "3) Assign a User to an Organization" );
System.out.println( "4) Remove a User from an Organization" );
}
System.out.println( "5) List all Organizations" );
System.out.println( "6) List Organization Info" );
System.out.println( "7) List Users assigned to an Organization" );
System.out.println( "8) Is User assigned to an Organization" );
System.out.println( "9) List Roles defined in an Organization" );
System.out.println( "A) Is Role in an Organization" );
System.out.println( "B) Back to previous menu" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
/* ユーザの選択を取得する */
String line = stdIn.readLine( );
/* ユーザが選択を行わないで〔Enter〕を押したか ? */
if( line.equals( "" ) )
continue;
/* ユーザが複数の文字を入力したか ? */
else if( line.length( ) > 1 ) {
System.out.println( "*** Invalid selection" );
continue;
}
/* レルムが管理不可能で、ユーザが非表示の選択肢を入力したか ? */
else if( !isRealmManageable && line.charAt( 0 ) < '5' ) {
System.out.println( "*** Invalid selection" );
continue;
}
/* 大文字および文字へ変換する */
char choice = line.toUpperCase( ).charAt( 0 );
/* ユーザの選択を処理する */
switch( choice ) {
.
.
.
オーガニゼーションを追加する
オーガニゼーションを追加する方法を示します。
/* 新しいオーガニゼーションを追加する */
case '0' :
/* 追加する新しいオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "¥nEnter new Organization ID" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* このオーガニゼーションに割り当てるカレンダー ID を取得する ; (省略可能) */
calendarId = askQuestion( "Enter Calendar ID (press
enter for none)" );
/* OrganizationInfo オブジェクトを作成する;
* 新しいオーガニゼーションの追加に必要 */
OrganizationInfo orgInfo =
new OrganizationInfo( orgId, calendarId );
try {
/* WLPI 公開 API メソッド */
/* 新しいオーガニゼーションを追加する */
principal.addOrganization( orgInfo );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to add the organization¥n" );
System.err.println( e );
}
break;
.
.
.
オーガニゼーションを削除する
オーガニゼーションを削除する方法を示します。
/* オーガニゼーションを削除する */
case '1' :
/* 削除するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "¥nEnter Organization
ID to delete" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* オーガニゼーションを削除する */
principal.deleteOrganization( orgId );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to delete the organization¥n" );
System.err.println( e );
}
break;
.
.
.
オーガニゼーション情報を設定する
オーガニゼーションについての情報を設定する方法を示します。
/* オーガニゼーション情報を更新する */
case '2' :
/* 更新するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion(
"¥nEnter Organization ID to update" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* カレンダー ID を取得(WLPI v1.2.1 で定義されているオーガニゼーション属性のみ、
* つまり、更新可能な属性のみ) */
calendarId = askQuestion(
"Enter new Calendar ID (press enter for none)" );
/* OrganizationInfo オブジェクトを作成する
* オーガニゼーションの更新に必要 */
orgInfo = new OrganizationInfo( orgId, calendarId );
try {
/* WLPI 公開 API メソッド */
/* オーガニゼーションを更新する(カレンダーの読み込み) */
principal.setOrganizationInfo( orgInfo );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to update the organization¥n" );
System.err.println( e );
}
break; .
.
.
オーガニゼーションにユーザを追加する
ユーザをオーガニゼーションに割り当てる方法を示します。
/* オーガニゼーションにユーザを割り当てる */
case '3' :
/* オーガニゼーションに割り当てるユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter User ID to assign" )
) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ユーザを割り当てるオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* ユーザをオーガニゼーションに割り当てる */
principal.addUserToOrganization( userId, orgId );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to
assign user to the organization¥n" );
System.err.println( e );
}
break;
.
.
.
オーガニゼーションからユーザを削除する
ユーザをオーガニゼーションから削除する方法を示します。
/* オーガニゼーションからユーザを削除する */
case '4' :
/* オーガニゼーションから削除するユーザのユーザ ID を取得する */
if( ( userId = askQuestion(
"¥nEnter User ID to remove" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ユーザを削除するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* このユーザをオーガニゼーションから削除する */
principal.removeUserFromOrganization( userId, orgId );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println(
"*** Unable to remove user from organization¥n" );
System.err.println( e );
}
break;
.
.
.
すべてのオーガニゼーション名を取得する
すべてのオーガニゼーションのリストを取得する方法を示します。
/* すべてのオーガニゼーションをリスト アップする */
case '5' :
/* オーガニゼーション属性の表示が必要かどうかを
* 選択するようにユーザに求める */
if( ( answer = askQuestion(
"¥nList all attributes (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 応答を解析する */
boolean isGetAttributes = ( answer.equals( "y" ) ||
answer.equals( "Y" ) );
/* WLPI 公開 API メソッド */
/* すべてのオーガニゼーションを検索する */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List orgList = principal.getAllOrganizations( isGetAttributes );
/* 定義されているオーガニゼーションはあるか ? */
if( orgList.size( ) == 0 )
System.out.println( "¥nNo Organization defined" );
else
System.out.println( "¥nDefined organizations:" );
/* リストを処理してオーガニゼーションと属性を表示する */
for( int i = 0; i < orgList.size( ); i++ ) {
/* リストから要素を取り出す */
orgInfo = ( OrganizationInfo )orgList.get( i );
/* オーガニゼーション ID を取り出して表示する */
System.out.println( "- ID: " + orgInfo.getOrgId( ) );
/* 属性を表示するか ? */
if( isGetAttributes ) {
/* カレンダー ID を取得する */
if( ( calendarId = orgInfo.getCalendarId( ) ) == null )
/* このオーガニゼーションに対して定義された ID がない場合は、*/
'None' という ID が割り当てられる
/* カレンダー ID を表示する */
System.out.println( "
Attributes: Calendar ID=" + calendarId + "¥n" );
}
}
break;
.
.
.
オーガニゼーション情報を取得する
次のコードの抜粋では、オーガニゼーションについての情報を取得する方法を示します。
/* オーガニゼーション情報をリストアップする */
case '6' :
/* 表示するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "¥nEnter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* このオーガニゼーションについての情報を取り出す */
orgInfo = principal.getOrganizationInfo( orgId );
/* オーガニゼーション ID を取り出して表示する */
System.out.println( "- ID: " + orgInfo.getOrgId( ) );
/* カレンダー ID を取得する */
if( ( calendarId = orgInfo.getCalendarId( ) ) == null )
/* このオーガニゼーションに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* カレンダー ID を表示する */
System.out.println( "
Attributes: Calendar ID=" + calendarId + "¥n" );
}
catch( Exception e ) {
System.out.println(
"*** Unable to retrieve organization info¥n" );
System.err.println( e );
}
break;
.
.
.
特定のオーガニゼーションに対して定義されているユーザを取得する
次のコードの抜粋では、あるオーガニゼーションに対して定義されているユーザのリストを取得する方法を示します。
/* オーガニゼーションに割り当てられたユーザをリストアップする */
case '7' :
/* クエリするオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "¥nEnter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ユーザ属性の表示が必要かどうかを
* 選択するようにユーザに求める */
if( ( answer = askQuestion(
"List user attributes (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 応答を解析する */
isGetAttributes = ( answer.equals( "y" ) || answer.equals( "Y" ) );
/* WLPI 公開 API メソッド */
/* このオーガニゼーションに割り当てられたすべてのユーザを取り出す */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List userList = principal.getUsersInOrganization(
orgId, isGetAttributes );
/* 割り当てられているユーザはあるか ? */
if( userList.size( ) == 0 )
System.out.println( "¥nNo user assigned" );
else
System.out.println( "¥nAssigned Users:" );
/* リストを処理して、ユーザと属性を表示する */
for( int i = 0; i < userList.size( ); i++ ) {
/* リストから要素を取り出す */
UserInfo userInfo = ( UserInfo )userList.get( i );
/* ユーザ ID を取り出して表示する */
System.out.println( "- User ID: " + userInfo.getUserId( ) );
/* 属性を表示するか ? */
if( isGetAttributes ) {
/* 電子メール アドレスを取り出す */
if( ( eMail = userInfo.getEMailAddress( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
eMail = "None";
/* デフォルトのオーガニゼーション ID を取り出す */
if( ( defaultOrgId = userInfo.getDefaultOrgId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
defaultOrgId = "None";
/* カレンダー ID を取り出す */
if( ( calendarId = userInfo.getCalendarId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* 電子メール アドレスを表示(デフォルトのオーガニゼーション ID とカレンダー ID)する */
System.out.println( " Attributes:¥n - eMail: " + eMail );
System.out.println( " - Default ORG ID: " + defaultOrgId );
System.out.println( " - Calendar ID=" + calendarId + "¥n" );
}
}
break;
.
.
.
特定のオーガニゼーションに対してユーザが定義されているかどうか調べる
ユーザがオーガニゼーションに対して定義されているかどうかを調べる方法を示します。
/* ユーザはオーガニゼーションに割り当てられているか */
case '8' :
/* クエリするユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter User ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* クエリするオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* WLPI 公開 API メソッド */
/* ユーザはこのオーガニゼーションに割り当てられているか ? */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
if( principal.isUserInOrganization( userId, orgId ) )
System.out.println( "User is assigned to the organization" );
else
System.out.println( "User is not assigned to the organization" );
break;
.
.
.
特定のオーガニゼーションに対して定義されているロールを取得する
特定のオーガニゼーションに対して定義されているロールのリストを取得する方法を示します。
/* オーガニゼーションに対して定義されたロールをリスト アップする */
case '9' :
/* クエリするオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ユーザ属性の表示が必要かどうかを選択するようにユーザに求める */
if( ( answer = askQuestion(
"List role attributes (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 応答を解析する */
isGetAttributes = ( answer.equals( "y" ) || answer.equals( "Y" ) );
/* WLPI 公開 API メソッド */
/* このオーガニゼーションで定義されているすべてのロールを取り出す */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List roleList = principal.getRolesInOrganization(
orgId, isGetAttributes );
/* 定義されているロールはあるか ? */
if( roleList.size( ) == 0 )
System.out.println( "¥nNo roles defined" );
else
System.out.println( "¥nRoles Defined:" );
/* リストを処理してロールと属性を表示する */
for( int i = 0; i < roleList.size( ); i++ ) {
/* リストから要素を取り出す */
RoleInfo roleInfo = ( RoleInfo )roleList.get( i );
/* ロール ID を取り出して表示する */
System.out.println( "- Role ID: " + roleInfo.getRoleId( ) );
/* 属性を表示するか ? */
if( isGetAttributes ) {
/* カレンダー ID を取り出す */
if( ( calendarId = roleInfo.getCalendarId( ) ) == null )
/* このロールに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* カレンダー ID を表示する */
System.out.println(
" Attributes: Calendar ID=" + calendarId + "¥n" );
}
}
break;
.
.
.
特定のオーガニゼーションに対してロールが定義されているかどうか調べる
ユーザがオーガニゼーションに対して定義されているかどうかを調べる方法を示します。
/* ロールがオーガニゼーションにあるか */
case 'A' :
/* クエリするロールのロール ID を取得する */
if( ( roleId = askQuestion( "¥nEnter Role ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* クエリするオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* WLPI 公開 API メソッド */
/* このオーガニゼーションでロールは定義されているか ? */
/* 注意 : 発生した例外を取り込むコードを
追加するとよい */
if( principal.isRoleInOrganization( roleId, orgId) )
System.out.println( "Role defined in the organization" );
else
System.out.println( "Role not defined in the organization" );
break;
.
.
.
ロールのコンフィグレーション
ここでは、ロールのコンフィグレーション方法について説明します。内容は以下のとおりです。
ロールを追加する
セキュリティ レルムにロールを追加するには、以下の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。
public void addRole(
com.bea.wlpi.common.RoleInfo roleInfo
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
addRole() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
たとえば、次のコードでは、指定された roleInfo オブジェクトの内容に基づいてロールが追加されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 addRole() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ロールにユーザを追加する ロールにユーザを追加するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 addUserToRole() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.addRole(roleInfo);
public void addUserToRole(
java.lang.String userId,
java.lang.String orgId,
java.lang.String roleId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、ユーザ user1 がオーガニゼーション ORG1 の role1 ロールに追加されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 addUserToRole() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 特定のロールに対して定義されているユーザを取得する 特定のロールに対して定義されているユーザのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getUsersInRole() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.addUserToRole(“user1”, “ORG1”, “role1”);
public java.util.List getUsersInRole(
java.lang.String roleId,
java.lang.String orgId,
boolean obtainAttributes
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.UserInfo オブジェクトのリストを返します。各ユーザについての情報にアクセスするには、UserInfo オブジェクトに記載の UserInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、オーガニゼーション ORG1 内のロール role1 に対して定義されているユーザのリストが取得され、すべての属性が返されます(obtainAttributes パラメータが true に設定されているため)。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getUsersInRole() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ロール情報を取得する ロールについての情報を取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getRoleInfo() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List users = principal.getUsersInRole(“role1”, “ORG1”, true);
public com.bea.wlpi.common.RoleInfo getRoleInfo(
java.lang.String roleId,
java.lang.String orgId
) throws java.rmi.RemoteException
このメソッドは、com.bea.wlpi.common.RoleInfo オブジェクトを返します。そのロールについての情報にアクセスするには、RoleInfo オブジェクトに記載の RoleInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、オーガニゼーション ORG1 のロール role1 についての情報を取得します。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getRoleInfo() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ロール情報を設定する ロールについての情報を設定するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 setRoleInfo() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.addUserToRole(“role1”, “ORG1”);
public void setRoleInfo(
com.bea.wlpi.common.RoleInfo roleInfo
) throws java.rmi.RemoteException
たとえば、次のコードでは、指定された roleInfo オブジェクトの内容に基づいて、ロールについての情報が設定されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 setRoleInfo() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ロールからユーザを削除する ロールからユーザを削除するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 removeUserFromRole() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.setRoleInfo(roleInfo);
public void removeUserFromRole(
java.lang.String userId,
java.lang.String orgId,
java.lang.String roleId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、ユーザ user1 がオーガニゼーション ORG1 のロール role1 から削除されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 removeUserFromRole() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ロールを削除する ロールを削除するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 deleteRole() メソッドのを次の表に示します。パラメータには値を指定する必要があります。
principal.removeUserFromOrganization(“user1”, “ORG1”, “role1”);
public void deleteRole(
java.lang.String orgId,
java.lang.String roleId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、オーガニゼーション ORG1 の指定されたロール ID に対応するロールが削除されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 com.bea.wlpi.common.RoleInfo オブジェクトである role と関連付けられたメソッドを使用してロール ID を取得します。特定のオーガニゼーションに対して定義されているロールのリストを取得するに記載のメソッドを使用して role オブジェクトを取得します。 deleteRole() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ロールのコンフィグレーション例 この節では、コマンドライン管理のコード例から抜粋して、ロールのコンフィグレーション方法を示します。 注意: コマンドライン管理サンプルの詳細については、コマンドライン管理サンプルを参照してください。 このサンプルでは、ユーザと通信するための入力ストリームが定義されており、ユーザは以下のアクションのいずれかを指定するよう求められます。
principal.deleteRole(role.getId(), “ORG1”)
重要なコード行は、太字で強調されています。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。
/* ユーザとの通信のための入力ストリームを作成する */
stdIn = new BufferedReader( new InputStreamReader( System.in ) );
/* ツール タイトルを表示する */
System.out.print( "¥n--- Command Line Administration v1.1 ---" );
/* メイン メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n--- Main Menu ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Organizations" );
System.out.println( "2) Roles" );
System.out.println( "3) Users" );
System.out.println( "4) Security Realm" );
System.out.println( "5) Business Operations" );
System.out.println( "6) Event Keys" );
System.out.println( "7) Business Calendars" );
System.out.println( "8) EJB Catalog" );
System.out.println( "9) Server Properties" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
.
.
.
public static void mngRoles( ) {
String answer;
String calendarId;
String orgId;
String roleId;
String userId;
String eMail;
String defaultOrgId;
/* ユーザとの通信のための入力ストリームを作成する */
BufferedReader stdIn = new BufferedReader(
new InputStreamReader( System.in ) );
try {
/* WLPI 公開 API メソッド */
boolean isRealmManageable = principal.isManageableSecurityRealm( );
/* メニューを表示してユーザと交信する*/
while( true ) {
/* メニューを表示する */
System.out.println( "¥n¥n--- WLPI Roles ---" );
System.out.println( "¥nEnter choice:" );
/* このレルムは管理可能か ? */
if( isRealmManageable ) {
/* このレルムは管理可能レルムであるため、管理可能レルムが
* 必要な [Display] メニューのオプションを表示する */
System.out.println( "1) Add a new Role" );
System.out.println( "2) Assign a User to a Role" );
System.out.println( "3) Delete a Role" );
System.out.println( "4) Remove a User from a Role" );
System.out.println( "5) Update Role Info" );
}
System.out.println( "6) List Role Info" );
System.out.println( "7) List Users in a Role" );
System.out.println( "B) Back to previous menu" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
/* ユーザの選択を取得する */
String line = stdIn.readLine( );
/* ユーザが選択を行わないで〔Enter〕を押したか ? */
if( line.equals( "" ) )
continue;
/* ユーザが複数の文字を入力したか ? */
else if( line.length( ) > 1 ) {
System.out.println( "*** Invalid selection" );
continue;
}
/* レルムが管理不可能で、ユーザが非表示の選択肢を入力したか ? */
else if( !isRealmManageable && line.charAt( 0 ) < '6' ) {
System.out.println( "*** Invalid selection" );
continue;
}
/* 大文字および文字へ変換する */
char choice = line.toUpperCase( ).charAt( 0 );
/* ユーザの選択を処理する */
switch( choice ) {
.
.
.
ロールを追加する
ロールを追加する方法を示します。
/* 新しいロールを追加する */
case '1' :
/* 追加する新しいロールのロール ID を取得する */
if( ( roleId = askQuestion(
"¥nEnter a new Role ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 新しいユーザの追加先オーガニゼーションのオーガニゼーション ID を取得する ; 必須 */
if( ( orgId = askQuestion(
"Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* このロールに割り当てるカレンダー ID を取得する(省略可能) */
calendarId = askQuestion(
"Enter Calendar ID (press enter for none)" );
/* RoleInfo オブジェクトを作成する ; 新しいロールの追加に必要 */
RoleInfo roleInfo = new RoleInfo( roleId, orgId, calendarId );
try {
/* WLPI 公開 API メソッド */
/* オーガニゼーションに新しいロールを追加する */
principal.addRole( roleInfo );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to add role¥n" );
System.err.println( e );
}
break;
.
.
.
ロールにユーザを追加する
ロールにユーザを追加する方法を示します。
/* ロールにユーザを割り当てる */
case '2' :
/* ロールに割り当てるユーザのユーザ ID を取得する */
if( ( userId = askQuestion(
"¥nEnter User ID to assign" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ユーザを追加するロールのロール ID を取得する */
if( ( roleId = askQuestion( "Enter Role ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ロールが所属するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* このオーガニゼーション内のこのロールにユーザを追加する */
principal.addUserToRole( userId, orgId, roleId );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to add user to role¥n" );
System.err.println( e );
}
break;
.
.
.
ロールを削除する
ロールを削除する方法を示します。
/* ロールを削除する */
case '3' :
/* 削除するロールのロール ID を取得する */
if( ( roleId = askQuestion(
"¥nEnter Role ID to delete" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ロールを削除するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* ロールをこのオーガニゼーションから削除する */
principal.deleteRole( orgId, roleId );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to delete role¥n" );
System.err.println( e );
}
break;
.
.
.
ロールからユーザを削除する
ロールからユーザを削除する方法を示します。
/* ロールからユーザを削除する */
case '4' :
/* ロールから削除するユーザのユーザ ID を取得する */
if( ( userId = askQuestion(
"¥nEnter User ID to remove" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ユーザを削除するロールのロール ID を取得する */
if( ( roleId = askQuestion( "Enter Role ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ロールが所属するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* このオーガニゼーションのこのロールからユーザを削除する */
principal.removeUserFromRole( userId, orgId, roleId);
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to remove user from role¥n" );
System.err.println( e );
}
break;
.
.
.
ロール情報を設定する
ロール情報を設定する方法を示します。
/* ロール情報を更新する */
case '5' :
/* 更新するロールのロール ID を取得する */
if( ( roleId = askQuestion(
"¥nEnter Role ID to update" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ロールが所属するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion(
"Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* このロールに割り当てる新しいカレンダー ID を取得する; (WLPI v1.2.1 で定義
* されているロール属性のみ、つまり、更新可能な属性のみ) */
calendarId = askQuestion(
"Enter Calendar ID (press enter for none)" );
/* RoleInfo オブジェクトを作成する ; ロールの更新に必要 */
roleInfo = new RoleInfo( roleId, orgId, calendarId );
try {
/* WLPI 公開 API メソッド */
/* このオーガニゼーションのこのロールを更新する(カレンダーの読み込み) */
principal.setRoleInfo( roleInfo );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to update role info¥n" );
System.err.println( e );
}
break;
.
.
.
ロール情報を取得する
ロールについての情報を取得する方法を示します。
/* ロール情報をリスト アップする */
case '6' :
/* 表示するロールのロール ID を取得する */
if( ( roleId = askQuestion( "¥nEnter Role ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ロールが所属するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* このロールについての情報を取り出す */
roleInfo = principal.getRoleInfo( roleId, orgId );
System.out.println( "¥nRole Info:" );
/* ロール ID を取り出して表示 */
System.out.println( "- Role ID: " + roleInfo.getRoleId( ) );
/* ロールが所属するオーガニゼーションのオーガニゼーション ID を取り出して表示する */
System.out.println( " Org ID: " + roleInfo.getOrgId( ) );
/* カレンダー ID を取り出す */
if( ( calendarId = roleInfo.getCalendarId( ) ) == null )
/* このロールに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* カレンダー ID を表示する */
System.out.println( " Calendar ID: " + calendarId );
}
catch( Exception e ) {
System.out.println( "*** Unable to retrieve role info¥n" );
System.err.println( e );
}
break;
.
.
.
特定のロールに対して定義されているユーザを取得する
特定のロールに対して定義されているユーザのリストを取得する方法を示します。
/* ロール内のユーザをリスト アップする */
case '7' :
/* クエリするロールのロール ID を取得する */
if( ( roleId = askQuestion( "¥nEnter Role ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ロールが所属するオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* ユーザ属性の表示が必要かどうか
* 選択するようにユーザに求める */
if( ( answer = askQuestion(
"List all attributes (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 応答を解析する */
boolean isGetAttributes = ( answer.equals( "y" ) ||
answer.equals( "Y" ) );
/* WLPI 公開 API メソッド */
/* このロールに割り当てられたすべてのユーザを取り出す */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List userList =
principal.getUsersInRole( roleId, orgId, isGetAttributes );
/* 割り当てられたユーザはあるか ? */
if( userList.size( ) == 0 )
System.out.println( "¥nNo users assigned" );
else
System.out.println( "¥nAssigned Users:" );
/* リストを処理して、ユーザと属性を表示する */
for( int i = 0; i < userList.size( ); i++ ) {
/* リストから要素を取り出す */
UserInfo userInfo = ( UserInfo )userList.get( i );
/* ユーザ ID を取り出して表示する */
System.out.println( "- User ID: " + userInfo.getUserId( ) );
/* 属性を表示するか ? */
if( isGetAttributes ) {
if( ( eMail = userInfo.getEMailAddress( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
eMail = "None";
if( ( defaultOrgId = userInfo.getDefaultOrgId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
defaultOrgId = "None";
/* カレンダー ID を取り出す */
if( ( calendarId = userInfo.getCalendarId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* 電子メール アドレスを表示(デフォルトのオーガニゼーション ID とカレンダー ID)する */
System.out.println( " Attributes:¥n - eMail: " + eMail );
System.out.println( " - Default ORG ID: " + defaultOrgId );
System.out.println( " - Calendar ID=" + calendarId + "¥n" );
}
}
break;
.
.
.
ユーザのコンフィグレーション
ここでは、ユーザのコンフィグレーション方法について説明します。内容は以下のとおりです。
ユーザを追加する
新しいユーザを作成して wlpiUsers グループに追加するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。
public com.bea.wlpi.common.UserInfo createUser(
java.lang.String userId,
java.lang.String pswd
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
createUser() メソッドのパラメータを次の表に示します。パラメータには値を指定するが必要があります。
たとえば、次のコードでは、パスワード password を持つ sam という名前のユーザが wlpiUsers グループ内に作成されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 createUser() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 すべてのユーザを取得する すべてのユーザのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getAllUsers() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
UserInfo userInfo = principal.createUser(“sam”, “password”)
public java.util.List getAllUsers(
boolean obtainAttributes
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.UserInfo オブジェクトのリストを返します。各ユーザについての情報にアクセスするには、UserInfo オブジェクトに記載の UserInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、ユーザ ID を取得して(obtainAttributes パラメータが false に設定されている)userList リスト変数に保存します。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getAllUsers() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ユーザ オーガニゼーションを取得する ユーザが所属するオーガニゼーションのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getOrganizationsForUser() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List userList = principal.getAllUsers(false)
public java.util.List getOrganizationsForUser(
java.lang.String userId,
boolean obtainAttributes
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.OrganizationInfo オブジェクトのリストを返します。各オーガニゼーションについての情報にアクセスするには、OrganizationInfo オブジェクトに記載の OrganizationInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、user1 に対するオーガニゼーションのリストを取得して、すべての属性を返します(obtainAttributes パラメータが true に設定されているため)。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getOrganizationsForUser() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ユーザ ロールを取得する ユーザが所属するロールのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getRolesForUser() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List roles = principal.getOrganizationsForUser(“user1”, true);
public java.util.List getRolesForUser(
java.lang.String orgId,
java.lang.String userId,
boolean obtainAttributes
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.RoleInfo オブジェクトのリストを返します。各ロールについての情報にアクセスするには、RoleInfo オブジェクトに記載の RoleInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、オーガニゼーション ORG1 内の user1 に対して定義されているロールのリストを取得し、すべての属性を返します(obtainAttributes パラメータが true に設定されているため)。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getRolesForUser() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ユーザ情報を取得する ユーザについての情報を取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getUserInfo() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List roles = principal.getRolesForUser(“ORG1”, “user1”, true);
public com.bea.wlpi.common.UserInfo getUserInfo(
java.lang.String userId
) throws java.rmi.RemoteException
このメソッドは、com.bea.wlpi.common.UserInfo オブジェクトを返します。ユーザについての情報にアクセスするには、UserInfo オブジェクトに記載の UserInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、ユーザ user1 の情報を取得します。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getUserInfo() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ユーザ情報を設定する ユーザについての情報を設定するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 setUserInfo() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
UserInfo user = principal.getUserInfo(“user1”);
public void setUserInfo(
com.bea.wlpi.common.UserInfo userInfo
) throws java.rmi.RemoteException,
たとえば、次のコードでは、指定された userInfo オブジェクトの内容に基づいてユーザについての情報が設定されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 setUserInfo() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ユーザを削除する オーガニゼーション、ロール、またはコンフィグレーション データベースからユーザを削除するには、以下のメソッドを使用します。 オーガニゼーションからユーザを削除する ユーザをオーガニゼーションから削除する方法については、オーガニゼーションのコンフィグレーション節のオーガニゼーションからユーザを削除するを参照してください。 ロールからユーザを削除する ユーザをロールから削除する方法については、ロールのコンフィグレーション節のロールからユーザを削除するを参照してください。 データベースからユーザを削除する コンフィグレーション データベースからユーザを削除するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 deleteUser() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.setUserInfo(userInfo);
public void deleteUser(
java.lang.String userId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、ユーザ user1 がデータベースから削除されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 deleteUser() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 ユーザのコンフィグレーション例 この節では、コマンドライン管理サンプルから抜粋して、ユーザのコンフィグレーション方法を示します。 注意: コマンドライン管理サンプルの詳細については、コマンドライン管理サンプルを参照してください。 このサンプルでは、ユーザと通信するための入力ストリームが定義されており、ユーザは以下のアクションのいずれかを指定するよう求められます。
principal.deleteUser(“user1”);
重要なコード行は、太字で強調されています。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。
/* ユーザとの通信のための入力ストリームを作成する */
stdIn = new BufferedReader( new InputStreamReader( System.in ) );
/* ツール タイトルを表示する */
System.out.print( "¥n--- Command Line Administration v1.1 ---" );
/* メイン メニューを表示してユーザと交信する */
while( true ) {
/* メニューを表示する */
System.out.println( "¥n--- Main Menu ---" );
System.out.println( "¥nEnter choice:" );
System.out.println( "1) Organizations" );
System.out.println( "2) Roles" );
System.out.println( "3) Users" );
System.out.println( "4) Security Realm" );
System.out.println( "5) Business Operations" );
System.out.println( "6) Event Keys" );
System.out.println( "7) Business Calendars" );
System.out.println( "8) EJB Catalog" );
System.out.println( "9) Server Properties" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
.
.
.
System.out.print( ">> " ); ...
mngUsers() メソッドは、ユーザと交信して必要な情報を取り出しながらユーザを管理する方法を示しています。
public static void mngUsers( ) {
String answer;
String calendarId;
String orgId;
String userId;
String password;
String eMail;
String defaultOrgId;
/* ユーザとの通信のための入力ストリームを作成する */
BufferedReader stdIn = new BufferedReader(
new InputStreamReader( System.in ) );
try {
/* WLPI 公開 API メソッド */
boolean isRealmManageable = principal.isManageableSecurityRealm( );
/* メニューを表示してユーザと交信する*/
while( true ) {
/* メニューを表示する */
System.out.println( "¥n¥n--- WLPI Users ---" );
System.out.println( "¥nEnter choice:" );
/* このレルムは管理可能か ? */
if( isRealmManageable ) {
/* このレルムは管理可能レルムであるため、管理可能レルムが
* 必要な [Display] メニューのオプションを表示する */
System.out.println( "1) Add a new User" );
System.out.println( "2) Delete a User" );
System.out.println( "3) Update User Info" );
}
System.out.println( "4) List All Users" );
System.out.println( "5) List User Info" );
System.out.println( "6) List Organizations for a User" );
System.out.println( "7) List Roles for a User" );
System.out.println( "B) Back to previous menu" );
System.out.println( "Q) Quit" );
System.out.print( ">> " );
/* ユーザの選択を取得する */
String line = stdIn.readLine( );
/* ユーザが選択を行わないで〔Enter〕を押したか ? */
if( line.equals( "" ) )
continue;
/* ユーザが複数の文字を入力したか ? */
else if( line.length( ) > 1 ) {
System.out.println( "*** Invalid selection" );
continue;
}
/* レルムが管理不可能で、ユーザが非表示の選択肢を入力したか ? */
else if( !isRealmManageable && line.charAt( 0 ) < '4' ) {
System.out.println( "*** Invalid selection" );
continue;
}
/* 大文字および文字へ変換する */
char choice = line.toUpperCase( ).charAt( 0 );
/* ユーザの選択を処理する */
switch( choice ) {
.
.
.
ユーザを追加する
ユーザを追加する方法を示します。
/* 新しいユーザを追加する */
case '1' :
/* 作成する新しいユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter new User ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 新しいユーザのパスワードを取得する */
if( ( password = askQuestion( "Enter Password" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* このパスワードを使用して新しいユーザの ID を作成する */
principal.createUser( userId, password );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to create user¥n" );
System.err.println( e );
}
break;
.
.
.
ユーザを削除する
ユーザを削除する方法を示します。
/* ユーザを削除する */
case '2' :
/* 削除するユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter User ID to delete" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* ユーザを削除する */
principal.deleteUser( userId );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to delete user¥n" );
System.err.println( e );
}
break;
.
.
.
ユーザ情報を設定する
ユーザについての情報を設定する方法を示します。
/* ユーザ情報を更新する */
case '3' :
/* 更新するユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter User ID to update" ) )
== null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* このユーザの電子メール アドレスを取得する(省略可能) */
eMail = askQuestion(
"Enter new eMail Address (press enter for none)" );
/* このユーザに割り当てるデフォルトのオーガニゼーション ID を取得する(省略可能) */
defaultOrgId = askQuestion(
"Enter new default Org ID (press enter for none)" );
/* このユーザに割り当てるカレンダー ID を取得する(省略可能) */
calendarId = askQuestion(
"Enter new Calendar ID (press enter for none)" );
/* UserInfo オブジェクトを作成する。ユーザの更新に必要 */
UserInfo userInfo = new UserInfo(
userId, eMail, defaultOrgId, calendarId );
try {
/* WLPI 公開 API メソッド */
principal.setUserInfo( userInfo );
/* 正常終了(例外の発生なし) */
System.out.println( "- Success" );
}
catch( Exception e ) {
System.out.println( "*** Unable to update user¥n" );
System.err.println( e );
}
break;
.
.
.
すべてのユーザを取得する
すべてのユーザのリストを取得する方法を示します。
/* すべてのユーザをリスト アップする */
case '4' :
/* ユーザ属性の表示が必要かどうかを
* 選択するようにユーザに求める */
if( ( answer = askQuestion(
"¥nList all attributes (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 応答を解析する */
boolean isGetAttributes = ( answer.equals( "y" ) ||
answer.equals( "Y" ) );
/* WLPI 公開 API メソッド */
/* すべてのユーザを検索する */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List userList = principal.getAllUsers( isGetAttributes );
/* 定義されているユーザはあるか ? */
if( userList.size( ) == 0 )
System.out.println( "¥nNo user defined" );
else
System.out.println( "¥nDefined Users:" );
/* リストを処理して、ユーザと属性を表示する */
for( int i = 0; i < userList.size( ); i++ ) {
/* リストから要素を取り出す */
userInfo = ( UserInfo )userList.get( i );
/* ユーザ ID を取り出して表示する */
System.out.println( "- User ID: " + userInfo.getUserId( ) );
/* 属性を表示するか ? */
if( isGetAttributes ) {
/* 電子メール アドレスを取り出す */
if( ( eMail = userInfo.getEMailAddress( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
eMail = "None";
/* デフォルトのオーガニゼーション ID を取り出す */
if( ( defaultOrgId = userInfo.getDefaultOrgId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
defaultOrgId = "None";
/* カレンダー ID を取り出す */
if( ( calendarId = userInfo.getCalendarId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* 電子メール アドレスを表示(デフォルトのオーガニゼーション ID とカレンダー ID)する */
System.out.println( " Attributes:¥n - eMail: " + eMail );
System.out.println( " - Default ORG ID: " + defaultOrgId );
System.out.println( " - Calendar ID=" + calendarId + "¥n" );
}
}
break;
.
.
.
ユーザ情報を取得する
ユーザについての情報を取得する方法を示します。
/* ユーザ情報をリスト アップする */
case '5' :
/* 表示するユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter User ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
try {
/* WLPI 公開 API メソッド */
/* このユーザについての情報を取り出す */
userInfo = principal.getUserInfo( userId );
/* ユーザ ID を取り出して表示する */
System.out.println( "- User ID: " + userInfo.getUserId( ) );
/* 電子メール アドレスを取り出す */
if( ( eMail = userInfo.getEMailAddress( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
eMail = "None";
/* デフォルトのオーガニゼーション ID を取り出す */
if( ( defaultOrgId = userInfo.getDefaultOrgId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
defaultOrgId = "None";
/* カレンダー ID を取り出す */
if( ( calendarId = userInfo.getCalendarId( ) ) == null )
/* このユーザに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* 電子メール アドレスを表示(デフォルトのオーガニゼーション ID とカレンダー ID)する */
System.out.println( " Attributes:¥n - eMail: " + eMail );
System.out.println( " - Default ORG ID: " + defaultOrgId );
System.out.println( " - Calendar ID=" + calendarId + "¥n" );
}
catch( Exception e ) {
System.out.println( "*** Unable to retrieve user info¥n" );
System.err.println( e );
}
break;
.
.
.
ユーザオーガニゼーションを取得する
すべてのユーザ オーガニゼーションのリストを取得する方法を示します。
/* あるユーザに対するオーガニゼーションをリスト アップする */
case '6' :
/* クエリするユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter User ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* オーガニゼーション属性の表示が必要かどうかを
* 選択するようにユーザに求める */
if( ( answer = askQuestion(
"List Organization attributes (y/n)?" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* 応答を解析する */
isGetAttributes = ( answer.equals( "y" ) || answer.equals( "Y" ) );
/* WLPI 公開 API メソッド */
/* このユーザに割り当てられたすべてのオーガニゼーションを検索する */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List orgList = principal.getOrganizationsForUser(
userId, isGetAttributes );
/* 割り当てられているオーガニゼーションはあるか ? */
if( orgList.size( ) == 0 )
System.out.println( "¥nNot assigned to any organization" );
else
System.out.println( "¥nAssigned to organizations:" );
/* リストを処理して、オーガニゼーションと属性を表示する */
for( int i = 0; i < orgList.size( ); i++ ) {
/* リストから要素を取り出す */
OrganizationInfo orgInfo = ( OrganizationInfo )orgList.get( i );
/* オーガニゼーション ID を取り出して表示する */
System.out.println( "- Org ID: " + orgInfo.getOrgId( ) );
/* 属性を表示するか ? */
if( isGetAttributes ) {
/* カレンダー ID を取り出す */
if( ( calendarId = orgInfo.getCalendarId( ) ) == null ))
/* このオーガニゼーションに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* カレンダー ID を表示する */
System.out.println(
" Attributes: Calendar ID=" + calendarId + "¥n" );
}
}
break;
.
.
.
ユーザ ロールを取得する
ユーザが割り当てられているすべてのロールを取得する方法を示します。
/* 特定のユーザに対するロールをリスト アップする *
case '7' :
/* クエリするユーザのユーザ ID を取得する */
if( ( userId = askQuestion( "¥nEnter User ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
/* クエリするオーガニゼーションのオーガニゼーション ID を取得する */
if( ( orgId = askQuestion( "Enter Organization ID" ) ) == null ) {
/* ユーザによる操作の取り消し */
System.out.println( "*** Cancelled" );
break;
}
// /* ロール属性の表示が必要かどうかを選択するようにユーザに求める */
// if( ( answer = askQuestion(
// "List Role attributes (y/n)?" ) ) == null ) {
// /* ユーザによる操作の取り消し */
// System.out.println( "*** Cancelled" );
// break;
// }
//
// /* 応答を解析する */
// isGetAttributes = ( answer.equals( "y" ) ||
// answer.equals( "Y" ) );
isGetAttributes = false;
/* WLPI 公開 API メソッド */
/* このユーザが割り当てられているすべてのロールを検索する */
/* 注意 : 発生した例外を取り込むコードを
* 追加するとよい */
List roleList = principal.getRolesForUser(
orgId, userId, isGetAttributes );
/* 割り当てられているロールはあるか ? */
if( roleList.size( ) == 0 )
System.out.println( "¥nNot assigned to any role" );
else
System.out.println( "¥nAssigned to roles:" );
/* リストを処理してロールと属性を表示する */
for( int i = 0; i < roleList.size( ); i++ ) {
/* リストから要素を取り出す */
RoleInfo roleInfo = ( RoleInfo )roleList.get( i );
/* ロール ID を取り出して表示する */
System.out.println( "- Role ID: " + roleInfo.getRoleId( ) );
/* 属性を表示するか ? */
if( isGetAttributes ) {
/* カレンダー ID を取り出す */
if( ( calendarId = roleInfo.getCalendarId( ) ) == null )
/* このロールに対して定義された ID がない場合は、'None' という ID が割り当てられる */
calendarId = "None";
/* カレンダー ID を表示する */
System.out.println(
" Attributes: Calendar ID=" + calendarId + "¥n" );
}
}
break;
/* 前のメニューに戻る */
case 'B' :
return;
/* ツールを終了する */
case 'Q' :
/* サーバから切断する */
disconnect( );
System.exit( 1 );
default:
System.out.println( "*** Invalid selection" );
}
}
}
/* 「Unhandled」例外 */
catch( Exception e ) {
System.err.println( e );
}
return;
}
セキュリティ情報のマッピング
ユーザとロールを定義した後、BEA WebLogic Server に対して定義された、これらのユーザとロールの関係およびユーザとグループの関係をそれぞれ定義する必要があります。これは、各ロールを BEA WebLogic Server のセキュリティ レルムにマッピングすることによって行います。
この節では、マッピングに必要なタスクのを実行方法について説明します。内容は以下のとおりです。
セキュリティ レルム グループの取得
BEA WebLogic Server のセキュリティ レルム グループのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。
public java.util.List getGroups(
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、セキュリティ レルム グループ名のリストを返します。
たとえば、次のコードは、セキュリティ レルム グループ名を取得して、groups リストに保存します。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。
List groups = principal.getGroups();
getGroups() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。
グループへのロールのマッピング
BEA WebLogic Server のセキュリティ レルム グループに BPM ロールをマッピングするには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。
public void mapRoleToGroup(
java.lang.String roleId,
java.lang.String orgId,
java.lang.String groupId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
mapRolesToGroups() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
たとえば、次のコードでは、セキュリティ レルム admin にオーガニゼーション ORG1 のロール role1 がマッピングされます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 mapRoleToGroup() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 グループへの複数のロールのマッピング BEA WebLogic Server のセキュリティ レルム グループに複数の BPM ロールをマッピングするには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 mapRolesToGroups() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.mapRoleToGroup(“role1”, “ORG1”, “admin”);
public void mapRolesToGroups(
java.lang.String orgId,
java.util.Map rolesToGroupMap
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、オーガニゼーション ORG1 に対するマップ map1 で定義されたとおりに、複数のグループに対して複数のロールがマッピングされます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 mapRolesToGroups() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 特定のロールに対するグループ マッピングの取得 ロールのマッピング先グループの名前を取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getMappedGroup メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.mapRolesToGroups(“ORG1”, “map1”);
public java.lang.String getMappedGroup(
java.lang.String roleId,
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、指定されたロールのマッピング先セキュリティ レルム グループを返します。マッピングが存在しないときはヌルを返します。 たとえば、次のコードでは、オーガニゼーション ORG1 のロール role1 に関連付けられた、マッピングされたグループを返します。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getMappedGroups() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。 特定のオーガニゼーションに対して定義されているすべてのロールに対するグループ マッピングの取得 特定のオーガニゼーションに対して定義されているすべてのロールのマッピング先グループのリストを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 getRoleMappingsInOrg() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
principal.getMappedGroups(“role1”, “ORG1”);
public java.util.Map getRoleMappingsInOrg(
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、key-value ペアのマップを返します。このペアでは、キーとしてロール ID、値としてグループ ID が指定されています。 たとえば、次のコードでは、オーガニゼーション ORG1 に対するロール対グループのマップが返されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getRoleMappingsInOrg() メソッドの詳細については、Javadoc の com.bea.wlpi.server.principal.WLPIPrincipal を参照してください。
Map map = principal.getRoleMappingsInOrg(“ORG1”);
パーミッションのコンフィグレーション
ロールおよびユーザに対して、特定の BPM 機能へのアクセスを保護する手段としてパーミッションのコンフィグレーションを行うことができます。
この節では、パーミッションおよびパーミッションのコンフィグレーションに関連するタスクの実行方法について説明します。内容は以下のとおりです。
パーミッションの概要
各ロール、ユーザの一方または両方に対して設定できるパーミッションおよびパーミッションの設定に使用できる、関連した com.bea.wlpi.common.security.EnumPermission 静的値を次の表に示します。特定のロールまたはユーザに対するパーミッションの設定方法については、それぞれ、ロール固有のパーミッションの設定またはユーザ固有のパーミッションの設定を参照してください。
パーミッションの詳細については、Javadoc の com.bea.wlpi.common.security.EnumPermission を参照してください。 すべてのロールに対するパーミッションの取得 すべてのロール パーミッションを取得するには、次の com.bea.wlpi.server.permission.Permission メソッドを使用します。 注意: getAllRolePermissions() メソッドを実行するには、相当量のリソースが必要となる場合があります。実行時操作中には実行しないでください。 このメソッドは、com.bea.wlpi.common.security.RolePermissionInfo オブジェクトのリストを返します。ロールに対するパーミッションについての情報にアクセスするには、RolePermissionInfo オブジェクトに記載の RolePermissionInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、すべてのロール パーミッションが返されます。このコード例では、principal は WLPIPrincipal EJB への EJBObject 参照を表しています。 getAllRolePermissions() メソッドの詳細については、Javadoc の com.bea.wlpi.server.permission.Permission を参照してください。 特定のロールに対するパーミッションの取得 ロールに割り当てられたパーミッションのリストを取得するには、次の com.bea.wlpi.server.permission.Permission メソッドを使用します。 getRolePermissions() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
public java.util.List getAllRolePermissions(
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowExceptionList rolePermissions = principal.getAllRolePermissions();
public com.bea.wlpi.common.RolePermissionInfo getRolePermissions(
java.lang.String roleName,
java.lang.String orgId
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
このメソッドは、com.bea.wlpi.common.security.RolePermissionInfo オブジェクトを戻します。特定のロールについての情報にアクセスするには、RolePermissionInfo オブジェクトに記載の RolePermissionInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、オーガニゼーション ORG1 のロール role1 に対するパーミッションが返されます。このコード例では、permission は Permission EJB への EJBObject 参照を表しています。 getRolePermissions() メソッドの詳細については、Javadoc の com.bea.wlpi.server.permission.Permission を参照してください。 すべてのユーザに対するパーミッションの取得 すべてのユーザ パーミッションを取得するには、以下の com.bea.wlpi.server.permission.Permission メソッドのいずれかを使用します。 メソッド 1 メソッド 2 注意: getAllUserPermissions() メソッドを実行するには、相当量のリソースが必要となる場合があります。実行時操作中には実行しないでください。 getAllUserPermissions() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
RolePermissionInfo rolePermissions =
permission.getRolePermissions(“role1”, “ORG1”);public java.util.List getAllUserPermissions(
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowExceptionpublic java.util.List getAllUserPermissions(
boolean getRoles
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
各メソッドは、com.bea.wlpi.common.security.UserPermissionInfo オブジェクトのリストを返します。第 1 のメソッドでは、デフォルトでは、ユーザの割り当て先ロールから継承されたパーミッションが戻されます。第 2 のメソッドでは、getRoles ブール型フラグの値に基づいて、継承されたパーミッションを返すかどうかが決定されます。ユーザ固有パーミッションについての情報にアクセスするには、UserPermissionInfo オブジェクトに記載の UserPermissionInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、特定のユーザに対して設定されたすべてのパーミッションが(デフォルトで返されるユーザの割り当て先ロ×ルから継承されたパーミッションと共に)返されます。このコード例では、permission は Permission EJB への EJBObject 参照を表しています。 getAllUserPermissions() メソッドの詳細については、Javadoc の com.bea.wlpi.server.permission.Permission を参照してください。 特定のユーザに対するパーミッションの取得 特定のユーザに関連付けられたパーミッションのリストを取得するには、以下の com.bea.wlpi.server.permission.Permission メソッドのいずれかを使用します。 メソッド 1 メソッド 2 getUserPermissions() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List userPermissions = principal.getAllUserPermissions();
public com.bea.wlpi.common.UserPermissionInfo getUserPermissions(
java.lang.String userName
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowExceptionpublic com.bea.wlpi.common.UserPermissionInfo getUserPermissions(
java.lang.String userName,
boolean getRoles
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
各メソッドは、com.bea.wlpi.common.security.UserPermissionInfo オブジェクトを返します。第 1 のメソッドでは、デフォルトで、ユーザの割り当て先ロールのリストも返されます。第 2 のメソッドでは、getRoles ブール型フラグの値に基づいて、ロールのリストを返すかどうかが決定されます。ユーザ固有パーミッションについての情報にアクセスするには、UserPermissionInfo オブジェクトに記載の UserPermissionInfo オブジェクト メソッドを使用します。 たとえば、次のコードでは、特定のユーザに対して設定されたすべてのパーミッションが(デフォルトで返される、ユーザの割り当て先ロ×ルと共に)返されます。このコード例では、permission は Permission EJB への EJBObject 参照を表しています。 getUserPermissions() メソッドの詳細については、Javadoc の com.bea.wlpi.server.permission.Permission を参照してください。 特定のパーミッションの設定のチェック PermissionInfo オブジェクトに対して特定のパーミッションが設定されているかを調べるには、次の com.bea.wlpi.common.security.PermissionInfo メソッドを使用します。 hasPermission() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
List userPermissions = permission.getUserPermissions();
public boolean hasPermission(
com.bea.wlpi.common.security.EnumPermission permission
)
このメソッドは、指定されたパーミッションがオブジェクトに含まれているかを示すブール値を返します。 たとえば、次のコードでは、指定されたパーミッションが設定されているかどうかを調べます。このコード例では、permissionInfo は PermissionInfo クラスへのオブジェクト参照を表しています。 hasPermission() メソッドの詳細については、Javadoc の com.bea.wlpi.server.permission.Permission を参照してください。 ロール固有のパーミッションの設定 任意の数のロールに対してパーミッションまたはパーミッション グループを設定するには、以下のメソッドを使用します。 特定のロールに対してパーミッションを設定する 特定のロールに対するパーミッションを設定するには、次の com.bea.wlpi.common.security.PermissionInfo メソッドを使用します。 setPermission() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
boolean hasPermission =
permissionInfo.hasPermission(P_Administer_User);public void setPermission(
com.bea.wlpi.common.security.EnumPermission permission,
boolean value
)
たとえば、次のコードでは、PermissionInfo オブジェクトに対して Administer User パーミッションが設定されます。このコード例では、permissionInfo は PermissionInfo クラスへのオブジェクト参照を表しています。 詳細については、PermissionInfo オブジェクトを参照してください。 複数のロールに対してパーミッションのグループを設定する 任意の数のロールに対してパーミッション グループを設定するには、次の com.bea.wlpi.server.permission.Permission メソッドを使用します。 setRolePermissions() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
permissionInfo.setPermission(P_Administer_User);
public void setRolePermissions(
java.util.List roleInfo
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、指定された roleInfo RolePermissionInfo オブジェクト内で定義された情報に基づいてロール固有のパーミッションが設定されます。このコード例では、permission は Permission EJB への EJBObject 参照を表しています。 setRolePermissions() メソッドの詳細については、Javadoc の com.bea.wlpi.server.permission.Permission を参照してください。 ユーザ固有のパーミッションの設定 任意の数のユーザに対して、特定のパーミッションまたはパーミッション グループを設定するには、以下のメソッドを使用します。 のユーザ 1 人に固有なパーミッションを設定する 特定のユーザに対する単一のパーミッションを設定するには、次の com.bea.wlpi.common.security.PermissionInfo メソッドを使用します。 setPermission() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
permission.setRolePermissions(roleInfo);
public void setPermission(
com.bea.wlpi.common.security.EnumPermission permission,
boolean value
)
たとえば、次のコードでは、PermissionInfo オブジェクトに対して Administer User パーミッションが設定されます。このコード例では、permissionInfo は PermissionInfo クラスへのオブジェクト参照を表しています。 詳細については、PermissionInfo オブジェクトを参照してください。 複数のユーザに対してパーミッション グループを設定する 任意の数のユーザに対するパーミッション グループを取得するには、次の com.bea.wlpi.server.principal.WLPIPrincipal メソッドを使用します。 setUserPermissions() メソッドのパラメータを次の表に示します。パラメータには値を指定する必要があります。
permissionInfo.setPermission(P_Administer_User);
public void setUserPermissions(
java.util.List userInfo
) throws java.rmi.RemoteException,
com.bea.wlpi.common.WorkflowException
たとえば、次のコードでは、指定された userInfo UserPermissionInfo オブジェクト内で定義された情報に基づいてユーザ パーミッションが設定されます。このコード例では、permission は Permission EJB への EJBObject 参照を表しています。 setUserPermissions() メソッドの詳細については、Javadoc の com.bea.wlpi.server.permission.Permission を参照してください。
permission.setUserPermissions(userInfo);
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |