統合リポジトリー管理権限を使用するためのサンプル・コード
WebSphere Application Server 管理者ではないユーザーが、マルチセキュリティー・ドメイン環境内で Virtual member manager アプリケーション・プログラミング・インターフェース (API) にアクセスできるようにするために必要な、エンドツーエンドのステップ、コマンド、およびサンプル・コード・スニペットをここに示します。
統合リポジトリー管理権限によって、WebSphere Application Server 管理者ではないユーザーが、ユーザーおよびグループを管理し、管理ドメインとアプリケーション・ドメイン内の他の Virtual member manager API にアクセスすることができます。 Virtual member manager の資料のトピック「 セキュリティーの提供 」で、事前定義された役割とその権限についてお読みください。 wsadmin コマンド mapIdMgrUserToRole、mapIdMgrGroupToRole、removeIdMgrUsersFromRole、removeIdMgrGroupsFromRole、および listIdMgrUsersForRoles を使用して、この機能を実装できます。 詳細については 、 WebSphere Application Server AdminTaskのIdMgrConfig 」 のトピックで、これらのコマンドの使用方法についてお読みください
このサンプル・シナリオでは、以下の手順を実行します。
- セキュリティー・ドメインを有効範囲とするサーバーに wimperdomain アプリケーションをインストールします。 マルチセキュリティー・ドメイン環境では、各ターゲット・サーバーに Virtual member manager をデプロイする必要があります。各ターゲット・サーバーでは、セキュリティー・ドメイン内の Virtual member manager インスタンスへの参照を取得するため、サーバー有効範囲がそのセキュリティー・ドメインに関連付けられています。 この手順により、特定のドメインの EJB を介して Virtual member manager API を呼び出すことができます。 Virtual member manager API の必須アクセス・ロールが割り当てられているユーザー、またはそのドメインのスーパーユーザーのみが、該当する API を呼び出すことができます。
- セキュリティー・ドメインに対応するユーザー・レジストリー内にユーザーを作成します。 WebSphere Application Server 管理者としてログインしている必要があります。
- ユーザーを Virtual member manager 役割に割り当てます。 Virtual member manager の有効な事前定義役割は、IdMgrAdmin、IdMgrWriter、および IdMgrReader です。
- EJB ルックアップを使用するセキュリティー・ドメインに対応する Virtual member manager インスタンスにアクセスします。 Network Deployment 環境では、管理対象サーバー・ノード上の EJB が、コンテキストの絶対パス (例: cell/nodes/myNode/servers/server1/ejbna、ejbna は管理対象サーバー server1 の Virtual member manager の JNDI 名) を使用して最初に検索される必要があります。
- Virtual member manager 役割が割り当てられたユーザーとして、セキュリティー・ドメインに対応する Virtual member manager インスタンスで操作を実行します。
前提条件
情報を読み、トピック「 プログラミングの前提条件」で説明されているステップを完了していることを確認してください。
サンプル・コードを使用する前に、以下の構成ステップを完了する必要があります。 wsadmin ツールを開始して、以下のコマンドを実行します。 変数 を、実際に使用する値に置き換えます。
- セキュリティー・ドメインを有効範囲とするサーバーに wimperdomain アプリケーションをインストールします。 wimperdomain.ear アプリケーションは、
app_server_root/installableApps/ディレクトリーの下で提供されています。 wimperdomain.ear アプリケーションを、ドメインの特定のターゲット・サーバーにデプロイします。 EJB の固有の JNDI URL を指定する必要があります。$AdminApp.install('app_server_root/installableApps/wimperdomain.ear', '[-appname wimperdomain -BindJndiForEJBNonMessageBinding [[ wim.ejb WIMService wimejb.jar,META-INF/ejb-jar.xml ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome]] -MapModulesToServers [[ wim.ejb wimejb.jar,META-INF/ejb-jar.xml WebSphere:cell=myCell,node=myNode,server=server1 ]]]' ) - セキュリティー・ドメイン domain1 に対応するユーザー・レジストリー内にユーザー vmmadmin を作成します。 WebSphere Application Server 管理者としてログインしている必要があります。
$AdminTask createUser {-uid vmmadmin -password tempPass -confirmPassword tempPass -cn admincn -sn adminsn -securityDomainName domain1 } - セキュリティー・ドメイン domain1 に対応するユーザー・レジストリー内のユーザー vmmadmin に、Virtual member manager 役割 IdMgrAdmin を割り当てます。
$AdminTask mapIdMgrUserToRole {-userId vmmadmin -roleName IdMgrAdmin -securityDomainName domain1}
サンプル・コード
以下の手順で説明するように、次のエンドツーエンド・サンプル・コードをアプリケーション・コードに追加します。 変数 を、実際に使用する値に置き換えます。
- EJB ルックアップを使用するセキュリティー・ドメイン domain1 に対応する Virtual member manager インスタンスにアクセスします。 EJB JNDI は、前に「前提条件」セクションのステップ 1 で使用したものと同じです。
- 『前提条件』セクションのステップ 3 で Virtual member manager 役割を割り当てられたユーザー vmmadmin として、domain1 内にユーザーを作成します。
import commonj.sdo.DataObject; public class SimpleTest extends BaseApp { public static void createAsAdmin() { try { createUser("vmmadmin", "tempPass"); } catch (Exception e) { e.printStackTrace(); } } public static void createUser(String user, String password) throws Exception { DataObject result = (DataObject) runAsUser(user, password, new java.security.PrivilegedExceptionAction() { public Object run() throws Exception { //Note the service instance used is that of security domain obtained in step 1. DataObject root = service.createRootDataObject(); DataObject user = root.createDataObject(DO_ENTITIES, WIM_NS_URI, DO_PERSON_ACCOUNT); user.set("uid", "authzzuser"); user.set("cn", "authzzuser"); user.set("sn", "authzzuser"); user.set(PROP_PASSWORD, com.ibm.websphere.wim.util.PasswordUtil .getByteArrayPassword("authzzuser")); // Print Input datagraph System.out.println("Input datagraph before creating user" + printDO(root)); DataObject retObject = service.create(root); // Print the output datagraph System.out.println("Output datagraph after creating user" + printDO(retObject)); return retObject; } }); } public static void main(String[] args) { // Note that the EJB JNDI is same as one used in step 1. service = locateService("ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome"); createAsAdmin(); } }