2017-01-02 25 views
0

アプリケーションの現在の設定は、JBossサーバーを使用したJSFです。私は、ログインに失敗したページにナビゲートする既存の領域の自動化に沿って追加のロジックを含めることを望みます。 Realm(java)から成功したpricinpalを無効にするものを探してください。jboss realmへの追加ロジック

シナリオ:ユーザーが正しいパスワードとログインを入力しましたが、ログインできないような特定の条件があります。

構成:

standalone.xml

<security-domain name="login"> 
    <authentication> 
     <login-module code="Database" flag="sufficient"> 
      <module-option name="dsJndiName" value="java:/datasource"/> 
      <module-option name="principalsQuery" value="query"/> 
      <module-option name="rolesQuery" value="query"/> 
      <module-option name="hashAlgorithm" value="???"/> 
      <module-option name="hashEncoding" value="???"/> 
      <module-option name="principalClass" value="org.jboss.security.SimplePrincipal"/> 
     </login-module> 
    </authentication> 
</security-domain> 

のjboss-web.xmlの

<jboss-web> 
    <security-domain>login</security-domain> 
</jboss-web> 

のfaces-config.xmlの

<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>ApplicationRealm</realm-name> 
    <form-login-config> 
     <form-login-page>login.html</form-login-page> 
     <form-error-page>login-error.html</form-error-page> 
    </form-login-config> 
</login-config> 

私はいくつかのアイデアを持っていました非常に簡単に見えない簡単な変更にもかかわらず。あなたの追加のチェックが伴う場合

  • 書き込みカスタムレルムログインモジュールに

をセッションからpricipal削除し、ログインページ(シングルログインページのみ)で確認されたパラメータを設定するには、あなたに

答えて

2

ありがとうございましたjava:/datasourceからアクセス可能なデータベースと同じデータベース内のデータベースクエリは、principalsQueryのより洗練されたクエリです。

また、追加ロジックを実行するサーブレットフィルタを実装することもできます。テストに失敗し、ユーザーにアクセスを許可しない場合は、HttpServletRequest.logout()と呼び出してから、login-error.htmlページにリダイレクトします。

しかし、あなたのsecurity-domain設定を変更すると、あなたの追加ロジックが含まれている2番目のログインモジュールを追加することにより、これを行うにはよりエレガントなことがあります

com.yourorg.yourapp.ExtendedLoginCheckjavax.security.auth.spi.LoginModuleを実装
<security-domain name="login"> 
    <authentication> 
     <login-module code="Database" 
         flag="required"> 
      <module-option name="dsJndiName" value="java:/datasource"/> 
      <module-option name="principalsQuery" value="query"/> 
      <module-option name="rolesQuery" value="query"/> 
      <module-option name="hashAlgorithm" value="???"/> 
      <module-option name="hashEncoding" value="???"/> 
      <module-option name="principalClass" value="org.jboss.security.SimplePrincipal"/> 
     </login-module> 
     <login-module code="com.yourorg.yourapp.ExtendedLoginCheck" 
         flag="required" 
         module="name-of-wildfly-module-containing-ExtendedLoginCheck"> 
      <module-option name="your module option" value="your module option value" /> 
      ... 
     </login-module> 
    </authentication> 
</security-domain> 

login-moduleflag属性値がrequiredに変更されていることに注意してください。これらのモジュールは順番に実行され、両方の認証が成功するためには成功する必要があります。

+0

私が探していたものです。ありがとう – Smolda

関連する問題