You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bu...@apache.org on 2012/12/12 10:17:17 UTC

svn commit: r841833 [3/28] - in /websites/staging/sling/trunk/content: ./ site/ site/46-line-blog.data/ site/authentication.data/ site/documentation.data/ site/first-steps.data/ site/getting-and-building-sling.data/ site/how-to-manage-events-in-sling.d...

Added: websites/staging/sling/trunk/content/site/authentication-actors.html
==============================================================================
--- websites/staging/sling/trunk/content/site/authentication-actors.html (added)
+++ websites/staging/sling/trunk/content/site/authentication-actors.html Wed Dec 12 09:16:44 2012
@@ -0,0 +1,140 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Apache Sling - Authentication - Actors</TITLE>
+    <LINK rel="stylesheet" href="http://sling.apache.org/site/media.data/site.css" type="text/css" media="all">
+    <LINK rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </HEAD>
+  <BODY>
+    <DIV class="title">
+      <DIV class="logo">
+        <A href="http://sling.apache.org/site/index.html">
+          <IMG border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </A>
+      </DIV>
+      <DIV class="header">
+        <A href="http://www.apache.org/">
+          <IMG border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </A>
+      </DIV>
+    </DIV>
+    <DIV class="menu">
+<P><B>Documentation</B><BR class="atl-forced-newline">
+<A href="getting-started.html" title="Getting Started">Getting Started</A><BR class="atl-forced-newline">
+<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A><BR class="atl-forced-newline">
+<A href="development.html" title="Development">Development</A><BR class="atl-forced-newline">
+<A href="bundles.html" title="Bundles">Bundles</A><BR class="atl-forced-newline">
+<A href="tutorials-how-tos.html" title="Tutorials & How-Tos">Tutorials &amp; How&#45;Tos</A><BR class="atl-forced-newline">
+<A href="configuration.html" title="Configuration">Configuration</A><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/apidocs/sling6/index.html" class="external-link" rel="nofollow">API docs</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.wiki" class="external-link" rel="nofollow">Wiki</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.faq" class="external-link" rel="nofollow">FAQ</A><BR class="atl-forced-newline"></P>
+
+<P><B>Project info</B><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">Downloads</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</A><BR class="atl-forced-newline">
+<A href="contributing.html" title="Contributing">Contributing</A><BR class="atl-forced-newline">
+<A href="news.html" title="News">News</A><BR class="atl-forced-newline">
+<A href="links.html" title="Links">Links</A><BR class="atl-forced-newline">
+<A href="project-information.html" title="Project Information">Project Information</A><BR class="atl-forced-newline">
+<A href="https://issues.apache.org/jira/browse/SLING" class="external-link" rel="nofollow">Issue Tracker</A><BR class="atl-forced-newline">
+<A href="http://svn.apache.org/viewvc/sling/trunk" class="external-link" rel="nofollow">Browse Source Repository</A><BR class="atl-forced-newline">
+<A href="security.html" title="Security">Security</A><BR class="atl-forced-newline"></P>
+
+<P><B>Sponsorship</B><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Become a Sponsor</A><BR>
+<A href="http://www.apache.org/foundation/buy_stuff.html" class="external-link" rel="nofollow">Buy Stuff</A></P>
+
+
+  <IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+  <P style="height: 135px"></P>
+    </DIV>
+    <DIV class="main">
+        <DIV class="breadcrump" style="font-size: 80%;">
+<A href="apache-sling.html" title="Apache Sling Website">Apache Sling Website</A>&nbsp;&gt;&nbsp;<A href="apache-sling.html" title="Apache Sling">Apache Sling</A>&nbsp;&gt;&nbsp;<A href="documentation.html" title="Documentation">Documentation</A>&nbsp;&gt;&nbsp;<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A>&nbsp;&gt;&nbsp;<A href="authentication.html" title="Authentication">Authentication</A>&nbsp;&gt;&nbsp;<A href="" title="Authentication - Actors">Authentication - Actors</A>
+        </DIV>
+<H1><A name="Authentication-Actors-Actors"></A>Actors</H1>
+
+<P>The authentication process involves a number of actors contributing to the concepts, the API and the particular implementations.</P>
+
+
+<H2><A name="Authentication-Actors-OSGiHttpServiceSpecification"></A>OSGi Http Service Specification</H2>
+
+<P>The main support for authentication is defined by the OSGi Http Service specification. This specification defines how an OSGi application can register servlets and resources to build web applications. As part of the servlet and/or resource registration a <TT>HttpContext</TT> may be provided, which allows for additional support.</P>
+
+<P>The main method of interest to the authentication process is the <TT>handleSecurity</TT> method. This is called by the OSGi Http Service implementation before the registered servlet is called. Its intent is to authenticate the request and to provide authentication information for the request object: the authentication type and the remote user name.</P>
+
+<P>The Sling Commons Auth bundle provides the <TT>AuthenticationSupport</TT> service which may be used to the implement the <TT>HttpContext.handleSecurity</TT> method.</P>
+
+
+<H2><A name="Authentication-Actors-SlingEngine"></A>Sling Engine</H2>
+
+<P>The Sling Engine implements the main entry point into the Sling system by means of the <TT>SlingMainServlet</TT>. This servlet is registered with the OSGi Http Service and provides a custom <TT>HttpContext</TT> whose <TT>handleSecurity</TT> method is implemented by the <TT>AuthenticationSupport</TT> service.</P>
+
+<P>When the request hits the <TT>service</TT> method of the Sling Main Servlet, the resource resolver provided by the <TT>AuthenticationSupport</TT> service is retrieved from the request attributes and used as the resource resolver for the request.</P>
+
+<P>That's all there is for the Sling Engine to do with respect to authentication.</P>
+
+
+<H2><A name="Authentication-Actors-SlingCommonsAuth"></A>Sling Commons Auth</H2>
+
+<P>The support for authenticating client requests is implemented in the Sling Commons Auth bundle. As such this bundle provides three areas of support</P>
+
+<UL>
+	<LI><TT>AuthenticationHandler</TT> service interface. This is implemented by services providing functionality to extract credentials from HTTP requests.</LI>
+	<LI><TT>Authenticator</TT> service interface. This is implemented by the <TT>SlingAuthenticator</TT> class in the Commons Auth bundle and provides applications with entry points to login and logout.</LI>
+	<LI><TT>AuthenticationSupport</TT> service interface. This is implemented by the <TT>SlingAuthenticator</TT> class in the Commons Auth bundle and allows applications registering with the OSGi HTTP Service to make use of the Sling authentication infrastructure.</LI>
+</UL>
+
+
+
+<H2><A name="Authentication-Actors-JCRRepository"></A>JCR Repository</H2>
+
+<P>The actual process of logging into the repository and provided a <TT>Session</TT> is implementation dependent. In the case of Jackrabbit extensibility is provided by configuration of the Jackrabbit repository by means of an interface and two helper classes:</P>
+
+<UL>
+	<LI><TT>LoginModule</TT> &ndash; The interface to be implemented to provide login processing plugins</LI>
+	<LI><TT>AbstractLoginModule</TT> &ndash; A an abstract base class implementation of the <TT>LoginModule</TT> interface.</LI>
+	<LI><TT>DefaultLoginModule</TT> &ndash; The default implementation of the <TT>AbstractLoginModule</TT> provided by Jackabbit. This login module takes <TT>SimpleCredentials</TT> and uses the repository to lookup the users, validate the credentials and providing the <TT>Principal</TT> representing the user towards the repository.</LI>
+</UL>
+
+
+<P>The Sling Jackrabbit Embedded Repository bundle provides additional plugin interfaces to extend the login process dynamically using OSGi services. To this avail the bundle configures a <TT>LoginModule</TT> with the provided default Jackrabbit configuration supporting these plugins:</P>
+
+<UL>
+	<LI><TT>LoginModulePlugin</TT> &ndash; The main service interface. Plugins must implement this interface to be able to extend the login process. See for example the <A href="http://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/openidauth/" class="external-link" rel="nofollow">Sling OpenID authentication handler</A>, which implements this interface to support OpenID authentication.</LI>
+	<LI><TT>AuthenticationPlugin</TT> &ndash; Helper interface for the <TT>LoginModulePlugin</TT>.</LI>
+</UL>
+
+
+
+<H2><A name="Authentication-Actors-SlingApplications"></A>Sling Applications</H2>
+
+<P>Sling Applications requiring authenticed requests should not care about how authentication is implemented. To support such functionality the <TT>Authenticator</TT> service is provided with two methods:</P>
+
+<UL>
+	<LI><TT>login</TT> &ndash; allows the application to ensure requests are authenticated. This involves selecting an <TT>AuthenticationHandler</TT> to request credentials for authentication.</LI>
+</UL>
+
+
+<UL>
+	<LI><TT>logout</TT> &ndash; allows the application to forget about any authentication. This involves selecting an <TT>AuthenticationHandler</TT> to forget about credentials in the request.</LI>
+</UL>
+
+
+<P>Sling Applications should never directly use any knowledge of any authentication handler or directly call into an authentication handler. This will certainly break the application and cause unexpected behaviour.</P>
+
+<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>If you want to know whether a request is authenticated or not, you can inspect the result of the <TT>HttpServletRequest.getAuthType</TT> method: If this method returns <TT>null</TT> the request is not authenticated.</TD></TR></TABLE></DIV>
+        <DIV class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+Last modified by fmeschbe on 2010-02-01 13:32:17.0
+        </DIV>
+        <DIV class="trademarkFooter">
+Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+        </DIV>
+    </DIV>
+  </BODY>
+</HTML>
+

