 -----
 Introduction       
 -----
 1 June 2007
 -----

~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License.  You may obtain a copy of the License at
~~
~~   http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied.  See the License for the
~~ specific language governing permissions and limitations
~~ under the License.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/guides/mini/guide-apt-format.html

Introduction

  Redback started as an attempt to clean away some of the more annoying security related components of web applications and centralize them into a simple to use framework.  Some of the basic beliefs we started with where that authentication, authorization and user management were all basically seperate concerns, sure there are points where they rub up against each other but those are pretty clear points and not worth mashing up whole discrete concepts together.  
  
  Redback supports a number of authentication mechanisms, and a couple of authorization schemes including an implementation of role based access control.  Redback has been built on top of the plexus container so it is simple to have the core security system object into your code for making authentication, authorization or user management tasks through its api.  We also provide a war overlay based on xwork which provides all of the user management, authentication and remember me and single sign on functionalities.  An easy to use taglib allows you to include authorization conditional functionalities to your jsps.
  
  Redback is currently being used for providing a consistent security related user experience to Apache Continuum and Archiva.