2015-01-28 26 views
6

Tôi có một ứng dụng Java-Web chạy trên Wildfly 8. Tôi cố gắng bảo mật dịch vụ web an toàn của mình với Chú thích an toàn. Tôi sử dụng công cụ dòng lệnh curl để kiểm tra phần còn lại api.Wildfly 8 Xác thực cơ bản

Thiết lập xác thực cơ bản dường như hoạt động. Http yêu cầu các dịch vụ Web có chú thích "@PermitAll" hoạt động tốt. Curl nói:

~ % curl -v http://localhost:8080/ItilityServer-web/rest/account 
> GET /ItilityServer-web/rest/account HTTP/1.1 
> User-Agent: curl/7.40.0 
> Host: localhost:8080 
> Accept: */* 
> 
< HTTP/1.1 200 OK 
< Connection: keep-alive 
< X-Powered-By: Undertow/1 
< Server: WildFly/8 
< Content-Length: 0 
< Date: Wed, 28 Jan 2015 10:47:11 GMT 
< 
* Connection #0 to host localhost left intact 

Nhưng yêu cầu http chứa tên người dùng và mật khẩu hợp lệ bị từ chối với mã trạng thái 401 không được phép. Wildfly ghi lại lỗi mật khẩu chưa khớp:

2015-01-28 11:42:43,565 TRACE [org.jboss.security] (default task-5) PBOX000263: Executing query SELECT a.password FROM Account a WHERE a.name = ? with username hans 
2015-01-28 11:42:43,566 DEBUG [org.jboss.security] (default task-5) PBOX000283: Bad password for username hans 

Nhưng điều này không đúng. Chi tiết ủy quyền đã được giải mã "aGFuczpoZWxtaWhlbG1paGVsbWk =" là hans: helmihelmihelmi và tên người dùng và mật khẩu này được lưu trữ trong db của tôi. Các truy vấn jpql giống như việc sử dụng tên miền bảo mật dẫn đến một tên "hans" không tên và mật khẩu "helmihelmihelmi" của nó.

đây thiết lập của tôi:

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

<context-param> 
    <param-name>resteasy.role.based.security</param-name> 
    <param-value>true</param-value> 
</context-param> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>Application</realm-name> 
</login-config> 

<security-role> 
    <role-name>store</role-name> 
</security-role> 

</web-app> 

(Tôi không biết những gì cõi an ninh là, vì vậy tôi chỉ còn lại tài sản trong thẻ đăng nhập-config này)

Miền bảo mật của tôi trong standalone.xml

<security-domain name="DBLogin" cache-type="default"> 
    <authentication> 
     <login-module code="Database" flag="required"> 
      <module-option name="dsJndiName" value="java:jboss/datasources/ExampleDS"/> 
      <module-option name="principalsQuery" value="SELECT a.password FROM Account a WHERE a.name = ?"/> 
      <module-option name="rolesQuery" value="SELECT a.userRole FROM Account a WHERE a.name = ?"/> 
      <module-option name="hashAlgorithm" value="SHA-256"/> 
      <module-option name="hashEncoding" value="Base64"/> 
      <module-option name="hashCharset" value="UTF-8"/> 
      <module-option name="unauthenticatedIdentity" value="guest"/> 
     </login-module> 
    </authentication> 
</security-domain> 

Restful webservice

@GET 
@RolesAllowed(AuthRole.STORE) 
@Produces(MediaType.APPLICATION_JSON) 
public Response getAccountByName() { 
    Response.ResponseBuilder builder = Response.ok(); 
    return builder.build(); 
} 

và import.xml để tạo ra sử dụng khi khởi động

insert into Account(id, name, email, password, user_role) values (0, 'hans', '[email protected]', 'helmihelmihelmi', 'store') 
insert into Store(id, name, zipcode, street, housenumber, town, account_id) values(0, 'Edeka', 72622, 'stephanstraße', 10, 'Reudern', 0); 

Không biết làm thế nào để tìm một giải pháp, bởi vì tôi thậm chí không biết vấn đề. Hy vọng ai đó có thể giúp đỡ.

Trả lời

4

Bạn không được lưu trữ mật khẩu không được mã hóa trong cơ sở dữ liệu. WildFly hy vọng bạn lưu trữ mật khẩu được băm, sử dụng thuật toán băm và mã hóa được chỉ định trong cấu hình login-module.

Khi tạo mới Account, sử dụng

org.jboss.security.auth.spi.Util.createPasswordHash() 

để có được mật khẩu băm để lưu trữ.

Theo quy tắc, lưu trữ mật khẩu thô là một nguy cơ bảo mật.

+0

Đó là giải pháp! Cảm ơn rất nhiều. – Helmosch

+0

IMHO lưu trữ một mật khẩu băm thô hoặc không an toàn nên được coi là sơ suất tội phạm những ngày này. –

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