Added: websites/staging/sling/trunk/content/site/authentication-authenticationhandler.html
==============================================================================
--- websites/staging/sling/trunk/content/site/authentication-authenticationhandler.html (added)
+++ websites/staging/sling/trunk/content/site/authentication-authenticationhandler.html Wed Dec 12 09:16:44 2012
@@ -0,0 +1,252 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Apache Sling - Authentication - AuthenticationHandler</TITLE>
+    <LINK rel="stylesheet" href="http://sling.apache.org/site/media.data/site.css" type="text/css" media="all">
+    <LINK rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </HEAD>
+  <BODY>
+    <DIV class="title">
+      <DIV class="logo">
+        <A href="http://sling.apache.org/site/index.html">
+          <IMG border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </A>
+      </DIV>
+      <DIV class="header">
+        <A href="http://www.apache.org/">
+          <IMG border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </A>
+      </DIV>
+    </DIV>
+    <DIV class="menu">
+<P><B>Documentation</B><BR class="atl-forced-newline">
+<A href="getting-started.html" title="Getting Started">Getting Started</A><BR class="atl-forced-newline">
+<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A><BR class="atl-forced-newline">
+<A href="development.html" title="Development">Development</A><BR class="atl-forced-newline">
+<A href="bundles.html" title="Bundles">Bundles</A><BR class="atl-forced-newline">
+<A href="tutorials-how-tos.html" title="Tutorials & How-Tos">Tutorials &amp; How&#45;Tos</A><BR class="atl-forced-newline">
+<A href="configuration.html" title="Configuration">Configuration</A><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/apidocs/sling6/index.html" class="external-link" rel="nofollow">API docs</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.wiki" class="external-link" rel="nofollow">Wiki</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.faq" class="external-link" rel="nofollow">FAQ</A><BR class="atl-forced-newline"></P>
+
+<P><B>Project info</B><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">Downloads</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</A><BR class="atl-forced-newline">
+<A href="contributing.html" title="Contributing">Contributing</A><BR class="atl-forced-newline">
+<A href="news.html" title="News">News</A><BR class="atl-forced-newline">
+<A href="links.html" title="Links">Links</A><BR class="atl-forced-newline">
+<A href="project-information.html" title="Project Information">Project Information</A><BR class="atl-forced-newline">
+<A href="https://issues.apache.org/jira/browse/SLING" class="external-link" rel="nofollow">Issue Tracker</A><BR class="atl-forced-newline">
+<A href="http://svn.apache.org/viewvc/sling/trunk" class="external-link" rel="nofollow">Browse Source Repository</A><BR class="atl-forced-newline">
+<A href="security.html" title="Security">Security</A><BR class="atl-forced-newline"></P>
+
+<P><B>Sponsorship</B><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Become a Sponsor</A><BR>
+<A href="http://www.apache.org/foundation/buy_stuff.html" class="external-link" rel="nofollow">Buy Stuff</A></P>
+
+
+  <IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+  <P style="height: 135px"></P>
+    </DIV>
+    <DIV class="main">
+        <DIV class="breadcrump" style="font-size: 80%;">
+<A href="apache-sling.html" title="Apache Sling Website">Apache Sling Website</A>&nbsp;&gt;&nbsp;<A href="apache-sling.html" title="Apache Sling">Apache Sling</A>&nbsp;&gt;&nbsp;<A href="documentation.html" title="Documentation">Documentation</A>&nbsp;&gt;&nbsp;<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A>&nbsp;&gt;&nbsp;<A href="authentication.html" title="Authentication">Authentication</A>&nbsp;&gt;&nbsp;<A href="" title="Authentication - AuthenticationHandler">Authentication - AuthenticationHandler</A>
+        </DIV>
+<H1><A name="Authentication-AuthenticationHandler-AuthenticationHandler"></A>AuthenticationHandler</H1>
+
+<P>The <TT>AuthenticationHandler</TT> interface defines the service API which may be implemented by authentication handlers registered as OSGi services.</P>
+
+<P><TT>AuthenticationHandler</TT> services have a single required service registration property which is used to identify requests to which the <TT>AuthenticationHandler</TT> service is applicable:</P>
+
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TD class="confluenceTd"> <TT>path</TT> </TD>
+<TD class="confluenceTd"> One or more (array or vector) string values indicating the request URLs to which the <TT>AuthenticationHandler</TT> is applicable. </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>authtype</TT> </TD>
+<TD class="confluenceTd"> The authentication type implemented by this handler. This is a string value property and should be the same as will be used as the authentication type of the <TT>AuthenticationInfo</TT> object provided by the <TT>extractCredentials</TT> method. If this property is set, the <TT>requestCredentials</TT> method of the authentication handler is only called if the <TT>sling:authRequestLogin</TT> request parameter is either not set or is set to the same value as the <TT>authtype</TT> of the handler. This property is optional. If not set, the <TT>requestCredentials</TT> method is always called regardless of the value of the <TT>sling:authRequestLogin</TT> request parameter. </TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<P>Each path may be an absolute URL, an URL with just the host/port and path or just a plain absolute path:</P>
+
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TD class="confluenceTd"> URL part </TD>
+<TD class="confluenceTd"> Scheme </TD>
+<TD class="confluenceTd"> Host/Port </TD>
+<TD class="confluenceTd"> Path </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> Absolute URL </TD>
+<TD class="confluenceTd"> must match </TD>
+<TD class="confluenceTd"> must match </TD>
+<TD class="confluenceTd"> request URL path is prefixed with the path </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> Host/Port with Path </TD>
+<TD class="confluenceTd"> ignored </TD>
+<TD class="confluenceTd"> must match </TD>
+<TD class="confluenceTd"> request URL path is prefixed with the path </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> Path </TD>
+<TD class="confluenceTd"> ignored </TD>
+<TD class="confluenceTd"> ignored </TD>
+<TD class="confluenceTd"> request URL path is prefixed with the path </TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<P>When looking for an <TT>AuthenticationHandler</TT> the authentication handler is selected whose path is the longest match on the request URL. If the service is registered with Scheme and Host/Port, these must exactly match for the service to be eligible. If multiple <TT>AuthenticationHandler</TT> services are registered with the same length matching path, the handler with the higher service ranking is selected<STYLE type="text/css">
+.FootnoteMarker, .FootnoteNum a {
+  background: transparent url(/confluence/download/resources/com.adaptavist.confluence.footnoteMacros:footnote/gfx/footnote.png) no-repeat top right;
+  padding: 1px 2px 0px 1px;
+  border-left: 1px solid #8898B8;
+  border-bottom: 1px solid #6B7C9B;
+  margin: 1px;
+  text-decoration: none;
+}
+.FootnoteNum a {
+  margin-top: 2px;
+  margin-right: 0px;
+}
+.FootnoteNum {
+  font-size: x-small;
+  text-align: right;
+  padding-bottom: 4px;
+}
+.footnote-th1 {
+  text-align: right;
+}
+.Footnote {
+  padding-left: 7px;
+  margin-bottom: 4px;
+  border: 1px none #DDDDDD;
+  writingMode: tb-rl;
+}
+.accessibility {
+     display: none;
+     visibility: hidden;
+}
+@media aural,braille,embossed {
+        .FootnoteMarker, .FootnoteNum a {
+         border: 1px solid #000000;
+         background: #ffffff none;
+    }
+    .accessibility {
+         display: run-in;
+         visibility: visible;
+    }
+}
+</STYLE>
+<SCRIPT type="text/javascript" language="JavaScript">
+//<!--\n
+var effectInProgress = {};
+var despamEffect = function (id,effectType,duration) {
+  if ((effectInProgress[id]) || (typeof(Effect)=="undefined") || (typeof(Effect[effectType])=="undefined")) return;
+  new Effect[effectType](id);
+  effectInProgress[id]=true;
+  setTimeout('effectInProgress[\"'+id+'\"]=false;',duration*1000);
+};
+var oldFootnoteId = '';
+var footnoteHighlight = function(id,pulsateNum) {
+  if (oldFootnoteId!='') document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
+  oldFootnoteId = id;
+  document.getElementById('Footnote'+id).style['borderStyle'] = 'solid';
+  despamEffect('Footnote'+id,'Highlight',1)
+  if (pulsateNum) despamEffect('FootnoteNum'+id,'Pulsate',3)
+}
+var footnoteMarkerHighlight = function(id) {
+  if (oldFootnoteId!='') document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
+  oldFootnoteId = '';
+  despamEffect('FootnoteMarker'+id,'Pulsate',3)
+}
+//-->
+</SCRIPT>
+
+<SUP id="FootnoteMarker1">
+    <A name="FootnoteMarker1" href="#Footnote1" onclick="footnoteHighlight(&quot;1&quot;,true);" alt="Footnote: Click here to display the footnote" title="Footnote: Click here to display the footnote" class="FootnoteMarker">
+            1
+    </A>
+</SUP>
+.</P>
+
+<P>The value of <TT>path</TT> service registration property value triggering the call to any of the <TT>AuthenticationHandler</TT> methods is available as the <TT>path</TT> request attribute (for the time of the method call only). If the service is registered with multiple path values, the value of the <TT>path</TT> request attribute may be used to implement specific handling.</P>
+
+
+<H3><A name="Authentication-AuthenticationHandler-ImplementationsprovidedbySling"></A>Implementations provided by Sling</H3>
+
+<UL>
+	<LI><A href="form-based-authenticationhandler.html" title="Form Based AuthenticationHandler">Form Based AuthenticationHandler</A></LI>
+	<LI><A href="openid-authenticationhandler.html" title="OpenID AuthenticationHandler">OpenID AuthenticationHandler</A></LI>
+</UL>
+
+
+<H3><A name="Authentication-AuthenticationHandler-Sampleimplementations"></A>Sample implementations</H3>
+
+
+<H4><A name="Authentication-AuthenticationHandler-HTTPBasicAuthenticationHandler"></A>HTTP Basic Authentication Handler</H4>
+
+<UL>
+	<LI><TT>extractCredentials</TT> &ndash; Get user name and password from the <TT>Authorization</TT> HTTP header</LI>
+	<LI><TT>requestCredentials</TT> &ndash; Send a 401/UNAUTHORIZED status with <TT>WWW-Authenticate</TT> response header setting the Realm</LI>
+	<LI><TT>dropCredentials</TT> &ndash; Send a 401/UNAUTHORIZED status with <TT>WWW-Authenticate</TT> response header setting the Realm</LI>
+</UL>
+
+
+<P>Interestingly the <TT>dropCredentials</TT> method is implemented in the same way as the <TT>requestCredentials</TT> method. The reason for this is, that HTTP Basic authentication does not have a notion of login and logout. Rather the request is accompanied with an <TT>Authorization</TT> header or not. The contents of this header is usually cached by the client browser. So logout is actually simulated by sending a 401/UNAUTHORIZED status thus causing the client browser to clear the cache and ask for user name and password.</P>
+
+
+<H4><A name="Authentication-AuthenticationHandler-FormBasedAuthenticationHandler"></A>Form Based Authentication Handler</H4>
+
+
+<UL>
+	<LI><TT>extractCredentials</TT> &ndash; Get user name and password with the help of a special cookie (note, that of course the cookie should not contain this data, but refer to it in an internal store of the authentication handler). If the cookie is not set, check for specific login parameters to setup the cookie.</LI>
+	<LI><TT>requestCredentials</TT> &ndash; Send the login form for the user to provide the login parameters.</LI>
+	<LI><TT>dropCredentials</TT> &ndash; Clear the authentication cookie and internal store.</LI>
+</UL>
+
+
+
+<P><TABLE class="Footnotes" style="width: 100%; border:none;" cellspacing="0" cellpadding="0" summary="This table contains one or more notes for references made elsewhere on the page.">
+  <CAPTION class="accessibility">Footnotes</CAPTION>
+  <THEAD class="accessibility">
+    <TR class="accessibility">
+      <TH class="accessibility" id="footnote-th1">Reference</TH>
+      <TH class="accessibility" id="footnote-th2">Notes</TH>
+    </TR>
+  </THEAD>
+  <TBODY>
+    <TR name="Footnote1">
+      <TD valign="top" class="FootnoteNum" headings="footnote-th1">
+        <A href="#FootnoteMarker1" onclick="footnoteMarkerHighlight(&quot;1&quot;);" onmouseover="footnoteHighlight(&quot;1&quot;,false);" alt="Footnote: Click to return to reference in text" title="Footnote: Click to return to reference in text" id="FootnoteNum1">
+            1
+        </A>
+      </TD>
+      <TD id="Footnote1" valign="top" width="100%" class="Footnote" headings="footnote-th2">
+          Service ranking is defined by the OSGi Core Specification as follows: <EM>If multiple qualifying service interfaces exist, a service with the highest <TT>service.ranking</TT> number, or when equal to the lowest <TT>service.id</TT>, determines which service object is returned by the Framework</EM>.
+      </TD>
+    </TR>
+  </TBODY>
+</TABLE> </P>
+        <DIV class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+Last modified by fmeschbe on 2010-02-16 12:49:30.0
+        </DIV>
+        <DIV class="trademarkFooter">
+Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+        </DIV>
+    </DIV>
+  </BODY>
+</HTML>
+

