Using one of the container-provided mechanisms described in the previous section should be your first choice for authentication. But, by definition, being container-provided means the application cannot dynamically add new users and roles to control who is granted access, at least not through a standard API defined by the servlet and JSP specifications.
For some types of applications, it’s critical to have a very dynamic authentication model; one that doesn’t require an administrator to define access rules before a new user can join the party. I’m sure you have seen countless sites where you can sign up for access to restricted content simply by filling out a form. One example is a project management site, where registered users can access document archives, discussion groups, calendars, and other tools for distributed cooperation. Another example is a personalized news site that you can customize to show news only about things you care about.
Unless you can define new users programmatically in the database used by an external authentication mechanism, you need to roll your own authentication and access-control system for these types of applications. In this section, we’ll look at the principles for how to do this. Note that this approach sends the user’s password as clear text, so it has the same security issues as the container-provided basic and form-based authentication methods.
Application-controlled authentication and access control requires ...