Document Information
Preface
Part I Introduction
1. Overview
2. Using the Tutorial Examples
Part II The Web Tier
3. Getting Started with Web Applications
4. JavaServerTM Faces Technology
5. Introduction to Facelets
6. Unified Expression Language
7. Using JavaServerTM Faces Technology in Web Pages
8. Using Converters, Listeners and Validators
9. Developing With JavaServerTM Faces Technology
10. Java Servlet Technology
Part III Web Services
11. Introduction to Web Services
12. Building Web Services with JAX-WS
13. Building RESTful Web Services with JAX-RS and Jersey
Part IV Enterprise Beans
14. Enterprise Beans
15. Getting Started with Enterprise Beans
16. Running the Enterprise Bean Examples
Part V Contexts and Dependency Injection for the JavaTM EE Platform
17. Introduction to Contexts and Dependency Injection for the JavaTM EE Platform
18. Running the Basic Contexts and Dependency Injection Examples
Part VI Persistence
19. Introduction to the Java Persistence API
20. Running the Persistence Examples
21. The Java Persistence Query Language
22. Creating Queries Using the Criteria API
Part VII Security
23. Introduction to Security in the Java EE Platform
24. Getting Started Securing Enterprise Applications
25. Getting Started Securing Web Applications
Using Deployment Descriptors to Secure Web Applications
Introduction to Web Application Deployment Descriptors
Specifying Security Constraints
Specifying a Web Resource Collection
Specifying an Authorization Constraint
Specifying a Secure Connection
Specifying Separate Security Constraints for Different Resources
Specifying an Authentication Mechanism
HTTP Basic Authentication
Form-Based Authentication
HTTPS Client Authentication
Digest Authentication
Working with Security Roles
Reviewing Security Concepts
Declaring Security Roles
Mapping Security Roles to Enterprise Server Groups
Using Programmatic Security with Web Applications
Authenticating Users Programmatically
Checking Caller Identity Programmatically
Example Code for Programmatic Security
Declaring and Linking Role References
Using Message Security with Web Applications
Examples: Securing Web Applications
Setting Up Your System for Running the Security Examples
Example: Basic Authentication with a Servlet
Specifying Security in the Deployment Descriptor
Building, Packaging, and Deploying the Servlet Basic Authentication Example Using NetBeans IDE
Building, Packaging, and Deploying the Servlet Basic Authentication Example Using Ant
Running the Basic Authentication Servlet
Troubleshooting the Basic Authentication Example
Example: Basic Authentication with JAX-WS
Adding Security Elements to the Deployment Descriptor
Building and Deploying helloservice with Basic Authentication Using NetBeans IDE
Building and Deploying helloservice with Basic Authentication Using Ant
Building and Running the helloservice Client Application with Basic Authentication Using NetBeans IDE
Building and Running the helloservice Client Application with Basic Authentication Using Ant
Example: Form-Based Authentication with a Servlet
Creating the Login Form and the Error Page
Specifying Security in the Deployment Descriptor
Building, Packaging, and Deploying the Form-Based Authentication Example Using NetBeans IDE
Building, Packaging, and Deploying the Form-Based Authentication Example Using Ant
Testing the Form-Based Authentication Web Client
Part VIII JavaTM EE Supporting Technologies
26. Introduction to JavaTM EE Supporting Technologies
27. Transactions
28. Resource Connections
Index
|
|
Overview of Web Application Security
In the Java EE platform, web components provide the dynamic extension capabilities for a web
server. Web components are either Java servlets, JSF pages, or web service endpoints.
The interaction between a web client and a web application is illustrated in
Figure 25-1. Figure 25-1 Java Web Application Request Handling Web components are supported by the services of a runtime platform called a
web container. A web container provides services such as request dispatching, security, concurrency, and
life-cycle management. Certain aspects of web application security can be configured when the
application is installed, or deployed, to the web container. Annotations and/or deployment descriptors are
used to relay information to the deployer about security and other aspects of
the application. Specifying this information in annotations or in the deployment descriptor helps
the deployer set up the appropriate security policy for the web application. Any
values explicitly specified in the deployment descriptor override any values specified in annotations.
Security for Java EE web applications can be implemented in the following ways:
Declarative security Declarative security can be implemented using either an application's deployment descriptor or using metadata annotations. Metadata annotations (or simply, annotations) are used to specify information about security within a class file. An application deployment descriptor is an XML file that is external to the application and which expresses an application’s security structure, including security roles, access control, and authentication requirements. When an application is deployed, security information specified using annotations can be overridden by the application deployment descriptor. Declarative security is described in Using Deployment Descriptors to Secure Web Applications.
Programmatic security Programmatic security is embedded in an application and is used to make security decisions. Programmatic security is useful when declarative security alone is not sufficient to express the security model of an application. Declarative security alone may not be sufficient in cases where conditional login in a particular work flow, instead of for all cases, is required in the middle of an application. New in Java EE 6 and Servlet specification 3.0 are the authenticate, login, and logout, methods of the HttpServletRequest interface. With the addition of the authenticate, login, and logout methods to the Servlet specification, an application deployment descriptor is no longer required for web applications, but may still be used to further specify security requirements beyond the basic default values. Programmatic security is discussed in Using Programmatic Security with Web Applications
Message Security Message security works with web services and incorporates security features, such as digital signatures and encryption, into the header of a SOAP message, working in the application layer, ensuring end-to-end security. Message security is not a component of Java EE 6, but is included here for informational purposes only. Message security is discussed in Using Message Security with Web Applications.
Some of the material in this chapter builds on material presented earlier in
this tutorial. In particular, this chapter assumes that you are familiar with the
information in the following chapters:
The material in The Java EE 6 Tutorial, Volume I is copyright-protected and may not be published in other works without express written permission from Sun Microsystems.
|