This article focuses on the web application security related features of the Apache Geronimo server. The sample application covered in this article is a basic time reporting system that uses Servlets, JSPs and J2EE declarative security. In addition to above features it uses Geronimo's embedded Derby database to store user information of the system. Even though this application uses a database to hold user information, it is merely for configuration purposes. For detailed information on the usage of JDBC in Geronimo, refer the Simple database access sample application article.

After reading this article you should be able to configure Geronimo application server for web applications with declarative security features.

Web Applications in Geronimo

Apache Geronimo includes a Web application container supporting J2EE Web applications. The Web container itself supports basic configuration such as network ports and SSL options, and each Web application may include Geronimo-specific configuration information as well. Web applications participate in the Geronimo security infrastructure, so authenticating to a Web application allows access to secure EJBs and Connectors as well.

Apache Geronimo currently supports two Web containers: Jetty and Tomcat.

Jetty

Jetty is a 100% Java HTTP Server and Servlet Container. This means that you do not need to configure and run a separate Web server in order to use servlets and JSPs to generate dynamic content. Jetty is a fully featured Web server for static and dynamic content.

Unlike separate server/container solutions, Jetty's Web server and Web application run in the same process without interconnection overheads and complications. Furthermore, as a pure java component, Jetty can be easily included in your application for demonstration, distribution or deployment. Jetty is available on all Java supported platforms.http://jetty.mortbay.org/jetty/index.html

Tomcat

Apache Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies.http://tomcat.apache.org/

Application Overview

The Time Report application helps to report working times of different projects. Even though this is not a full blown time reporting application, it covers most of the displaying and security related features web applications in Apache Geronimo.

This sample application allows two types of user groups to report their time tasks to the system, namely managers and employees. Both type of users have to provide their credentials before reporting time tasks. Managers are more of super users of the system, so they can add employees to the system additionally.

The Time Report application has the following list of pages.

Welcome

Login

Time Report

Add Employees

Logout

The following figure illustrates overview of application flow:

By default the given sample application is directed to the Welcome page with a link to the Time Report functionality. The users can access the Time Report page by providing a valid user name and password to the Login page. If those provided user credentials are from a manager role, Time Report page will display an additional link to the Add Employees functionality too.

Application contents

Following is the main folder hireachy of the Time Reporting application. It display both JSPs and configuration files used in the application.

In addition to the above JSPs and configurations, two other servlets are also required to fullfil the business logic of the application.

AddTimeRecordServlet - Read the input data from the Time Report page

AddEmployeeServlet - Capture input information from Add Employee page

Security configuration of the Time Report application is handled by geronimo-web.xml and web.xml files. geronimo-web.xml is used to define user roles of the application with TimeReportRealm.

geronimo-web.xml

web.xml will map the defined user roles to resources in the web application. It also defines the login configurations of the application.

web.xml

To restrict access to the Add Employee functionality from Time Report page, programmatic authentication has beeen used as in indicated below.

employee/index.jsp

Tools used

The tools used for developing and building the Time Reporting sample application are:

Eclipse

The Eclipse IDE was used for development of the sample application. This is a very powerful and popular open source development tool. It has a integration plug-ins to the Geronimo too. Eclipse can be downloaded from the following URL:http://www.eclipse.org

Apache Ant

Ant is a pure Java build tool. It is used for building the war files for the Time Reporting application. Ant can be downloaded from the following URL:http://ant.apache.org

For the verification after the deployment,click on the Security Realms link in the Geronimo Console and check under new security realm for the TimeReportRealm.

Building

Time Report application comes with an Ant script to help users to build from source code. Open a command prompt window and navigate to the time_report directory and just give ant command to build. This will create a TimeReport.war under the releases folder in the time_report. Now, you are ready to deploy the Time Report application in the Geronimo Application server.

Deploying

Deploying the sample application is pretty straight forward, since we are using the Geronimo Console.

Scroll down to Deploy New from the Console Navigation panel.

Load TimeReport.war from time_report/releases folder in to the Archive input box.

Testing of the Sample Application

User can access Time Report page providing username as emp1 and password with pass1. To login to the application as a Manager provide mgm1 and pass3 credentials.

Summary

This article has shown you how to deploy web application in to the Geronimo Application server with J2EE declarative security features. You followed step-by-step instructions to build, deploy and test the sample application.