5 Securing RESTful Web Services
This chapter describes how to secure WebLogic Web services that conform to the Representational State Transfer (REST) architectural style using Java API for RESTful Web Services (JAX-RS).This chapter includes the following sections:
- About RESTful Web Service Security
- Securing RESTful Web Services Using web.xml
- Securing RESTful Web Services Using SecurityContext
- Securing RESTful Web Services Using Annotations
About RESTful Web Service Security
You can secure your RESTful Web services using one of the following methods to support authentication, authorization, or encryption:- Updating the
web.xml
deployment descriptor to define security configuration. See Securing RESTful Web Services Using web.xml. - Using the
javax.ws.rs.core.SecurityContext
interface to implement security programmatically. See Securing RESTful Web Services Using SecurityContext. - Applying annotations to your JAX-RS classes. See Securing RESTful Web Services Using Annotations..
- Using Jersey OAuth libraries to sign and verify requests. For more information about using and installing the OAuth libraries, see the Jersey and OAuth wiki at:
https://wikis.oracle.com/display/Jersey/OAuth
Securing RESTful Web Services Using web.xml
You secure RESTful Web services using theweb.xml
deployment descriptor as you would for other Java EE Web applications. For complete details, see "Developing Secure Web Applications" in Programming Security for Oracle WebLogic Server.For example, to secure your RESTful Web service using basic authentication, perform the following steps:
- Define a
for each set of RESTful resources (URIs) that you plan to protect. - Use the
element to define the type of authentication you want to use and the security realm to which the security constraints will be applied. - Define one or more security roles using the
tag and map them to the security constraints defined in step 1. For more information, see "security-role" in Programming Security for Oracle WebLogic Server. - To enable encryption, add the
element and set the
subelement toCONFIDENTIAL
. For more information, see"user-data-constraint" in Programming Security for Oracle WebLogic Server.
Securing RESTful Web Services Using SecurityContext
Thejavax.ws.rs.core.SecurityContext
interface provides access to security-related information for a request. The SecurityContext
provides functionality similar tojavax.servlet.http.HttpServletRequest
, enabling you to access the following security-related information:java.security.Principal
object containing the name of the user making the request.- Authentication type used to secure the resource, such as BASIC_AUTH, FORM_AUTH, and CLIENT_CERT_AUTH.
- Whether the authenticated user is included in a particular role.
- Whether the request was made using a secure channel, such as HTTPS.
SecurityContext
by injecting an instance into a class field, setter method, or method parameter using the javax.ws.rs.core.Context
annotation.For more information, see the Javadoc at:
SecurityContext
interface:http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/core/SecurityContext.html
@Context
annotation:http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/core/Context.html
SecurityContext
into the sc
method parameter using the @Context
annotation, and check whether the authorized user is included in the admin
role before returning the response.
Example 5-2 Securing RESTful Web Service Using SecurityContext
package samples.helloworld; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.SecurityContext; import javax.ws.rs.core.Context; ... @Path("/stateless") @Stateless(name = "JaxRSStatelessEJB") public class StlsEJBApp { ... @GET @Produces("text/plain;charset=UTF-8") @Path("/hello") public String sayHello(@Context SecurityContext sc) { if (sc.isUserInRole("admin")) return "Hello World!"; throw new SecurityException("User is unauthorized."); }
Securing RESTful Web Services Using Annotations
Thejavax.annotation.security
package provides annotations, defined in Table 5-1, that you can use to secure your RESTful Web services. For more information, see the Javadoc at: http://docs.oracle.com/javaee/6/api/index.html?javax/annotation/security/package-summary.html
.
Table 5-1 Annotations for Securing RESTful Web Services
Annotation | Description |
---|---|
DeclareRoles |
Declares roles.
|
DenyAll |
Specifies that no security roles are allowed to invoke the specified methods.
|
PermitAll |
Specifies that all security roles are allowed to invoke the specified methods.
|
RolesAllowed |
Specifies the list of security roles that are allowed to invoke the methods in the application.
|
RunAs |
Defines the identity of the application during execution in a J2EE container.
|
helloWorld
class. The sayHello method is annotated with the @RolesAllows
annotation to override the default and only allow users that belong to the ADMIN
security role.
Example 5-3 Securing RESTful Web Service Using SecurityContext
package samples.helloworld; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.annotation.Security.RolesAllowed; @Path("/helloworld") @RolesAllowed({"ADMIN", "ORG1"}) public class helloWorld { @GET @Path("sayHello") @Produces("text/plain") @RolesAllows("ADMIN") public String sayHello() { return "Hello World!"; } }
1 comment:
cheap air jordan
michael kors handbags
adidas stan smith
michael kors uk
adidas stan smith men
fitflops sale
cheap nfl jerseys
christian louboutin shoes
nike air huarache
discount oakley sunglasses
huarache shoes
cheap basketball shoes
nike zoom
oakley sunglasses
http://www.oakley-sunglass.in.net
tiffany online
jordan shoes on sale
adidas nmd for sale
nike air zoom structure 19
yeezy shoes
air jordans,cheap air jordans,air jordan shoes,air jordan 11,air jordan 13,air jordan 6,air jordan 4
Post a Comment