2017-07-07 3 views
0

Ich arbeite gerade an einer ziemlich modularen Anwendung, wo wir viele Gläser haben, die in einer Kriegsdatei verpackt und zusammengeklebt werden.@RolesAllowed usw. ohne web.xml

Einige dieser JAR-Dateien verfügen über REST-Ressourcen, die gesichert werden sollen. Üblicher Weg ist die @RolesAllowed-Annotation etc.

Aus meiner jetzigen Kenntnis ergibt dies eine existierende web.xml im WAR. Auf diese Weise müssten wir JAR-spezifische Informationen (z. B. Kontextwurzeln) innerhalb des WAR implementieren, und nicht an der Stelle, wo es hingehört.

Wie die meisten Dinge heutzutage - gibt es eine Möglichkeit, Sicherheitskontexte usw. ohne eine web.xml zu programmieren?

Antwort

0

Sie können den Zugriff auf Ihre REST-Ressourcen einschränken, indem RolesAllowedDynamicFeature in Ihrem REST Konfigurationsklasse registrieren, die

public class ApplicationConfig extends ResourceConfig { 
    public ApplicationConfig() { 
    super(ApplicationConfig.class); 
    register(RolesAllowedDynamicFeature.class); 
    } 
} 

von ResourceConfig erstreckt So können Sie Ihre Anwendungsrollen auf Ihre Ressourcen Methoden wie diese

import javax.annotation.security.PermitAll; 
import javax.annotation.security.RolesAllowed; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.SecurityContext; 

@Path("secured") 
@PermitAll 
public class SecuredResource { 

    @GET 
    @Path("user") 
    @RolesAllowed("user") 
    public String user(@Context SecurityContext sc) { 
    boolean test = sc.isUserInRole("user"); 
    return (test) ? "true": "false"; 
    } 

    @GET 
    @Path("admin") 
    @RolesAllowed("admin") 
    public String admin(@Context SecurityContext sc) { 
    boolean test = sc.isUserInRole("admin"); 
    return (test) ? "true": "false"; 
    } 
} 
verwenden

Die Jersey-Dokumentation enthält weitere Details zum Sichern von REST-Ressourcen mithilfe von Anmerkungen.

https://jersey.github.io/documentation/latest/security.html#d0e12428

0

Ich habe eine Weile nicht mit JAX-RS gearbeitet, aber beim letzten Mal, als ich die Annotation-basierte Sicherheit überprüft habe, ist web.xml nicht optional.

Siehe meine Antwort für Details. https://stackoverflow.com/a/20023018/839733

Verwandte Themen