Added: websites/staging/sling/trunk/content/site/authentication-framework.html
==============================================================================
--- websites/staging/sling/trunk/content/site/authentication-framework.html (added)
+++ websites/staging/sling/trunk/content/site/authentication-framework.html Wed Dec 12 09:16:44 2012
@@ -0,0 +1,261 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Apache Sling - Authentication - Framework</TITLE>
+    <LINK rel="stylesheet" href="http://sling.apache.org/site/media.data/site.css" type="text/css" media="all">
+    <LINK rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </HEAD>
+  <BODY>
+    <DIV class="title">
+      <DIV class="logo">
+        <A href="http://sling.apache.org/site/index.html">
+          <IMG border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </A>
+      </DIV>
+      <DIV class="header">
+        <A href="http://www.apache.org/">
+          <IMG border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </A>
+      </DIV>
+    </DIV>
+    <DIV class="menu">
+<P><B>Documentation</B><BR class="atl-forced-newline">
+<A href="getting-started.html" title="Getting Started">Getting Started</A><BR class="atl-forced-newline">
+<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A><BR class="atl-forced-newline">
+<A href="development.html" title="Development">Development</A><BR class="atl-forced-newline">
+<A href="bundles.html" title="Bundles">Bundles</A><BR class="atl-forced-newline">
+<A href="tutorials-how-tos.html" title="Tutorials & How-Tos">Tutorials &amp; How&#45;Tos</A><BR class="atl-forced-newline">
+<A href="configuration.html" title="Configuration">Configuration</A><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/apidocs/sling6/index.html" class="external-link" rel="nofollow">API docs</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.wiki" class="external-link" rel="nofollow">Wiki</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.faq" class="external-link" rel="nofollow">FAQ</A><BR class="atl-forced-newline"></P>
+
+<P><B>Project info</B><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">Downloads</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</A><BR class="atl-forced-newline">
+<A href="contributing.html" title="Contributing">Contributing</A><BR class="atl-forced-newline">
+<A href="news.html" title="News">News</A><BR class="atl-forced-newline">
+<A href="links.html" title="Links">Links</A><BR class="atl-forced-newline">
+<A href="project-information.html" title="Project Information">Project Information</A><BR class="atl-forced-newline">
+<A href="https://issues.apache.org/jira/browse/SLING" class="external-link" rel="nofollow">Issue Tracker</A><BR class="atl-forced-newline">
+<A href="http://svn.apache.org/viewvc/sling/trunk" class="external-link" rel="nofollow">Browse Source Repository</A><BR class="atl-forced-newline">
+<A href="security.html" title="Security">Security</A><BR class="atl-forced-newline"></P>
+
+<P><B>Sponsorship</B><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Become a Sponsor</A><BR>
+<A href="http://www.apache.org/foundation/buy_stuff.html" class="external-link" rel="nofollow">Buy Stuff</A></P>
+
+
+  <IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+  <P style="height: 135px"></P>
+    </DIV>
+    <DIV class="main">
+        <DIV class="breadcrump" style="font-size: 80%;">
+<A href="apache-sling.html" title="Apache Sling Website">Apache Sling Website</A>&nbsp;&gt;&nbsp;<A href="apache-sling.html" title="Apache Sling">Apache Sling</A>&nbsp;&gt;&nbsp;<A href="documentation.html" title="Documentation">Documentation</A>&nbsp;&gt;&nbsp;<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A>&nbsp;&gt;&nbsp;<A href="authentication.html" title="Authentication">Authentication</A>&nbsp;&gt;&nbsp;<A href="" title="Authentication - Framework">Authentication - Framework</A>
+        </DIV>
+<H1><A name="Authentication-Framework-Framework"></A>Framework</H1>
+
+<P>The core piece of functionality with respect to authentication in Sling is contained in the Sling Commons Auth bundle. This bundle provides the API for Sling and Sling applications to make use of authentication.</P>
+
+<P>This support encompasses three parts:</P>
+
+<UL>
+	<LI>The <TT>AuthenticationSupport</TT> service provided by the <TT>SlingAuthenticator</TT> class. This service can be used by implementations of the OSGi <TT>HttpContext</TT> interface to delegate authentication.</LI>
+	<LI>The <TT>Authenticator</TT> service also provided by the <TT>SlingAuthenticator</TT> class. This service may be used by Sling Applications to help clients login and logout.</LI>
+	<LI>The <TT>AuthenticationHandler</TT> service interface. These services may be implemented by extensions to support various ways for transporting credentials from clients to the Sling server.</LI>
+</UL>
+
+
+<P>This page describes how the <TT>SlingAuthenticator</TT> class provides the <TT>AuthenticationSupport</TT> and  <TT>Authenticator</TT> services. For a description of the <TT>AuthenticationHandler</TT> service interface and the interaction between the <TT>SlingAuthenticator</TT> and the <TT>AuthenticationHandler</TT> services refer to the <A href="authentication-authenticationhandler.html" title="Authentication - AuthenticationHandler">AuthenticationHandler</A> page.</P>
+
+<P>The <TT>SlingAuthenticator</TT> class is an internal class of the <TT>org.apache.sling.commons.auth</TT> bundle and implements the <TT>Authenticator</TT> and <TT>AuthenticationSupport</TT> services.</P>
+
+
+<H2><A name="Authentication-Framework-AuthenticationSupport"></A>AuthenticationSupport</H2>
+
+<P>The <TT>AuthenticationSupport</TT> service interface defines a single method: <TT>handleSecurity</TT>. This method is intended to be called by the <TT>handleSecurity</TT> method of any <TT>HttpContext</TT> implementation wishing to make use of the Sling Authentication Framework.</P>
+
+<P>The Sling Authenticator implementation selects an <TT>AuthenticationHandler</TT> service appropriate for the request and calls the <TT>AuthenticationHandler.extractCredentials</TT> method to extract the credentials from the request. If no credentials could be extracted, the Sling Authenticator either admits the request as an anonymous request or requests authentication from the client by calling its own <TT>login</TT> method.</P>
+
+
+<P>The implementation follows this algorithm:</P>
+
+<OL>
+	<LI>Select one or more <TT>AuthenticationHandler</TT> for the request according to the request URL's scheme and authorization part.</LI>
+	<LI>Call the <TT>extractCredentials</TT> method of each authentication handler, where the order of handler call is defined by the length of the registered path: handlers registered with longer paths are called before handlers with shorter paths. The goal is to call the handlers in order from longest request path match to shortest match. Handlers not matching the request path at all are not called.</LI>
+	<LI>The first handler returning a non-<TT>null</TT> <TT>AuthenticationInfo</TT> result &quot;wins&quot; and the result is used for authentication.</LI>
+	<LI>If any <TT>AuthenticationInfoPostProcessor</TT> services are registered, the <TT>AuthenticationInfo</TT> object is passed to their <TT>postProcess()</TT> method.</LI>
+	<LI>If no handler returns a non-<TT>null</TT> result, the request may be handled anonymously. In these cases, an empty <TT>AuthenticationInfo</TT> object is passed to any <TT>AuthenticationInfoPostProcessor</TT> services.</LI>
+	<LI>(Try to) log into the repository either with the provided credentials or anonymously.</LI>
+	<LI>If there were credentials provided and the login was successful, a login event is posted <B>if</B> the <TT>AuthenticationInfo</TT> object contains a non-null object with the key <TT>$$auth.info.login$$</TT> (<TT>AuthConstants.AUTH_INFO_LOGIN</TT>). This event is posted with the topic <TT>org/apache/sling/auth/core/Authenticator/LOGIN</TT>. (added in Sling Auth Core 1.1.0)</LI>
+	<LI>Set request attributes listed below.</LI>
+</OL>
+
+
+<P>Extracting the credentials and trying to login to the repository may yield the following results:</P>
+
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TD class="confluenceTd"> Credentials </TD>
+<TD class="confluenceTd"> Login </TD>
+<TD class="confluenceTd"> Consequence </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> present </TD>
+<TD class="confluenceTd"> successfull </TD>
+<TD class="confluenceTd"> Continue with an authenticated request </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> present </TD>
+<TD class="confluenceTd"> failed </TD>
+<TD class="confluenceTd"> Select <TT>AuthenticationHandler</TT> and call <TT>requestCredentials</TT> method </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> missing </TD>
+<TD class="confluenceTd"> anonymous allowed </TD>
+<TD class="confluenceTd"> Continue with a non authenticated request using anonymous access to the repository </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> missing </TD>
+<TD class="confluenceTd"> anonymous forbidden </TD>
+<TD class="confluenceTd"> Select <TT>AuthenticationHandler</TT> and call <TT>requestCredentials</TT> method </TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<DIV class="panelMacro"><TABLE class="noteMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>Only one <TT>AuthenticationHandler</TT> is able to provide credentials for a given request. If the credentials provided by the handler cannot be used to login to the repository, authentication fails and no further <TT>AuthenticationHandler</TT> is consulted.</TD></TR></TABLE></DIV>
+
+
+<H4><A name="Authentication-Framework-RequestAttributesonSuccessfulLogin"></A>Request Attributes on Successful Login</H4>
+
+<P>The <TT>handleSecurity</TT> method gets credentials from the <TT>AuthenticationHandler</TT> and logs into the JCR repository using those credentials. If the login is successful, the <TT>SlingAuthenticator</TT> sets the following request attributes:</P>
+
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh"> Attribute </TH>
+<TH class="confluenceTh"> Description </TH>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>org.osgi.service.http.authentication.remote.user</TT> </TD>
+<TD class="confluenceTd"> The user ID of the JCR Session. This attribute is used by the HTTP Service implementation to implement the <TT>HttpServletRequest.getRemoteUser</TT> method. </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>org.osgi.service.http.authentication.type</TT> </TD>
+<TD class="confluenceTd"> The authentication type defined by the <TT>AuthenticationHandler</TT>. This attribute is used by the HTTP Service implementation to implement the <TT>HttpServletRequest.getAuthType</TT> method. </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>org.apache.sling.commons.auth.ResourceResolver</TT> </TD>
+<TD class="confluenceTd"> The <TT>ResourceResolver</TT> created from the credentials and the logged in JCR Session. This attribute may be used by servlets to access the repository. Namely the <TT>SlingMainServlet</TT> uses this request attribute to provide the <TT>ResourceResolver</TT> to handle the request. </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>javax.jcr.Session</TT> </TD>
+<TD class="confluenceTd"> The JCR Session. This attribute is for backwards compatibility only. <B>Its use is deprecated and the attribute will be removed in future versions</B>. </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>org.apache.sling.commons.auth.spi.AuthenticationInfo</TT> </TD>
+<TD class="confluenceTd"> The <TT>AuthenticationInfo</TT> object produced from the <TT>AuthenticationHandler</TT>. </TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+<P><B>NOTE</B>: Do <EM>NOT</EM> use the <TT>javax.jcr.Session</TT> request attribute in your Sling applications. This attribute must be considered implementation specific to convey the JCR Session to the <TT>SlingMainServlet</TT>. In future versions of the Sling Commons Auth bundle, this request attribute will not be present anymore. To get the JCR Session for the current request adapt the request's resource resolver to a JCR Session:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+Session session = request.getResourceResolver().adaptTo(Session.class);
+</PRE>
+</DIV></DIV>
+
+
+<H4><A name="Authentication-Framework-AnonymousLogin"></A>Anonymous Login</H4>
+
+<P>The <TT>SlingAuthenticator</TT> provides high level of control with respect to allowing anonymous requests or requiring authentication up front:</P>
+
+<UL>
+	<LI>Global setting of whether anonymous requests are allowed or not. This is the value of the <EM>Allow Anonymous Access</EM> (<TT>auth.annonymous</TT>) property of the <TT>SlingAuthenticator</TT> configuration. This property is supported for backwards compatibility and defaults to <TT>true</TT> (allowing anonymous access).</LI>
+	<LI>Specific configuration per URL. The <EM>Authentication Requirements</EM> (<TT>sling.auth.requirements</TT>) property of the <TT>SlingAuthenticator</TT> configuration may provide a list of URLs for which authentication may be required or not: Any entry prefixed with a dash <TT>-</TT> defines a subtree for which authentication is not required. Any entry not prefixed with a dash or prefixed with a plus <TT>+</TT> defines a subtree for which authentication is required up front and thus anonymous access is not allowed. This list is empty by default.</LI>
+	<LI>Any OSGi service may provide a <TT>sling.auth.requirements</TT> registration property which is used to dynamically extend the authentication requirements from the <EM>Authentication Requirements</EM> configuration. This may for example be set by <TT>AuthenticationHandler</TT> implementations providing a login form to ensure access to the login form does not require authentication. The value of this property is a single string, an array of strings or a Collection of strings and is formatted in the same way as the <EM>Authentication Requirements</EM> configuration property.</LI>
+</UL>
+
+
+<P>The URLs set on the <EM>Authentication Requirements</EM> configuration property or the <TT>sling.auth.requirements</TT> service registration property can be absolute paths or URLs like the <TT>path</TT> service registration property of <TT>AuthenticationHandler</TT> services. This allows the limitation of this setup to certain requests by scheme and/or virtual host address.</P>
+
+
+<P><B>Examples</B></P>
+
+<UL>
+	<LI>The <TT>LoginServlet</TT> contained in the Commons Auth bundle registers itself with the service registration property <TT>sling.auth.requirements = &quot;-/system/sling/login&quot;</TT> to ensure the servlet can be accessed without requiring authentication.</LI>
+</UL>
+
+
+<UL>
+	<LI>An authentication handler may register itself with the service registration property <TT>sling.auth.requirements = &quot;-/apps/sample/loginform&quot;</TT> to ensure the login form can be rendered without requiring authentication.</LI>
+</UL>
+
+
+
+
+<H2><A name="Authentication-Framework-Authenticatorimplementation"></A>Authenticator implementation</H2>
+
+<P>The implementation of the <TT>Authenticator</TT> interface is similar for both methods:</P>
+
+<P><B><TT>login</TT></B></P>
+
+<OL>
+	<LI>Select one or more <TT>AuthenticationHandler</TT> for the request according to the request URL's scheme and authorization part.</LI>
+	<LI>Call the <TT>requestCredentials</TT> method of each authentication handler, where the order of handler call is defined by the length of the registered path: handlers registered with longer paths are called before handlers with shorter paths. The goal is to call the handlers in order from longest request path match to shortest match. Handlers not matching the request path at all are not called.</LI>
+	<LI>As soon as the first handlers returns <TT>true</TT>, the process ends and it is assumed credentials have been requested from the client.</LI>
+</OL>
+
+
+<P>The <TT>login</TT> method has three possible exit states:</P>
+
+<DIV class="table-wrap">
+<TABLE class="confluenceTable"><TBODY>
+<TR>
+<TH class="confluenceTh"> Exit State </TH>
+<TH class="confluenceTh"> Description </TH>
+</TR>
+<TR>
+<TD class="confluenceTd"> Normal </TD>
+<TD class="confluenceTd"> An <TT>AuthenticationHandler</TT> could be selected to which the login request could be forwarded. </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>NoAuthenticationHandlerException</TT> </TD>
+<TD class="confluenceTd"> No <TT>AuthenticationHandler</TT> could be selected to forward the login request to. In this case, the caller can proceed as appropriate. For example a servlet, which should just login a user may send back a 403/FORBIDDEN status because login is not possible. Or a 404/NOT FOUND handler, which tried to login as a fallback, may continue and send back the regular 404/NOT FOUND response. </TD>
+</TR>
+<TR>
+<TD class="confluenceTd"> <TT>IllegalStateException</TT> </TD>
+<TD class="confluenceTd"> The response has already been committed and the login request cannot be processed. Normally to request login, the current response must be reset and a new response has to be prepared. This is only possible if the request has not yet been committed. </TD>
+</TR>
+</TBODY></TABLE>
+</DIV>
+
+
+
+<P><B><TT>logout</TT></B></P>
+<OL>
+	<LI>Select one or more <TT>AuthenticationHandler</TT> for the request according to the request URL's scheme and authorization part.</LI>
+	<LI>Call the <TT>dropCredentials</TT> method of each authentication handler, where the order of handler call is defined by the length of the registered path: handlers registered with longer paths are called before handlers with shorter paths. The goal is to call the handlers in order from longest request path match to shortest match. Handlers not matching the request path at all are not called.</LI>
+</OL>
+
+
+<P>Unlike for the <TT>login</TT> method in the <TT>logout</TT> method case all <TT>AuthenticationHandler</TT> services selected in the first step are called. If none can be selected or none can actually handle the <TT>dropCredentials</TT> request, the <TT>logout</TT> silently returns.</P>
+
+        <DIV class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+Last modified by justinedelson on 2012-01-24 22:09:01.0
+        </DIV>
+        <DIV class="trademarkFooter">
+Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+        </DIV>
+    </DIV>
+  </BODY>
+</HTML>
+

