Cosminexus 機能解説
ユーザ属性を取得するには,ログイン時に取得したい属性の一覧を指定する必要があります。次に,ユーザ属性の一覧を指定する場合のログイン処理の実装例を示します。
<%@ page import="com.cosminexus.admin.auth.callback.WebPasswordHandler" %> <%@ page import="com.cosminexus.admin.auth.AttributeEntry" %> <%@ page import="javax.security.auth.login.LoginContext" %> ... <% AttributeEntry[] attributes = new AttributeEntry[2]; attributes[0] = new AttributeEntry("cn", "full name", null); attributes[1] = new AttributeEntry("employeeNumber", "employee ID", null); LoginContext lc = new LoginContext("Portal", new WebPasswordHandler(request, response, attributes, "login.html", true)); try { lc.login(); } catch (LoginException e) { ... } %> ... |
属性の一覧に従って属性をリポジトリから取得し,UserAttributesオブジェクトに設定します。取得した属性は,java.lang.Object型として管理されています。使用するには,UserAttributesオブジェクトのメソッドを使用して,目的の属性を取得するところから始めます。
LoginContext lc = new ... // LoginContextクラスのインスタンス化 ... Subject subject = lc.getSubject(); Iterator it = subject.getPublicCredentials().iterator(); UserAttributes ua= (UserAttributes)it.next(); // uaにUserAttributesの ... // リファレンスが格納される。 |
属性の値を参照するには,UserAttributesオブジェクトに対して,次に示すgetAttributeメソッドを使用します(String型の場合)。
String role = (String)ua.getAttribute("Portal Role");
getAttributeメソッドでユーザ属性を取得する場合の実装例を次に示します。
<%@ page import="com.cosminexus.admin.auth.UserAttributes" %> <%@ page import="javax.security.auth.Subject" %> ... <% ... Subject subject = lc.getSubject(); UserAttributes attrs = (UserAttributes)subject.getPublicCredentials().iterator().next(); String fullname = (String)attrs.getAttribute("full name"); String eid = (String)attrs.getAttribute("employee ID"); %> ... |
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.