 -----
 Introduction
 -----
 -----
 2012-11-23
 -----

~~ 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

  Apache 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.
  
  Apache Redback is currently being used for providing a consistent security related user experience to Apache Continuum and Archiva.
