------------------------------------------------------------------------------
README file for the Apache Knox Gateway
------------------------------------------------------------------------------
This distribution includes cryptographic software.  The country in 
which you currently reside may have restrictions on the import, 
possession, use, and/or re-export to another country, of 
encryption software.  BEFORE using any encryption software, please 
check your country's laws, regulations and policies concerning the
import, possession, or use, and re-export of encryption software, to 
see if this is permitted.  See <http://www.wassenaar.org/> for more
information.

The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity 
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms.  The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS 
Export Administration Regulations, Section 740.13) for both object 
code and source code.

The following provides more details on the included cryptographic
software:
  This package includes the use of ApacheDS which is dependent upon the 
Bouncy Castle Crypto APIs written by the Legion of the Bouncy Castle
http://www.bouncycastle.org/ feedback-crypto@bouncycastle.org.

------------------------------------------------------------------------------
Description
------------------------------------------------------------------------------
The charter for the Gateway project is to simplify and normalize the
deployment and implementation of secure Hadoop clusters as well as be
a centralized access point for the service specific REST APIs exposed from
within the cluster.

The current state of this project provides the ability to dynamically
provision reverse proxy capabilities with filter chains that meet the cluster
specific needs for authentication.

HTTP BASIC authentication with identity being asserted to the rest of the
cluster via Pseudo/Simple authentication will be demonstrated for security.
In addition to Pseudo identity assertion Knox now provides trusted proxy user
identity assertion for providing access to Kerberos secured Hadoop clusters.

For API aggregation, the Gateway provides a central endpoint for access to
WebHDFS, WebHCat/Templeton, Hive, Starbase/HBase and Oozie APIs for
each cluster.

Future releases will extend these capabilities with additional
authentication, identity assertion, API aggregation and eventually management
capabilities.

------------------------------------------------------------------------------
Changes
------------------------------------------------------------------------------
Please see the CHANGES file.

------------------------------------------------------------------------------
Known Issues
------------------------------------------------------------------------------
Please see the ISSUES file.

------------------------------------------------------------------------------
Installation & Usage
------------------------------------------------------------------------------
Please see the Apache Knox Gateway User's Guide for details.
http://knox.apache.org/books/knox-0-6-0/user-guide.html#Quick+Start
http://knox.apache.org/books/knox-0-6-0/user-guide.html#Service+Details

------------------------------------------------------------------------------
Troubleshooting & Filing bugs
------------------------------------------------------------------------------
Please see the Apache Knox Gateway User's Guide for detailed information.
http://knox.apache.org/books/knox-0-6-0/user-guide.html#Troubleshooting

