- PR -

JAAS プロンプトを表示させないでログイン

1
投稿者投稿内容
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-18 11:19
jdk1.4

現在、既存のログインシステムにJAASを組み込みたいと考えています。
このときに制限がありまして、既存ログイン画面で入力されたID/PWで認証を行わなければなりません(ログインの際に新規プロンプトを表示させたくない)
下記サイトを参考にしているのですが、CallbackHandlerを使うと独自のプロンプトよりID/PWを取得しているように感じます。
そうではなくて、既存のログイン画面から取得済みのID/PWを使いたいのですが(プログラム上で渡されたID/PWを使いたい)、方法がわかりません。
ご存じの方がいらっしゃいましたら、ご教示いただきますよう宜しくお願いします。


http://72.5.124.55/javase/ja/6/docs/ja/technotes/guides/security/jaas/tutorials/SampleAcn.java


あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2008-08-18 12:06
既存のログイン画面で入力されたID/PWを返すCallbackHandlerを作ればいいだけでは?
必ずしもCallbackHandlerでプロンプトを出す必要はありませんよ。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-18 13:15
あしゅ様

ご返答ありがとうございます。
>既存のログイン画面で入力されたID/PWを返すCallbackHandlerを作ればいいだけでは?
>必ずしもCallbackHandlerでプロンプトを出す必要はありませんよ。
申し訳ないのですが、CallbackHandlerを実装すれば良いということは理解したのですが、実装方法がわかりません。
詳しく御説明させていただくと、handleメソッドで引数のCallback[]にID/PWを格納する方法がわかりません。
NameCallbackと、PasswordCallbackに値を格納したいのですが、インスタンス化するときに、プロンプトを指定するような記述がありました。
どうすればいいのか、検討がついていません。
何かヒントでもかまいませんので、ご教示願います。

参考サイト
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/security/auth/callback/CallbackHandler.html
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/security/auth/callback/Callback.html
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/security/auth/callback/NameCallback.html
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/security/auth/callback/PasswordCallback.html
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2008-08-18 15:22
まったく詳しくないのですが、

MyCallbackHandler内の標準・エラー入出力を全てコメントアウトして


nc.setName( username );
pc.setPassword( password );

とStringで渡して設定するではできないのですか?
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-18 16:18
progman様

ご回答ありがとうございます。
>MyCallbackHandler内の標準・エラー入出力を全てコメントアウトして
>nc.setName( username );
>pc.setPassword( password );
>とStringで渡して設定するではできないのですか?
いまいち解っていないのですが、MyCallbackHandlerがnewされると、handleメソッドが自動で呼ばれる感覚なのでしょうか?(デフォルトコンストラクタでhandleメソッドを読んでいる?)
そのときの引数Callback[]は何もセットされていないのでNULLのように思ってしまうのですが、あっていますか?
もし、あっているとすると、callbacks.lengthは0になるような・・・・
ちぐはぐなことを言っていたらごめんなさい。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2008-08-18 18:13
引用:

ももさんの書き込み (2008-08-18 16:18) より:
いまいち解っていないのですが、MyCallbackHandlerがnewされると、handleメソッドが自動で呼ばれる感覚なのでしょうか?(デフォルトコンストラクタでhandleメソッドを読んでいる?)


コード:

lc = new LoginContext("Sample", new MyCallbackHandler());
lc.login();


MyCallbackHandlerの実相を除いたログイン処理は、
極限まで端折るとこのようになるのはわかりますか?

MyCallbackHandler#handle()メソッドは、lc.login()の実装を経由して、
定義ファイルにより構成されたLoginModule群が呼び出すことになります。
また、どんなCallback[]が渡ってくるかはLoginModuleの実装次第です。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-20 11:38
あしゅ様

ご返答ありがとうございます。

>MyCallbackHandler#handle()メソッドは、lc.login()の実装を経由して、
>定義ファイルにより構成されたLoginModule群が呼び出すことになります。
>また、どんなCallback[]が渡ってくるかはLoginModuleの実装次第です。
恥ずかしながら、初めて知りました。
LoginModule次第なのですね。
残念ながら、時間がないためJAASを使用することをあきらめました。
ご丁寧に回答してくださった皆様、大変ありがとうございました。
このスレッドを終了させてください。
1

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