2012-03-13 31 views
12

Tôi có một lệnh REST được viết bằng JAX-RS và tôi cần thêm xác thực vào nó. Cho đến nay tất cả các thông tin tôi đã có thể tìm thấy về nó có những gợi ý để làm điều đó via spring, mà tôi không sử dụng. Có cái gì đó đã tồn tại, hoặc nó sẽ dễ dàng để viết, cái gì đó sẽ cho phép tôi chú thích một trong hai phương pháp, hoặc toàn bộ lớp học mà sẽ buộc các tiêu đề auth có mặt?Dịch vụ REST JAX-RS có thể được xác thực bằng chú thích bằng cách nào?

Tôi đang sử dụng tomcat6 và jersey, nếu điều đó quan trọng.

Cái gì như:

@Path("api") 
public class Api { 
    @GET 
    @AuthenticationRequired 
    public Response getInfo(...) {...} 
} 

Trả lời

6

Tôi nghĩ rằng bạn muốn import javax.annotation.Security.RolesAllowed;

Chú thích riêng của mình trông như thế này

@Path("/helloworld") 
@RolesAllowed({"ADMIN", "ORG1"}) 
public class helloWorld { 

@GET 
@Path("sayHello") 
@Produces("text/plain") 
@RolesAllowed("ADMIN") 
public String sayHello() { 
    return "Hello World!"; 
} 
} 
+1

tham khảo: http://docs.oracle.com/cd /E24329_01/web.1211/e24983/secure.htm#BABGBJAC – derdc

+2

Làm cách nào để xác định vai trò là gì và cách chúng cung cấp xác thực? – Daenyth

+0

Điều đó cụ thể cho ứng dụng. Tham khảo ở đây để biết cách tiếp cận khác của Spring-less, định nghĩa chúng trong web.xml http://docs.oracle.com/javaee/5/tutorial/doc/bncav.html – derdc

3

tôi sẽ quản lý an ninh ở cấp container. Dưới đây là một writeup tốt nếu bạn tình cờ được sử dụng Apache CXF:

http://cxf.apache.org/docs/secure-jax-rs-services.html

Và đây là một ví dụ cho Glassfish:

http://www.butonic.de/2010/06/18/a-simple-jax-rs-security-context-example-in-glassfish/

Dưới đây là một liên kết, trong đó thảo luận về JSR 250 chú thích (ví dụ như @RolesAllowed):

http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/twbs_jaxrs_impl_securejaxrs_annotations.html

+0

Liên kết cuối cùng có vẻ đã chết. Có vẻ là một trang trại liên kết. –

+0

@ Patrick M - Bạn nói đúng: có vẻ như "ericonjava" cho phép đăng ký miền của mình mất hiệu lực. Cảm ơn bạn đã "lên đầu". – paulsm4

+0

Đây là [linkbackback] (https://web.archive.org/web/20110318205916/http://www.ericonjava.com/?p=325) cho bài viết. Có vẻ hợp pháp. Thật không may, dịch vụ của tôi đang sử dụng Dropwizard, vì vậy đó là Jersey on Jetty thay vì Tomcat. Dù sao, có một +1. –

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