2011-02-25 12 views
6

मैं जेएक्स-आरएस एंडपॉइंट को सुरक्षित करने की कोशिश कर रहा हूं और वर्तमान में यह पता लगाने की कोशिश कर रहा हूं कि प्रमाणीकरण और प्रमाणीकरण कैसे काम करता है। अधिकांश उदाहरण काफी सरल हैं क्योंकि वे web.xml के माध्यम से केवल जावा ईई ऐप-सर्वर भूमिका से पिगबैक करते हैं।जेएक्स-आरएस और कस्टम प्रमाणीकरण

मैं सोच रहा हूं कि जावा ईई एएस भूमिकाओं से कुछ और कैसे उपयोग करें। उदाहरण के लिए: मैं सत्र या किसी प्रकार का टोकन (या किसी प्रकार का पहचानकर्ता) का उपयोग करना चाहता हूं।

उत्तर

7

यह सब आपके द्वारा उपयोग किए जा रहे जेएक्स-आरएस कार्यान्वयन पर निर्भर करता है। मैं एम्बेडेड Jetty पर Jersey का उपयोग कर रहा हूं।

SecurityHandler sh = new SecurityHandler(); 

// the UserRealm is the collection of users, and a mechanism to determine if 
// provided credentials are valid 
sh.setUserRealm(new MyUserRealm()); 

// the Authenticator is a strategy for extracting authentication credentials 
// from the request. BasicAuthenticator uses HTTP Basic Auth 
sh.setAuthenticator(new BasicAuthenticator()); 

How to Configure Security with Embedded Jetty

देखें एक बार जब आप HttpServletRequest में Principal है, तो आप JAX-आरएस अनुरोध के संदर्भ में इन इंजेक्षन कर सकते हैं।

public abstract class AbstractResource { 
    private Principal principal; 
    @Context 
    public void setSecurityContext(SecurityContext context) { 
     principal = context.getUserPrincipal(); 
    } 
    protected Principal getPrincipal() { 
     return principal; 
    } 
} 

@Path("/some/path") 
public class MyResource extends AbstractResource { 
    @GET 
    public Object get() { 
     Principal user = this.getPrincipal(); 
     // etc 
    } 
} 
2

अस्वीकरण: नहीं भूमिका अपनी खुद की सुरक्षा ढांचे करो जब तक आप वास्तव में, सच में, सच, एक की जरूरत है।

देखें कि जर्सी में OAuth filter क्या है। यह प्राधिकरण शीर्षलेख पढ़ता है जो सामान्य रूप से समझने वाले (HTTP बेसिक) से भिन्न प्रारूप में प्रमाण-पत्र रखता है। यह उन क्रेडेंशियल्स को भूमिकाओं में बदल देगा जिन्हें आप सुरक्षा (@RolesAllowed) को लागू करने के लिए उपयोग कर सकते हैं यदि आप Roles Allowed Filter में जोड़ते हैं जो वास्तव में प्रवर्तन करता है। यह फ़िल्टर करने का प्रयास करें कि वे फ़िल्टर कैसे काम करते हैं।

संबंधित मुद्दे