Added: websites/staging/sling/trunk/content/site/authentication-tasks.html
==============================================================================
--- websites/staging/sling/trunk/content/site/authentication-tasks.html (added)
+++ websites/staging/sling/trunk/content/site/authentication-tasks.html Wed Dec 12 09:16:44 2012
@@ -0,0 +1,94 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Apache Sling - Authentication - Tasks</TITLE>
+    <LINK rel="stylesheet" href="http://sling.apache.org/site/media.data/site.css" type="text/css" media="all">
+    <LINK rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </HEAD>
+  <BODY>
+    <DIV class="title">
+      <DIV class="logo">
+        <A href="http://sling.apache.org/site/index.html">
+          <IMG border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </A>
+      </DIV>
+      <DIV class="header">
+        <A href="http://www.apache.org/">
+          <IMG border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </A>
+      </DIV>
+    </DIV>
+    <DIV class="menu">
+<P><B>Documentation</B><BR class="atl-forced-newline">
+<A href="getting-started.html" title="Getting Started">Getting Started</A><BR class="atl-forced-newline">
+<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A><BR class="atl-forced-newline">
+<A href="development.html" title="Development">Development</A><BR class="atl-forced-newline">
+<A href="bundles.html" title="Bundles">Bundles</A><BR class="atl-forced-newline">
+<A href="tutorials-how-tos.html" title="Tutorials & How-Tos">Tutorials &amp; How&#45;Tos</A><BR class="atl-forced-newline">
+<A href="configuration.html" title="Configuration">Configuration</A><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/apidocs/sling6/index.html" class="external-link" rel="nofollow">API docs</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.wiki" class="external-link" rel="nofollow">Wiki</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.faq" class="external-link" rel="nofollow">FAQ</A><BR class="atl-forced-newline"></P>
+
+<P><B>Project info</B><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">Downloads</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</A><BR class="atl-forced-newline">
+<A href="contributing.html" title="Contributing">Contributing</A><BR class="atl-forced-newline">
+<A href="news.html" title="News">News</A><BR class="atl-forced-newline">
+<A href="links.html" title="Links">Links</A><BR class="atl-forced-newline">
+<A href="project-information.html" title="Project Information">Project Information</A><BR class="atl-forced-newline">
+<A href="https://issues.apache.org/jira/browse/SLING" class="external-link" rel="nofollow">Issue Tracker</A><BR class="atl-forced-newline">
+<A href="http://svn.apache.org/viewvc/sling/trunk" class="external-link" rel="nofollow">Browse Source Repository</A><BR class="atl-forced-newline">
+<A href="security.html" title="Security">Security</A><BR class="atl-forced-newline"></P>
+
+<P><B>Sponsorship</B><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Become a Sponsor</A><BR>
+<A href="http://www.apache.org/foundation/buy_stuff.html" class="external-link" rel="nofollow">Buy Stuff</A></P>
+
+
+  <IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+  <P style="height: 135px"></P>
+    </DIV>
+    <DIV class="main">
+        <DIV class="breadcrump" style="font-size: 80%;">
+<A href="apache-sling.html" title="Apache Sling Website">Apache Sling Website</A>&nbsp;&gt;&nbsp;<A href="apache-sling.html" title="Apache Sling">Apache Sling</A>&nbsp;&gt;&nbsp;<A href="documentation.html" title="Documentation">Documentation</A>&nbsp;&gt;&nbsp;<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A>&nbsp;&gt;&nbsp;<A href="authentication.html" title="Authentication">Authentication</A>&nbsp;&gt;&nbsp;<A href="" title="Authentication - Tasks">Authentication - Tasks</A>
+        </DIV>
+<H1><A name="Authentication-Tasks-Tasks"></A>Tasks</H1>
+
+<P>Authentication of HTTP Requests is generally a two-step process: First the credentials must be extracted from the request and second the credentials must be validated. In the case of Sling this means acquiring a JCR Session.</P>
+
+<H2><A name="Authentication-Tasks-ExtractCredentialsfromtheRequest"></A>Extract Credentials from the Request</H2>
+
+<UL>
+	<LI>Implemented and controlled by the Sling Commons Auth bundle</LI>
+	<LI>Takes <TT>HttpServletRequest</TT></LI>
+	<LI>Provides credentials for futher processing (basically JCR <TT>Credentials</TT> and Workspace name)</LI>
+	<LI>Extensible with the help of <TT>AuthenticationHandler</TT> services</LI>
+</UL>
+
+
+
+<H2><A name="Authentication-Tasks-LogintotheJCRRepository"></A>Login to the JCR Repository</H2>
+
+<UL>
+	<LI>Implemented and controlled by the JCR Repository</LI>
+	<LI>Takes JCR <TT>Credentials</TT> and Workspace name</LI>
+	<LI>Provides a JCR <TT>Session</TT></LI>
+	<LI>Implementation dependent process. Jackrabbit provides extensibility based on <TT>LoginModules</TT>; Sling's Embedded Jackrabbit Repository bundle provides extensibility with <TT>LoginModulePlugin</TT> services.</LI>
+</UL>
+
+
+<P>Currently the credentials are always verified by trying to login to the JCR repository. Once an <A href="http://cwiki.apache.org/SLING/add-resourceresolverfactory-service-interface.html" class="external-link" rel="nofollow">ResourceResolverFactory</A> API has been added, the process of validating the credentials and logging in is actualy replaced by a process of requesting a <TT>ResourceResolver</TT> from the <TT>ResourceResolverFactory</TT>. Of course, the JCR Repository will still be the main underlying repository and as such be used to validate the credentials and get a JCR Session.</P>
+        <DIV class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+Last modified by fmeschbe on 2010-02-01 11:57:35.0
+        </DIV>
+        <DIV class="trademarkFooter">
+Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+        </DIV>
+    </DIV>
+  </BODY>
+</HTML>
+

