Tôi đang cố gắng tạo một dịch vụ web an toàn sẽ được sử dụng bởi các dịch vụ web khác. Lý tưởng nhất là khi khách hàng truy cập dịch vụ và không được xác thực, họ sẽ nhận được 401. Tôi muốn người dùng có thể xác thực bằng cách thêm tiêu đề xác thực vào yêu cầu. Tôi không muốn người dùng điền vào biểu mẫu đăng nhập và đăng bài đó. Tôi cũng không muốn nó lưu trữ bất kỳ thông tin xác thực đăng nhập nào trong một cookie (tức là giữ trạng thái), tất cả nó phải nằm trong tiêu đề xác thực gửi với mỗi yêu cầu. Tôi đã sử dụng roo mùa xuân để tạo ra dịch vụ web.Nghỉ ngơi xác thực cơ bản thông qua bảo mật mùa xuân mà không cần đăng nhập bằng hình thức
Điều tôi hiện có, (được lấy từ một trong các hướng dẫn bảo mật mùa xuân 3.1), khi người dùng nhận được 401, họ được nhắc với trang đăng nhập và sau đó đăng trang, nhận cookie mà họ gửi yêu cầu.
Đây là bảo mật mùa xuân của tôi xml.
<http use-expressions="true">
<intercept-url pattern="/customers/**" access="isAuthenticated()" />
<intercept-url pattern="/**" access="denyAll" />
<form-login />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="alice" password="other" authorities="user" />
<user name="custome1" password="other" authorities="user" />
</user-service>
</authentication-provider>
</authentication-manager>
Khi tôi gửi một yêu cầu từ curl, tôi nhận được như sau:
$ curl -i -H "Accept: application/json" -H "Authorization: Basic Y3VzdG9tZXIxOm90aGVy" http://localhost:8080/Secured/customers
HTTP/1.1 302 Found
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=B4F983464F68199FA0160DBE6279F440; Path=/Secured/; HttpOnly
Location: http://localhost:8080/Secured/spring_security_login;jsessionid=B4F983464F68199FA0160DBE6279F440
Content-Length: 0
Date: Thu, 25 Apr 2013 17:18:48 GMT
nơi tiêu đề thẻ cơ bản của tôi là base64 (Customer1: khác)
Làm thế nào tôi có thể nhận được các dịch vụ web để chấp nhận tiêu đề xác thực và không chuyển hướng tôi đến trang đăng nhập?
Khi tôi xóa tệp từ security.xml, tôi nhận được đoạn mã sau: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Sự cố cấu hình: Không thể xác thực AuthenticEntryPoint. Vui lòng đảm bảo rằng bạn có cơ chế đăng nhập được định cấu hình thông qua không gian tên (chẳng hạn như đăng nhập bằng hình thức) hoặc chỉ định tùy chỉnh AuthenticationEntryPoint với thuộc tính 'entry-point-ref'