0

オープン パスワードの代わりにパスワードのハッシュを使用する方法がわかりません。MS SQL データベースからオープン パスワードを取得すると、すべて正常に動作します。 standalone.xml:

<security-domain name="SD" cache-type="default">
 <authentication>
  <login-module code="Database" flag="required">
   <module-option name="dsJndiName" value="<jndi>"/>
   <module-option name="principalsQuery" value="select <open_pass> from <table> where <username> = ?"/>
   <module-option name="rolesQuery" value="select <role>, 'Roles' from <table> where <username> = ?"/>       
  </login-module>
 </authentication>
</security-domain>

web.xml:

<security-constraint>
    <display-name>General</display-name>
    <web-resource-collection>
        <web-resource-name>/</web-resource-name>
        <description/>
        <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>administrators</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
<security-role>
    <description/>
    <role-name>administrators</role-name>
</security-role>

しかし、次のようなものを使用しようとすると:

<security-domain name="SD" cache-type="default">
 <authentication>
  <login-module code="Database" flag="required">
   <module-option name="dsJndiName" value="<jndi>"/>
   <module-option name="principalsQuery" value="select <pass_hash> from <table> where <username> = ?"/>
   <module-option name="rolesQuery" value="select <role>, 'Roles' from <table> where <username> = ?"/>
   <module-option name="hashAlgorithm" value="SHA-1"/>
   <module-option name="hashEncoding" value="base64"/>       
  </login-module>
 </authentication>
</security-domain>

Login failure: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required正しいパスワードを入力しても取得できます。pass_hashフィールドにvarbinary(64)はデータベースの型があります。 私が逃したものは何ですか?

4

1 に答える 1

1

DatabaseServerLoginModuleを確認してください

また、base64 でエンコードされたパスワードを users テーブルに保存していますか。

于 2014-03-16T22:45:43.220 に答える