Added: websites/staging/sling/trunk/content/site/authentication.data/authentication.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/sling/trunk/content/site/authentication.data/authentication.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/sling/trunk/content/site/authentication.data/authentication.png.jpeg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/sling/trunk/content/site/authentication.data/authentication.png.jpeg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/sling/trunk/content/site/authentication.html
==============================================================================
--- websites/staging/sling/trunk/content/site/authentication.html (added)
+++ websites/staging/sling/trunk/content/site/authentication.html Wed Dec 12 09:16:44 2012
@@ -0,0 +1,100 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Apache Sling - Authentication</TITLE>
+    <LINK rel="stylesheet" href="http://sling.apache.org/site/media.data/site.css" type="text/css" media="all">
+    <LINK rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </HEAD>
+  <BODY>
+    <DIV class="title">
+      <DIV class="logo">
+        <A href="http://sling.apache.org/site/index.html">
+          <IMG border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </A>
+      </DIV>
+      <DIV class="header">
+        <A href="http://www.apache.org/">
+          <IMG border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </A>
+      </DIV>
+    </DIV>
+    <DIV class="menu">
+<P><B>Documentation</B><BR class="atl-forced-newline">
+<A href="getting-started.html" title="Getting Started">Getting Started</A><BR class="atl-forced-newline">
+<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A><BR class="atl-forced-newline">
+<A href="development.html" title="Development">Development</A><BR class="atl-forced-newline">
+<A href="bundles.html" title="Bundles">Bundles</A><BR class="atl-forced-newline">
+<A href="tutorials-how-tos.html" title="Tutorials & How-Tos">Tutorials &amp; How&#45;Tos</A><BR class="atl-forced-newline">
+<A href="configuration.html" title="Configuration">Configuration</A><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/apidocs/sling6/index.html" class="external-link" rel="nofollow">API docs</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.wiki" class="external-link" rel="nofollow">Wiki</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.faq" class="external-link" rel="nofollow">FAQ</A><BR class="atl-forced-newline"></P>
+
+<P><B>Project info</B><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">Downloads</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</A><BR class="atl-forced-newline">
+<A href="contributing.html" title="Contributing">Contributing</A><BR class="atl-forced-newline">
+<A href="news.html" title="News">News</A><BR class="atl-forced-newline">
+<A href="links.html" title="Links">Links</A><BR class="atl-forced-newline">
+<A href="project-information.html" title="Project Information">Project Information</A><BR class="atl-forced-newline">
+<A href="https://issues.apache.org/jira/browse/SLING" class="external-link" rel="nofollow">Issue Tracker</A><BR class="atl-forced-newline">
+<A href="http://svn.apache.org/viewvc/sling/trunk" class="external-link" rel="nofollow">Browse Source Repository</A><BR class="atl-forced-newline">
+<A href="security.html" title="Security">Security</A><BR class="atl-forced-newline"></P>
+
+<P><B>Sponsorship</B><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Become a Sponsor</A><BR>
+<A href="http://www.apache.org/foundation/buy_stuff.html" class="external-link" rel="nofollow">Buy Stuff</A></P>
+
+
+  <IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+  <P style="height: 135px"></P>
+    </DIV>
+    <DIV class="main">
+        <DIV class="breadcrump" style="font-size: 80%;">
+<A href="apache-sling.html" title="Apache Sling Website">Apache Sling Website</A>&nbsp;&gt;&nbsp;<A href="apache-sling.html" title="Apache Sling">Apache Sling</A>&nbsp;&gt;&nbsp;<A href="documentation.html" title="Documentation">Documentation</A>&nbsp;&gt;&nbsp;<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A>&nbsp;&gt;&nbsp;<A href="" title="Authentication">Authentication</A>
+        </DIV>
+<H1><A name="Authentication-Authentication"></A>Authentication</H1>
+
+
+
+<P>This section describes the framework provided by Sling to authenticate HTTP requests.</P>
+
+<P>Let's look at generic request processing of Sling: Sling is linked into the outside world by registering the Sling Main Servlet &ndash; implemented by the <TT>SlingMainServlet</TT> class in the Sling Engine bundle &ndash; with an OSGi <TT>HttpService</TT>. This registration is accompanyied with an implementation instance of the OSGi <TT>HttpContext</TT> interface, which defines a method to authenticate requests: <TT>handleSecurity</TT>.</P>
+
+<P>This method is called by the OSGi HTTP Service implementation after the servlet has been selected to handle the request but before actually calling the servlet's <TT>service</TT> method.</P>
+
+<TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR>
+<TD class="confluenceTd" valign="top">
+<P><SPAN class="image-wrap" style=""><A class="confluence-thumbnail-link 602x622" href="authentication.data/authentication.png"><IMG src="authentication.data/authentication.png.jpeg" title="Request Processing " style="border: 0px solid black"></A></SPAN></P></TD>
+<TD class="confluenceTd" valign="top">
+<OL>
+	<LI>First the OSGi HTTP Service implementation is analyzing the request URL to find a match for a servlet or resource registered with the HTTP Service.</LI>
+	<LI>Now the HTTP Service implementation has to call the <TT>handleSecurity</TT> method of the <TT>HttpContext</TT> object with which the servlet or resource has been registered. This method returns <TT>true</TT> if the request should be serviced. If this method returns <TT>false</TT> the HTTP Service implementation terminates the request sending back any response which has been prepared by the <TT>handleSecurity</TT> method. Note, that the <TT>handleSecurity</TT> method must prepare the failure response sent to the client, the HTTP Service adds nothing here. If the <TT>handleSecurity</TT> method is successful, it must add two (or three) request attributes described below.</LI>
+	<LI>When the <TT>handleSecurity</TT> method returns <TT>true</TT> the HTTP Service either calls the <TT>Servlet.service</TT> method or sends back the requested resource depending on whether a servlet or a resource has been selected in the first step.</LI>
+</OL>
+</TD></TR></TBODY></TABLE>
+
+<P>The important thing to note here is, that at the time the <TT>handleSecurity</TT> method is called, the <TT>SlingMainServlet</TT> is not yet in control of the request. So any functionality added by the <TT>SlingMainServlet</TT>, notably the <TT>SlingHttpServletRequest</TT> and <TT>SlingHttpServletResponse</TT> objects are not available to the implementation of the <TT>handleSecurity</TT> method.</P>
+
+<P>The following pages describe the full details of request authentication in Sling in full detail:</P>
+
+<UL>
+	<LI><A href="authentication-tasks.html" title="Authentication - Tasks">Tasks</A>: Authentication of HTTP Requests is generally a two-step process: First the credentials must be extracted from the request and second the credentials must be validated. In the case of Sling this means acquiring a JCR Session.</LI>
+	<LI><A href="authentication-actors.html" title="Authentication - Actors">Actors</A>: The authentication process involves a number of actors contributing to the concepts, the API and the particular implementations.</LI>
+	<LI><A href="authentication-framework.html" title="Authentication - Framework">Framework</A>: The core piece of functionality with respect to authentication in Sling is contained in the Sling Commons Auth bundle. This bundle provides the API for Sling and Sling applications to make use of authentication.</LI>
+	<LI><A href="authentication-authenticationhandler.html" title="Authentication - AuthenticationHandler">AuthenticationHandler</A>: The <TT>AuthenticationHandler</TT> interface defines the service API which may be implemented by authentication handlers registered as OSGi services.</LI>
+</UL>
+
+        <DIV class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+Last modified by fmeschbe on 2010-02-01 11:55:33.0
+        </DIV>
+        <DIV class="trademarkFooter">
+Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+        </DIV>
+    </DIV>
+  </BODY>
+</HTML>
+

