web-dev-qa-db-ja.com

JBoss AS 7.1-データソースパスワードを暗号化する方法

JBoss AS 5では、*-ds.xmlでデータソースを定義していますが、ユーザー名/暗号化パスワードを* -jboss-beans.xmlに入れています。

現在、JBoss AS 7.1では、データソースはstandalone.xmlまたはdomain.xmlで定義されています。暗号化されたパスワードをAS 7.1のどこに配置すればよいですか?

言い換えると、AS 7でクリアパスワードはどのように暗号化および保護されますか?

17
Eric

AS7では、SecureIdentityLoginModuleを使用して、暗号化されたパスワードドメインを追加できます。たとえば、standalone.xmlまたはdomain.xmlでセキュリティドメインを定義できます。

<security-domain name="EncryptedPassword">
  <authentication>
    <login-module code="SecureIdentity" flag="required">
      <module-option name="username" value="test"/>
      <module-option name="password" value="encrypted_password"/>
    </login-module>
  </authentication>
</security-domain>

次に、standalone.xmlまたはdomain.xmlでこのuserid/pwdの組み合わせを使用する特定のデータソースにこのセキュリティドメインを追加できます。

  <datasource ... >
       .....
       <security>
              <security-domain>EncryptedPassword</security-domain>
       </security>
  </datasource>

パスワード自体を暗号化するには、次のコマンドを実行します(特定のAS7ダウンロードのpicketbox jarおよびlogging jarのバージョンを確認して、適宜置き換えてください)。

Java -cp $JBOSS_HOME/modules/org/picketbox/main/picketbox-4.0.6.<beta|final>.jar:$JBOSS_HOME/modules/org/jboss/logging/main/jboss-logging-3.1.0.<some_version>.jar:$CLASSPATH org.picketbox.datasource.security.SecureIdentityLoginModule password

これにより、セキュリティドメインで使用できる暗号化されたパスワードが返されます。

JBoss AS7セキュリティサブシステム ここ についての詳細を読むことができます。 open source rocksなので、 SecureIdentityLogin のソースコードでエンコードコードがどのように機能するかを確認できます。暗号化にBlowfishを使用していることがソースコードでわかります。

37
CoolBeans

以下は、Jboss AS-7の完全なセキュリティドメイン設定です。

     <security-domains>
        <!--  Security Setting's --> 
        <security-domain name="encryptedSecurity" cache-type="default">
            <authentication>
                <login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
                <module-option name="username" value="user_name"/>
                <module-option name="password" value="encrypted_password"/>
                <module-option name="managedConnectionFactoryName" value="jboss.jca:service=LocalTxCM,name=dataSource-1-PoolName,dataSource-2-PoolName"/>
            </login-module>
            </authentication>
        </security-domain>
6
shatk

これをWindowsで実行することに興味がある人(そして私の場合はJBoss EAP 6.4 ...)

set JBOSS_HOME=C:\dev\jboss\jboss-eap-6.4
set MYPATH=%JBOSS_HOME%\modules\system\layers\base\org\picketbox\main\picketbox-4.1.1.Final-redhat-1.
jar;%JBOSS_HOME%\modules\system\layers\base\org\jboss\logging\main\jboss-logging-3.1.4.GA-redhat-2.jar;
Java -classpath %MYPATH% org.picketbox.datasource.security.SecureIdentityLoginModule SecretPass

Encoded password: 13e0362237c93a9cda89f5b3da271521

これが役に立てば幸い、Matteo

4
Matteo Pelucco

CentOSリリース6.3、JBoss-EAP-6.0.0の環境では、パスワードの暗号化にpicketbox-4.0.9.Final-redhat-1.jarを使用して、code = "SecureIdentity"でのみ機能しました。

<security-domain name="some-ds-EncryptedPassword">
  <authentication>
    <login-module code="SecureIdentity" flag="required">
      <module-option name="username" value="username"/>
      <module-option name="password" value="encrypted_password"/>
    </login-module>
  </authentication>
</security-domain>

code = "SecureIdentityLogin"は "PB00024:Access Denied:Unauthenticated caller:null"を示します。

ソース: https://docs.jboss.org/author/display/AS7/Security+subsystem+configuration

2
DonZitrone

jars(jboss-logging-3.1.4.GA-redhat-2.jar picketbox-4.1.1.Final-redhat-1.jar picketbox-commons-1.0.0.final-redhat-3.jar picketboxでシンプルなプロジェクトを作成します-infinispan-4.1.1.Final-redhat-1.jar)と入力引数を持つカスタムクラスを実行します。

public class Test {

    public static void main(String[] args) throws Exception {
        new org.picketbox.datasource.security.SecureIdentityLoginModule()
                .main(args);

    }

}

出力は次のようになります:エンコードされたパスワード:3d5bc094c128 ...

1
user3136131