- PR -

J2EEのフォーム認証で処理を割り込ませたい

投稿者投稿内容
RS
会議室デビュー日: 2001/10/17
投稿数: 5
投稿日時: 2001-10-17 17:33
初めまして。
J2EEの認証についてご教授お願いします。

J2EEのフォームベース認証において認証が通ったときにある処理(ログインの記録等)を行わせたいのですが、どのような方法があるでしょうか。

jspではformのactionでj_security_checkを呼び出すだけなのですが、何か処理を割り込ませることはできないでしょうか。

環境はWeblogic6.0.2を使っています。

よろしくお願いいたします。
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2001-10-18 15:30
まず、「J2EEのフォームベース認証」というのは、言葉の使い方が違うように思います。
「フォームベース認証」は別に「J2EE」でしか使えないというわけではないので、「J2EEのアプリケーションでフォームベース認証を利用している」といった書き方が正解と思います。

…といった揚げ足取りは置いといて
「フォームベース認証」自体に処理を割り込ませるのは分からないですが、認証画面から次の画面に移った時に処理をしてやればいいだけでは?
(何か問題があるのでしょうか?)

[ メッセージ編集済み 編集者: ふうた 編集日時 2001-10-18 15:31 ]
RS
会議室デビュー日: 2001/10/17
投稿数: 5
投稿日時: 2001-10-18 16:19
ふうたさん、レスありがとうございます。

認証画面から次の画面に移った時に処理を行うのでは、認証後に再度その画面を呼び出したときにまた処理をしてしまいます。

たとえばAという画面に移ったときに処理を行うようにすると、最初のログイン時だけでなくその後にAという画面に移るたびに処理が実行されてしまいます。


また、認証を行うのは1画面とは限らないので割り込ませたいのです。

たとえばA,B,Cという3つの画面に対して同じセキュリティをかけているとします。
ブラウザを立ち上げて最初にAを表示しようとすると認証を求められますが、その後にBを表示しようとするとそのまま表示できますよね。
逆に最初にBを表示しようとしてその認証後はAも表示できます。
つまりA,B,Cの全てで処理を行わなければならなくなってしまうのです。


かいつまんで書くと、まさにログインのボタンを押してOKだったときのみに処理をしたいのです。
たとえばログインの記録などがそれにあたると思います。

何か良い方法はないでしょうか。
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2001-10-18 17:10
そういうことでしたか。納得しました。

どうやるんでしょうね?

あと教えて欲しいのですが「フォームベース認証」を使用しているというのは、
サーブレットで HTTP の Authorization ヘッダを意識して作りこみをしている
のではなく、お使いのJ2EEサーバで提供されている機能を利用しているのでしょうか?

後者の場合(そういうものがあるのかどうかも知らないですが)、J2EEサーバで
そういった処理が出来るような機能が提供されていないのでしょうか?

チラッと思いつくのは、セションオブジェクトを利用して、セションオブジェクトが
作成されていなければ、作成してアクセスログに記述するとかですが…。

どうなんでしょうねぇ。
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2001-10-18 17:14
基本認証やフォーム認証に関しては、
認証完了というEventをプログラム内でHandleするためのAPI自体が
まったく用意されていません。

ログイン通知に対するListenerを実装するのであれば、
現状では、ServletにあるHttpSessionを利用するしかないと思います。

ちなみに、WebLogic 6.0 は、Servlet v2.2 / JSP v1.1 ( J2EE v1.2 ) ですよね ???

[ Servlet API における、Event & Listener の追加項目 ]
1. Servlet API v2.2 以前
i) HttpSessionBinding

2. Servlet API v2.3
i) HttpSession & HttpSessionAttribute
ii) ServletContext & ServletContextAttribute

3. Servlet API v2.4 ( JSR154 )
i) ServletRequest ???
ii) ServletResponse ???

また、JSR154にて提案中のServlet API v2.4 で、
セッションと認証との関連性を明確化する予定だそうです。
RS
会議室デビュー日: 2001/10/17
投稿数: 5
投稿日時: 2001-10-18 17:58
>ふうたさん

フォームベース認証はServletで作り込んでいるわけではなく、J2EEサーバの機能を使用しています。
マニュアルを見たのですが、ログイン時に割り込むような昨日が見あたらなかったのでここで質問してみました。


>謎の白覆面さん

そうですか、認証完了を知る方法が用意されていないのですね。
ちなみに
  [ Servlet API における、Event & Listener の追加項目 ]
  1. Servlet API v2.2 以前
  i) HttpSessionBinding
この部分の意味が勉強不足でちょっとわからないのですが、もう少しヒントをいただけませんか?
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2001-10-18 18:54
> フォームベース認証はServletで作り込んでいるわけではなく、J2EEサーバの機能を使用しています。
> マニュアルを見たのですが、ログイン時に割り込むような昨日が見あたらなかったのでここで質問してみました。
>
フォーム認証そのものは、Application Serverで持つ機能です。
Servletの中で、認証されたユーザ情報を取得することができます。

> そうですか、認証完了を知る方法が用意されていないのですね。
JSR154で、認証に関してどのような結論が出るのか、これから注意深く見ていきたいですね。

> ちなみに
>   [ Servlet API における、Event & Listener の追加項目 ]
>   1. Servlet API v2.2 以前
>   i) HttpSessionBinding
> この部分の意味が勉強不足でちょっとわからないのですが、もう少しヒントをいただけませんか?
>
JDK にあるEvent & Listener機能を使ってイベント駆動を実現させます。
Servlet API v2.2 では、HttpSession生成&解放のタイミングでHttpSessionBindingEventを発行し、
そのイベントを受け取るHttpSessionBindingListener側で、HttpSessionに特化した処理を、
ほかのプログラムから独立して実装することが可能になります。
詳しいAPI仕様は、Servlet APIのJavadocをご覧ください。

また、イベント駆動型モデルは、もともとGUIの制御で取り入れられていた開発手法で、Java言語においては大変重要な要素です。
JDK(Java Core API)には、AWT/SwingというGUIのクラスが用意されていますので、
これらを通じて、イベント駆動型プログラミングの基本を勉強してみるのもいいかと思います。
RS
会議室デビュー日: 2001/10/17
投稿数: 5
投稿日時: 2001-10-18 19:17
ありがとうございます。

HttpSessionBindingEventについて調べてみることにします。

スキルアップ/キャリアアップ(JOB@IT)