2015-12-14 10 views
6

私は、Spring MVCを使用するJava Webアプリケーションを持っています。 webappはフォーム認証でJAASログインモジュールを使用するjboss AS7.1サーバーで実行されています。ユーザーがフォーム上のユーザー名とパスワードを入力すると、ログインはスムーズに行われます。ログインページ/フォームを表示せずにJAAS自動ログイン

私は今、ユーザーがログインフォームに記入したかのように「ユーザーをログインする」Javaコントローラを作成したいと考えています。

ユーザーがログインして考えられるため終了上記の方法は、任意の保護されたページへのアクセスを許可すべき
public void logInProgrammatically(String username, string password) 
{ 
    //??? 
} 

これは、ログインモジュールのJBossのの実装にアクセスして、いくつかのプロパティを設定することでプログラムすることができます?

+0

あなたは解決しようとしている正確な問題は何ですか? –

答えて

0

WebAuthentication Jbossは、ほとんどの場合、必要な機能を提供します。独自のサーブレットやカスタムクラスを作成することができます。hereは、userpasswordで直接呼び出すことができます。

e。でごlogInProgrammaticallyあなたはLoginHandlerに実装されたものと同様のものがhereを提示持つことができます。

public void logInProgrammatically(String username, string password) 
{ 
    // ... 
    WebAuthentication webA = new WebAuthentication(); 
    webA.login(username, password); 
    // ... 
} 
+0

WebauthenticationクラスがJBOSS7に存在しません。これは古いjbossバージョンで利用できます。なぜそれが削除されたのか分かりません。代わりがありますか? – user1884155

+0

@ user1884155他の質問のコメントに記載されているように。サーブレット3のログイン仕様を使っている 'Servlet3AuthenticationFilter'を使うことができます。 – dan

0

あなたがプログラム的に認証を達成するためにJAAS標準クラスを使用することができます。カスタムLoginModule実装(または標準実装)com.sample.CustomLoginModuleを使用しているとします。このログインモジュールはjboss設定XMLで設定されています。

手順1:JBossでセキュリティドメインを定義する。他のサーバーの場合、JAAS構成で同じ情報を構成できます。

<security-domain name="customlogin" cache-type="default"> 
    <authentication> 
     <login-module code="com.sample.CustomLoginModule" flag="required"> 
     </login-module> 
    </authentication> 
</security-domain> 

手順2:カスタムログインモジュールを使用して、プログラムでユーザーにログインします。このソリューションで

public void logInProgrammatically(String username, string password){ 
    CallbackHandler handler = //use proper implementation to capture username and password arguments. 
    LoginContext ctx = new LoginContext("customlogin", handler); 
    ctx.login(); 

}

、あなたは、特定のアプリケーションサーバーAPIにバインドされていません。このコードは、JAASの設定を変更したアプリケーションサーバーで移植可能です。

プログラム的にJAASを使用して認証するために、オラクルからのチュートリアルを参照してください。 http://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/tutorials/GeneralAcnOnly.html

+0

これは動作しません。コンテキストでログインしていますが、JBOSSコンテナはこの事実を認識していないためです。そのため、セキュリティで保護されたページへのアクセスを防ぎ、ログイン画面を表示します。どうしてこれなの? jbossは、ログインコンテキストが設定/使用していないことを、どのような魔法(リクエスト)プロパティで表示/使用しますか? – user1884155

1

私はそれはあなたが望む何をすべきかであると考えている:Authenticating Users Programmaticallyを。これはServlet API 3.0の一部であり、jbossログインモジュールではありません。

関連する問題