Added: websites/staging/sling/trunk/content/site/bundle-resources-extensionsbundleresource.html
==============================================================================
--- websites/staging/sling/trunk/content/site/bundle-resources-extensionsbundleresource.html (added)
+++ websites/staging/sling/trunk/content/site/bundle-resources-extensionsbundleresource.html Wed Dec 12 09:16:44 2012
@@ -0,0 +1,130 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Apache Sling - Bundle Resources (extensions.bundleresource)</TITLE>
+    <LINK rel="stylesheet" href="http://sling.apache.org/site/media.data/site.css" type="text/css" media="all">
+    <LINK rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </HEAD>
+  <BODY>
+    <DIV class="title">
+      <DIV class="logo">
+        <A href="http://sling.apache.org/site/index.html">
+          <IMG border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </A>
+      </DIV>
+      <DIV class="header">
+        <A href="http://www.apache.org/">
+          <IMG border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </A>
+      </DIV>
+    </DIV>
+    <DIV class="menu">
+<P><B>Documentation</B><BR class="atl-forced-newline">
+<A href="getting-started.html" title="Getting Started">Getting Started</A><BR class="atl-forced-newline">
+<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A><BR class="atl-forced-newline">
+<A href="development.html" title="Development">Development</A><BR class="atl-forced-newline">
+<A href="bundles.html" title="Bundles">Bundles</A><BR class="atl-forced-newline">
+<A href="tutorials-how-tos.html" title="Tutorials & How-Tos">Tutorials &amp; How&#45;Tos</A><BR class="atl-forced-newline">
+<A href="configuration.html" title="Configuration">Configuration</A><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/apidocs/sling6/index.html" class="external-link" rel="nofollow">API docs</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.wiki" class="external-link" rel="nofollow">Wiki</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.faq" class="external-link" rel="nofollow">FAQ</A><BR class="atl-forced-newline"></P>
+
+<P><B>Project info</B><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">Downloads</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</A><BR class="atl-forced-newline">
+<A href="contributing.html" title="Contributing">Contributing</A><BR class="atl-forced-newline">
+<A href="news.html" title="News">News</A><BR class="atl-forced-newline">
+<A href="links.html" title="Links">Links</A><BR class="atl-forced-newline">
+<A href="project-information.html" title="Project Information">Project Information</A><BR class="atl-forced-newline">
+<A href="https://issues.apache.org/jira/browse/SLING" class="external-link" rel="nofollow">Issue Tracker</A><BR class="atl-forced-newline">
+<A href="http://svn.apache.org/viewvc/sling/trunk" class="external-link" rel="nofollow">Browse Source Repository</A><BR class="atl-forced-newline">
+<A href="security.html" title="Security">Security</A><BR class="atl-forced-newline"></P>
+
+<P><B>Sponsorship</B><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Become a Sponsor</A><BR>
+<A href="http://www.apache.org/foundation/buy_stuff.html" class="external-link" rel="nofollow">Buy Stuff</A></P>
+
+
+  <IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+  <P style="height: 135px"></P>
+    </DIV>
+    <DIV class="main">
+        <DIV class="breadcrump" style="font-size: 80%;">
+<A href="apache-sling.html" title="Apache Sling Website">Apache Sling Website</A>&nbsp;&gt;&nbsp;<A href="apache-sling.html" title="Apache Sling">Apache Sling</A>&nbsp;&gt;&nbsp;<A href="documentation.html" title="Documentation">Documentation</A>&nbsp;&gt;&nbsp;<A href="bundles.html" title="Bundles">Bundles</A>&nbsp;&gt;&nbsp;<A href="" title="Bundle Resources (extensions.bundleresource)">Bundle Resources (extensions.bundleresource)</A>
+        </DIV>
+<H1><A name="BundleResources%28extensions.bundleresource%29-BundleResources"></A>Bundle Resources</H1>
+
+<DIV>
+<UL>
+    <LI><A href="#BundleResources%2528extensions.bundleresource%2529-Introduction">Introduction</A></LI>
+    <LI><A href="#BundleResources%2528extensions.bundleresource%2529-ResourceTypes">Resource Types</A></LI>
+    <LI><A href="#BundleResources%2528extensions.bundleresource%2529-Adapters">Adapters</A></LI>
+    <LI><A href="#BundleResources%2528extensions.bundleresource%2529-Configuration">Configuration</A></LI>
+</UL></DIV>
+
+<H2><A name="BundleResources%28extensions.bundleresource%29-Introduction"></A>Introduction</H2>
+
+<P>The Bundle Resource Provider provides access to files/directories included in an OSGi bundle through the Sling <TT>ResourceResolver</TT>. </P>
+
+<H2><A name="BundleResources%28extensions.bundleresource%29-ResourceTypes"></A>Resource Types</H2>
+
+<P>Files and directories are mapped into the resource tree as regular <TT>Resource</TT> instances whose resource type depends on the actual nature of the mapped resource:</P>
+
+<UL>
+	<LI>Regular files are assigned the <TT>nt:file</TT> resource type</LI>
+	<LI>Directories are assigned the <TT>nt:folder</TT> resource type</LI>
+</UL>
+
+
+
+<H2><A name="BundleResources%28extensions.bundleresource%29-Adapters"></A>Adapters</H2>
+
+<P>Filesystem resources extend from Sling's <TT>AbstractResource</TT> class and thus are adaptable to any type for which an <TT>AdapterFactory</TT> is registered supporting bundle resources. In addition <TT>BundleResource</TT> support the following adapters natively:</P>
+
+<UL>
+	<LI><TT>java.net.URL</TT> &ndash; A valid <TT>bundle://</TT> URL to the resource in the bundle.</LI>
+	<LI><TT>java.io.InputStream</TT> &ndash; An <TT>InputStream</TT> to read file contents. Doesn't apply to folders.</LI>
+</UL>
+
+
+
+<H2><A name="BundleResources%28extensions.bundleresource%29-Configuration"></A>Configuration</H2>
+
+<P>Providing bundles have a Bundle manifest header <TT>Sling-Bundle-Resources</TT> containing a list of absolute paths provided by the bundle. The paths are separated by comma or whitespace (SP, TAB, VTAB, CR, LF). </P>
+
+<P>Example (manifest.mf):</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+...
+Sling-Bundle-Resources: /libs/sling/explorer,                         
+    /libs/sling/servlet/<SPAN class="code-keyword">default</SPAN>/explorer
+...
+</PRE>
+</DIV></DIV>
+
+<P>It's also possible to map resources from the bundle to a different location in the resource tree. In this case the path has to be extended with a path attrribute to declare where the resources are in the bundle:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+...
+Sling-Bundle-Resources: /somepath/inthe/resourcetree;path:=/path/inthe/bundle
+...
+</PRE>
+</DIV></DIV>
+
+<P>The Bundle Resource Provider also has a web console plugin through which the currently installed bundles can be seen.</P>
+        <DIV class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+Last modified by justinedelson on 2010-08-25 08:39:51.0
+        </DIV>
+        <DIV class="trademarkFooter">
+Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+        </DIV>
+    </DIV>
+  </BODY>
+</HTML>
+

