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 コマンド・グループ の該当コマンドの使用法に関する情報を参照してください。
このサンプル・シナリオでは、以下の手順を実行します。
「プログラミングの前提条件」トピックで説明されている情報を参照済みであること、またトピックの手順を実行済みであることを確認してください。
サンプル・コードを使用する前に、以下の構成ステップを完了する必要があります。wsadmin ツールを開始して、以下のコマンドを実行します。変数 を、実際に使用する値に置き換えます。
$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 ]]]' )
$AdminTask createUser {-uid vmmadmin -password tempPass -confirmPassword tempPass
-cn admincn -sn adminsn -securityDomainName domain1 }
$AdminTask mapIdMgrUserToRole {-userId vmmadmin -roleName IdMgrAdmin -securityDomainName 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();
}
}