2012-05-09 26 views
12

Trong JBoss AS 5, tôi có nguồn dữ liệu được xác định trong * -ds.xml nhưng đặt tên người dùng/mật khẩu được mã hóa trong * -jboss-beans.xml.JBoss AS 7.1 - nguồn dữ liệu cách mã hóa mật khẩu

Bây giờ trong JBoss AS 7.1, nguồn dữ liệu được định nghĩa trong standalone.xml hoặc domain.xml. Tôi nên đặt mật khẩu được mã hóa trong AS 7.1 ở đâu?

Nói cách khác, mật khẩu rõ ràng được mã hóa và bảo đảm như thế nào trong AS 7?

Trả lời

27

Trong AS7, bạn có thể sử dụng SecureIdentityLoginModule để thêm tên miền mật khẩu được mã hóa. Ví dụ, bạn có thể định nghĩa một lĩnh vực an ninh trong standalone.xml hoặc 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> 

Sau đó, bạn có thể thêm miền bảo mật này trong nguồn dữ liệu cụ thể của bạn có sử dụng userid/kết hợp pwd này trong standalone.xml hoặc miền .xml:

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

để mã hóa mật khẩu riêng của mình, bạn có thể chạy lệnh này (xin vui lòng kiểm tra phiên bản của jar picketbox và jar đăng nhập AS7 tải cụ thể của bạn để thay thế cho phù hợp):

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 

Thao tác này sẽ trả lại mật khẩu được mã hóa mà bạn có thể sử dụng trong miền bảo mật của mình.

Bạn có thể đọc thêm về hệ thống phụ bảo mật JBoss AS7 here. Vì đá nguồn mở, bạn có thể xem cách mã hóa hoạt động trong mã nguồn của SecureIdentityLogin. Bạn sẽ thấy mã nguồn mà nó sử dụng Blowfish để mã hóa.

+0

Cũng xem câu trả lời từ shatk, các managedConnectionFactoreName mô-đun-option cần phải được cung cấp. –

5

Dưới đây là hoàn toàn an ninh miền Cấu hình cho 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> 
+0

Thực sự có thể có cùng một mô-đun bảo mật cho nhiều nguồn dữ liệu không? Tôi đã đọc tài liệu jboss và họ chỉ đề cập đến một nguồn dữ liệu: jboss.jca: service = {type}, name = {jndiName}. Tôi thấy bạn đã chỉ định tên = dataSource-1-PoolName, dataSource-2-PoolName –

2

Trong một môi trường CentOS phát hành 6.3, JBoss-EAP-6.0.0 này chỉ làm việc với mã = ​​"SecureIdentity", sử dụng picketbox-4.0.9.Final-redhat-1.jar để mã hóa mật khẩu.

<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" cung cấp cho "PB00024: Truy cập bị từ chối: Chưa xác thực người gọi: null".

Nguồn: https://docs.jboss.org/author/display/AS7/Security+subsystem+configuration

1

tạo dự án đơn giản với lọ ( 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) và chạy lớp tuỳ chỉnh với args đầu vào:

public class Test { 

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

    } 

} 

Output sẽ là: Encoded mật khẩu: 3d5bc094c128 ...

2

Đối với những người quan tâm đến việc này đang chạy trên cửa sổ (và trong trường hợp của tôi trên 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 

Hope this helps, Matteo

Các vấn đề liên quan