Added: websites/staging/sling/trunk/content/site/bundles.html
==============================================================================
--- websites/staging/sling/trunk/content/site/bundles.html (added)
+++ websites/staging/sling/trunk/content/site/bundles.html Wed Dec 12 09:16:44 2012
@@ -0,0 +1,114 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Apache Sling - Bundles</TITLE>
+    <LINK rel="stylesheet" href="http://sling.apache.org/site/media.data/site.css" type="text/css" media="all">
+    <LINK rel="icon" href="http://sling.apache.org/site/media.data/favicon.ico">
+    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </HEAD>
+  <BODY>
+    <DIV class="title">
+      <DIV class="logo">
+        <A href="http://sling.apache.org/site/index.html">
+          <IMG border="0" alt="Apache Sling" src="http://sling.apache.org/site/media.data/logo.png">
+        </A>
+      </DIV>
+      <DIV class="header">
+        <A href="http://www.apache.org/">
+          <IMG border="0" alt="Apache" src="http://sling.apache.org/site/media.data/apache.png">
+        </A>
+      </DIV>
+    </DIV>
+    <DIV class="menu">
+<P><B>Documentation</B><BR class="atl-forced-newline">
+<A href="getting-started.html" title="Getting Started">Getting Started</A><BR class="atl-forced-newline">
+<A href="the-sling-engine.html" title="The Sling Engine">The Sling Engine</A><BR class="atl-forced-newline">
+<A href="development.html" title="Development">Development</A><BR class="atl-forced-newline">
+<A href="" title="Bundles">Bundles</A><BR class="atl-forced-newline">
+<A href="tutorials-how-tos.html" title="Tutorials & How-Tos">Tutorials &amp; How&#45;Tos</A><BR class="atl-forced-newline">
+<A href="configuration.html" title="Configuration">Configuration</A><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/apidocs/sling6/index.html" class="external-link" rel="nofollow">API docs</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.wiki" class="external-link" rel="nofollow">Wiki</A><BR class="atl-forced-newline">
+<A href="http://s.apache.org/sling.faq" class="external-link" rel="nofollow">FAQ</A><BR class="atl-forced-newline"></P>
+
+<P><B>Project info</B><BR class="atl-forced-newline">
+<A href="http://sling.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">Downloads</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</A><BR class="atl-forced-newline">
+<A href="contributing.html" title="Contributing">Contributing</A><BR class="atl-forced-newline">
+<A href="news.html" title="News">News</A><BR class="atl-forced-newline">
+<A href="links.html" title="Links">Links</A><BR class="atl-forced-newline">
+<A href="project-information.html" title="Project Information">Project Information</A><BR class="atl-forced-newline">
+<A href="https://issues.apache.org/jira/browse/SLING" class="external-link" rel="nofollow">Issue Tracker</A><BR class="atl-forced-newline">
+<A href="http://svn.apache.org/viewvc/sling/trunk" class="external-link" rel="nofollow">Browse Source Repository</A><BR class="atl-forced-newline">
+<A href="security.html" title="Security">Security</A><BR class="atl-forced-newline"></P>
+
+<P><B>Sponsorship</B><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</A><BR class="atl-forced-newline">
+<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Become a Sponsor</A><BR>
+<A href="http://www.apache.org/foundation/buy_stuff.html" class="external-link" rel="nofollow">Buy Stuff</A></P>
+
+
+  <IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+  <P style="height: 135px"></P>
+    </DIV>
+    <DIV class="main">
+        <DIV class="breadcrump" style="font-size: 80%;">
+<A href="apache-sling.html" title="Apache Sling Website">Apache Sling Website</A>&nbsp;&gt;&nbsp;<A href="apache-sling.html" title="Apache Sling">Apache Sling</A>&nbsp;&gt;&nbsp;<A href="documentation.html" title="Documentation">Documentation</A>&nbsp;&gt;&nbsp;<A href="" title="Bundles">Bundles</A>
+        </DIV>
+<H1><A name="Bundles-Bundles"></A>Bundles</H1>
+
+<H2><A name="Bundles-Content"></A>Content</H2>
+
+<UL>
+	<LI><A href="content-loading-jcrcontentloader.html" title="Content Loading (jcr.contentloader)">Content Loading &#40;jcr.contentloader&#41;</A></LI>
+	<LI><A href="internationalization-support-i18n.html" title="Internationalization Support (i18n)">Internationalization Support &#40;i18n&#41;</A></LI>
+	<LI><A href="manipulating-content-the-slingpostservlet-servletspost.html" title="Manipulating Content - The SlingPostServlet (servlets.post)">Manipulating Content &#45; The SlingPostServlet &#40;servlets.post&#41;</A></LI>
+</UL>
+
+
+<H2><A name="Bundles-ResourceProviders"></A>Resource Providers</H2>
+
+<UL>
+	<LI><A href="accessing-filesystem-resources-extensionsfsresource.html" title="Accessing Filesystem Resources (extensions.fsresource)">Accessing Filesystem Resources &#40;extensions.fsresource&#41;</A></LI>
+	<LI><A href="bundle-resources-extensionsbundleresource.html" title="Bundle Resources (extensions.bundleresource)">Bundle Resources &#40;extensions.bundleresource&#41;</A></LI>
+</UL>
+
+
+<H2><A name="Bundles-Users%2CGroups%2CAccess%2CPermissions"></A>Users, Groups, Access, Permissions</H2>
+
+<UL>
+	<LI><A href="managing-users-and-groups-jackrabbitusermanager.html" title="Managing users and groups (jackrabbit.usermanager)">Managing users and groups &#40;jackrabbit.usermanager&#41;</A></LI>
+	<LI><A href="managing-permissions-jackrabbitaccessmanager.html" title="Managing permissions (jackrabbit.accessmanager)">Managing permissions &#40;jackrabbit.accessmanager&#41;</A></LI>
+</UL>
+
+
+<H2><A name="Bundles-Installer"></A>Installer</H2>
+<UL>
+	<LI><A href="osgi-installer.html" title="OSGi Installer">OSGi Installer</A></LI>
+	<LI><A href="jcr-installer-provider.html" title="JCR Installer Provider">JCR Installer Provider</A></LI>
+</UL>
+
+
+<H2><A name="Bundles-Misc"></A>Misc</H2>
+<UL>
+	<LI><A href="apache-sling-commons-thread-pool.html" title="Apache Sling Commons Thread Pool">Commons Thread Pools</A></LI>
+	<LI><A href="commons-html-utilities.html" title="Commons HTML Utilities">Commons HTML Utilities</A></LI>
+	<LI><A href="mime-type-support-commonsmime.html" title="MIME Type Support (commons.mime)">MIME Type Support &#40;commons.mime&#41;</A></LI>
+	<LI><A href="output-rewriting-pipelines-orgapacheslingrewriter.html" title="Output Rewriting Pipelines (org.apache.sling.rewriter)">Output Rewriting Pipelines &#40;org.apache.sling.rewriter&#41;</A></LI>
+	<LI><A href="sling-settings-orgapacheslingsettings.html" title="Sling Settings (org.apache.sling.settings)">Sling Settings &#40;org.apache.sling.settings&#41;</A></LI>
+	<LI><A href="scheduler-service-commons-scheduler.html" title="Scheduler Service (commons scheduler)">Scheduler Service &#40;commons scheduler&#41;</A></LI>
+	<LI><A href="web-console-extensions.html" title="Web Console Extensions">Web Console Extensions (org.apache.sling.extensions.webconsolebranding, org.apache.sling.extensions.webconsolesecurityprovider)</A></LI>
+</UL>
+
+
+        <DIV class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
+Last modified by cziegeler@apache.org on 2011-10-11 05:23:49.0
+        </DIV>
+        <DIV class="trademarkFooter">
+Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+        </DIV>
+    </DIV>
+  </BODY>
+</HTML>
+