Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 セキュリティ管理機能編


5.10.4 認証に成功したSubjectをHttpSessionに登録する実装

HttpSessionに設定するオブジェクトは,java.io.Serializableインタフェースを継承したオブジェクトになります。そのため,HttpSessionにはログイン時に生成したLoginContextインスタンスではなく,java.io.Serializableインタフェースを継承しているSubjectを格納してください。格納したSubjectは,ログアウトの実装で必要になります。SubjectをHttpSessionに格納する実装例(背景色付きの太字部分)を次に示します。

<%
  LoginContext lc = new LoginContext("Portal",
    new WebPasswordHandler(request, response, null, "login.html", true));
  try {
    lc.login();
    session.setAttribute("ExampleSubject", lc.getSubject());
  } catch (LoginException e) { ... }
%>
...

なお,ログイン後にSubjectに関連づけられるユーザ属性(UserAttributes)をセッションフェイルオーバで引き継がせる場合は,Subjectとユーザ属性をHttpSessionに格納する必要があります。Subjectとユーザ属性をHttpSessionに格納する実装例(背景色付きの太字部分)を次に示します。

<%
  LoginContext lc = new LoginContext("Portal",
    new WebPasswordHandler(request, response, null, "login.html", true));
  try {
    lc.login();
     session.setAttribute("ExampleSubject", lc.getSubject());
     session.setAttribute("ExampleCredential", lc.getSubject().getPublicCredentials().iterator().next());
  } catch (LoginException e) { ... }
%>
...