geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Geronimo v2.1: ldap-sample-app - LDAP Sample Application (page edited)
Date Thu, 25 Sep 2008 15:31:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence" />
    <style type="text/css">
    <!--
    body, p, td, table, tr, .bodytext, .stepfield {
	font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	color: #000000;
	font-weight: normal;
}
#PageContent {
	text-align: left;
	background-color: #fff;
	padding: 0px;
	margin: 0px;
    padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/

body {
	margin: 0px;
	padding: 0px;
	text-align: center;
    background-color: #f0f0f0;
}

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

.wiki-content p, .commentblock p {
    margin: 16px 0px 16px 0px;
    padding: 0px;
}

.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid #3c78b5;
    border-right: 1px solid #3c78b5;
}

ul, ol {
    margin-top: 2px;
    margin-bottom: 2px;
    padding-top: 0px;
    padding-bottom: 0px;
}

pre {
    padding: 0px;
    margin-top: 5px;
    margin-left: 15px;
    margin-bottom: 5px;
    margin-right: 5px;
    text-align: left;
}

.helpheading {
    font-weight: bold;
    background-color: #D0D9BD;
        border-bottom: 1px solid #3c78b5;
        padding: 4px 4px 4px 4px;
        margin: 0px;
        margin-top: 10px;
}
.helpcontent {
        padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.code {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.focusedComment {
    background: #ffffce;
}

.commentBox, .focusedComment {
    padding: 10px;
    margin: 5px 0 5px 0;
    border: 1px #bbb solid;
}

.codeHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.codeContent {
    text-align: left;
    background-color: #f0f0f0;
    padding: 3px;
}

.preformatted {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.preformattedHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.preformattedContent {
    background-color: #f0f0f0;
    padding: 3px;
}

.panel {
 	border: 1px dashed #3c78b5;
    margin: 10px;
    margin-top: 0px;
}

.panelHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.panelContent {
    background-color: #f0f0f0;
    padding: 5px;
}

.anonymousAlert {
    background-color: #f0f0f0;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}

.lockAlert {
    background-color: #f0f0f0;
    width: 50%;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}


.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}


.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

.breadcrumbs {
    background-color: #f0f0f0;
 	border-color: #3c78b5;
	border-width: 1px 0px 1px 0px;
	border-style: solid;
    font-size: 11px;
    padding: 3px 0px 3px 0px;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 2px 4px;
}

.menuitems {
	padding: 4px 4px 20px 4px;
}

.rightpanel {
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

#helpheading {
    text-align: left;
    font-weight: bold;
    background-color: #D0D9BD;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 4px 4px;
	margin: 0px;
}
#helpcontent {
	padding: 4px 4px 4px 4px;
    background-color: #f5f7f1;
}
.helptab-unselected {
    font-weight: bold;
	padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #D0D9BD;
	padding: 5px;
}
.helptabs {
    margin: 0px;
    background-color: #f5f7f1;
	padding: 5px;
}
.infopanel-heading {
    font-weight: bold;
	padding: 4px 0px 2px 0px;
}

.pagebody {
}

.pageheader {
	padding: 5px 5px 5px 0px;
 	border-bottom: 1px solid #3c78b5;
}

.pagetitle {
	font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
	font-size: 18px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
	margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	font-weight: normal;
    color: #666666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
	font-size: 12px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.sectionbottom {
    border-bottom: 1px solid #3c78b5;
}

.topRow {
    border-top: 2px solid #3c78b5;
}

.tabletitle {
	font-size: 14px;
	font-weight: bold;
	font-family: Arial, sans-serif;
    padding: 3px 0px 2px 0px;
    margin: 8px 4px 2px 0px;
	color: #003366;
	border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
    color: #666666;
    font-size: 10px;
    padding: 0px 0px 5px 0px;
}

HR {
	color: 3c78b5;
	height: 1;
}

A:link, A:visited, A:active, A:hover {
	color: #003366;
}

h1 A:link, h1 A:visited, h1 A:active {
	text-decoration: none;
}

h1 A:hover {
    border-bottom: 1px dotted #003366;
}

.wiki-content > :first-child, .commentblock > :first-child {
    margin-top: 3px;
}

.logocell {
    padding: 10px;
}

input {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #000000;
}

textarea, textarea.editor {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #333333;
}

/* use logoSpaceLink instead.
.spacenametitle {
	font: 21px/31px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle img {
  margin: 0 0 -4px 0;
}
.spacenametitle a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle a:visited {
    text-decoration: none;
    color: #999999;
}*/

.spacenametitle-printable {
	font: 20px/25px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle-printable a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle-printable a:visited {
    text-decoration: none;
    color: #999999;
}

.blogDate {
	font-weight: bold;
	text-decoration: none;
	color: black;
}

.blogSurtitle {
    background: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.blogHeading {
    font-size: 20px;
    line-height: normal;
    font-weight: bold;
    padding: 0px;
    margin: 0px;
}

.blogHeading a {
   text-decoration: none;
   color: black;
}

.endsection {
	align: right;
	color: #666666;
	margin-top: 10px;
}
.endsectionleftnav {
	align: right;
	color: #666666;
	margin-top: 10px;
}

h1 {
	font-size: 24px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	color: #003366;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 36px 0px 4px 0px;
}

h2 {
	font-size: 18px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 27px 0px 4px 0px;
}

h3 {
	font-size: 14px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 21px 0px 4px 0px;
}

h4 {
	font-size: 12px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 18px 0px 4px 0px;
}

h4.search {
	font-size: 12px;
	line-height: normal;
	font-weight: normal;
	background-color: #f0f0f0;
	padding: 4px;
	margin: 18px 0px 4px 0px;
}

h5 {
	font-size: 10px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

h6 {
	font-size: 8px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    font-size: 10px;
    color: #666666;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666666;
    font-size: 10px;
}
.smalltext a {
    color: #666666;
}
.smalltext-blue {
    color: #3c78b5;
    font-size: 10px;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }

div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
    margin: 0px 0px 0px 0px;
}

div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }

.tableview table {
    margin: 0;
}

.tableview th {
    text-align: left;
    color: #003366;
    font-size: 12px;
    padding: 5px 0px 0px 5px;
    border-bottom: 2px solid #3c78b5;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0px 0px 1px 0px;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0px 5px 0px;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
	background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}
.label {
	font-weight: bold;
	color: #003366;
}

label {
	font-weight: bold;
	color: #003366;
}

.error {
	background-color: #fcc;
}

.errorBox {
	background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

.successBox {
	background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
	padding-left: 10px;
	padding-right: 10px;
	margin-left: 5px;
	margin-right: 0px;
	border-left: 1px solid #3c78b5;
}

table.confluenceTable
{
    margin: 5px;
    border-collapse: collapse;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

DIV.small {
	font-size: 9px;
}

H1.pagename {
	margin-top: 0px;
}

IMG.inline  {}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
                font-size: 11px;
                    color: red; }

/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink {
    color: maroon;
}
a.createlink {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: darkblue;
}

.diffadded {
    background: #ddffdd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkgreen;
}
.diffdeleted {
    color: #999;
    background: #ffdddd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkred;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
	border-left: 4px solid lightgrey;
}
.differror {
    background: brown;
}
.diff {
    font-family: lucida console, courier new, fixed-width;
	font-size: 12px;
	line-height: 14px;
}
.diffaddedchars {
    background-color:#99ff99;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#ff9999;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #cccccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
 	border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
	margin: 1px 1px 10px 1px;
}

.navBackgroundBox {
    padding: 5px 5px 5px 5px;
    font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: white;
    background: #3c78b5;
    text-decoration: none;
}

.previewBoxTop {
	background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
 	border-color: #3c78b5;
	border-width: 0px 1px 0px 1px;
	border-style: solid;
	padding: 10px;
	margin: 0px;
}
.previewBoxBottom {
	background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
 	border: 1px solid #3c78b5;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.search-highlight {
    background-color: #ffffcc;
}

/* normal (white) background */
.rowNormal {
    background-color: #ffffff;
 }

/* alternate (pale yellow) background */
.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomNoColor {
}

.rowAlternateNoBottomColor td {
    border-bottom: 0px;
}

.rowAlternateNoBottomNoColor td {
    border-bottom: 0px;
}

/* row highlight (grey) background */
.rowHighlight {
    background-color: #f0f0f0;

}

TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }

TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }

.toolbar  {
    margin: 0px;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px 2px 2px 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0px;
    border-style: none;
    text-align: center;
	padding: 0px;
}

.commentblock {
    margin: 12px 0 12px 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license-eval, .license-none, .license-nonprofit {
    border-top: 1px solid #bbbbbb;
    text-align: center;
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

.license-eval, .license-none {
    background-color: #ffcccc;
}

.license-eval b, .license-none b {
    color: #990000
}

.license-nonprofit {
    background-color: #ffffff;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("$req.contextPath/images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}

#foldertab li {
list-style: none;
margin: 0;
display: inline;
}

#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}

#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }

#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}

#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}

/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}

#squaretab li {
display: inline;
list-style-type: none;
}

#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}

#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}

#squaretab li a#current {
background: white;
color: black;
}

.blogcalendar * {
    font-family:verdana, arial, sans-serif;
    font-size:x-small;
    font-weight:normal;
    line-height:140%;
    padding:2px;
}


table.blogcalendar {
    border: 1px solid #3c78b5;
}

.blogcalendar th.calendarhead, a.calendarhead {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    text-transform:uppercase;
    background-color: #3c78b5;
    color: #ffffff;
    letter-spacing: .3em;
    text-transform: uppercase;
}

.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}

.blogcalendar th {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    background-color:#f0f0f0;
}

.blogcalendar td {
    font-size:x-small;
    font-weight:normal;
}

.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}

/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }

/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }

/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}

.pagecontent
{
    padding: 10px;
    text-align: left;
}

/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}

.topBar {
    background-color: #003366;
}


/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}

.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}

.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}

.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.greyFormBox {
    border: 1px solid #cccccc;
    padding: 5px;
}

/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
    margin: 0px;
}

.openPageHighlight {
    background-color: #ffffcc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a
{
    color: #666666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #003366;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #003366;
}
.top50 a {
    font-size: 1.4em;
    color: #003366;
}
.top100 a {
    font-size: 1.2em;
    color: #003366;
}

.heatmap {
    list-style:none;
    width: 95%;
    margin: 0px auto;
}

.heatmap a {
    text-decoration:none;
}

.heatmap a:hover {
    text-decoration:underline;
}

.heatmap li {
    display: inline;
}

.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}

a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }

a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }

.linkerror { background-color: #fcc;}

a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}

a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}

ul.square {list-style-type: square}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
}


.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
}

div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toogleFormDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    padding:5px;
    margin-top: 5px;
}

.toogleInfoDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    display:none;
    padding:5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom:20px;
}

#editBox{
   border:1px solid lightgray;
   background-color:#F0F0F0;
}

/******* Left Navigation Theme Styles ********/
.leftnav li a {
    text-decoration:none;
    color:white;
    margin:0px;
    display:block;
    padding:2px;
    padding-left:5px;
    background-color: #3c78b5;
    border-top:1px solid #3c78b5;
}

.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}

/* Added by Shaun during i18n */
.replaced
{
    background-color: #33CC66;
}

.topPadding
{
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    padding: 6px;
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-header {
    background: lightyellow;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}
    -->
    </style>
</head>
<body>

<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21">GMOxDOC21</a> :
            <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21/ldap-sample-app+-+LDAP+Sample+Application">ldap-sample-app - LDAP Sample Application</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/GMOxDOC21/ldap-sample-app+-+LDAP+Sample+Application">ldap-sample-app - LDAP Sample Application</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~jbohn">Joe Bohn</a>
            <span class="smallfont">(Sep 25, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=78386&originalVersion=10&revisedVersion=11">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><style type='text/css'>/*<![CDATA[*/
table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 3px;margin: 0px;background-color: #f0f0f0}
table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 16px;border: none;}
table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;}

/*]]>*/</style><div class="Scrollbar"><table class='ScrollbarTable'><tr><td class='ScrollbarPrevIcon'><a href="/confluence/display/GMOxDOC21/jms-mdb+-+JMS+and+MDB+Sample+Application"><img border='0' align='middle' src='/confluence/images/icons/back_16.gif' width='16' height='16'></a></td><td width='33%' class='ScrollbarPrevName'><a href="/confluence/display/GMOxDOC21/jms-mdb+-+JMS+and+MDB+Sample+Application">jms-mdb - JMS and MDB Sample Application</a>&nbsp;</td><td width='33%' class='ScrollbarParent'><sup><a href="/confluence/display/GMOxDOC21/Sample+applications"><img border='0' align='middle' src='/confluence/images/icons/up_16.gif' width='8' height='8'></a></sup><a href="/confluence/display/GMOxDOC21/Sample+applications">Sample applications</a></td><td width='33%' class='ScrollbarNextName'>&nbsp;<a href="/confluence/display/GMOxDOC21/myphonebook+-+Very+Simple+Entity+EJB+Example">myphonebook - Very Simple Entity EJB Example</a></td><td class='ScrollbarNextIcon'><a href="/confluence/display/GMOxDOC21/myphonebook+-+Very+Simple+Entity+EJB+Example"><img border='0' align='middle' src='/confluence/images/icons/forwd_16.gif' width='16' height='16'></a></td></tr></table></div>
<p><a name="ldap-sample-app-LDAPSampleApplication-top"></a></p>

<p>This sample shows how you can use a Lightweight Directory Access Protocol (LDAP) server to configure and control access to resources on your Geronimo server.</p>

<p>There are two routes to running this sample. You can either use the Apache Geronimo plugin (version 1.0) for the Apache Directory Service 1.5.1 or you can use an external LDAP server.</p>

<p>One way to install the Apache Geronimo-Apache Directory Server Plugin is by navigating in the Geronimo Administration Console to <b>Applications</b> -&gt; <b>Plugins</b>.  Once in the view, updating the repository list (which should add a repository for your installed Geronimo version if not already included), selecting the referenced repository, and then select <b>Show Plugins in selected repository</b> to display the list of all possible plugins in this directory.  Locate the <b>Apache Geronimo-Apache Directory Server Plugin</b> and then install it.  Source for this plugin can be found at <span class="nobr"><a href="http://svn.apache.org/repos/asf/geronimo/plugins/directory/branches/1.0/" title="Visit page outside Confluence" rel="nofollow">Geromino Directory Plugin Source<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. </p>
<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
<p>NOTE:  The Apache Geronimo-Apache Directory plugin can not be installed in Geronimo 2.1.2.  If you are using Geronimo 2.1.2 with this sample you must use an external LDAP server.  However, the Apache Geronimo-Apache Directory plugin can be installed in Geronimo 2.1.3 and this sample works equally well with the Geronimo 2.1.3.</p></td></tr></table>


<p>Geronimo uses the Apache Directory Server for its directory service, this is part of the <span class="nobr"><a href="http://directory.apache.org" title="Visit page outside Confluence" rel="nofollow">Apache Directory Project<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. Geronimo implements the following two projects from the ApacheDS project.</p>

<ul>
	<li><b>ApacheDS Core</b><br/>
Server's core contains all backend subsystems. It depends on protocol and uses it with seda to service Lightweight Directory Access Protocol (LDAP) requests. The core contains the JNDI provider, interceptor framework, interceptor services, the schema subsystem and the database subsystem. Hence the core is the heart of the server.</li>
</ul>


<ul>
	<li><b>ApacheDS Shared</b><br/>
Created to eliminate cyclic project dependencies between the core and the maven plug-in. Any code shared across modules in general can go here so long as it does not depend on other modules.</li>
</ul>


<p>More information about these two projects can be found at the ApacheDS project URL:<br/>
<span class="nobr"><a href="http://directory.apache.org/subprojects/apacheds/projects/index.html" title="Visit page outside Confluence" rel="nofollow">http://directory.apache.org/subprojects/apacheds/projects/index.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p>At this point in time, the Geronimo plugin only provides LDAP viewing capabilities, editing is not there yet but adding this feature is in plan for the next releases of Geronimo. You will have to use an external LDAP client such as ldapbrowser/editor, jxplorer or gq for editing the configurations of the Directory Server in Geronimo.</p>

<p>The other alternative is to use Geronimo with an external LDAP server. For example, you may download Apache Directory Service binary, start the ldap server and load it up with the ldap-sample.ldif givenand follow the rest of the sample instructions.</p>


<p>This article is organized in the following sections:</p>
<div>
<ul>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-StartingtheLDAPserver'>Starting the LDAP server</a></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-SourceCodeforSample'>Source Code for Sample</a></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-AddLDAPentries'>Add LDAP entries</a>
<ul>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-Toaddentriesmanually'>To add entries manually</a></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-ToaddentriesusinganLDAPclient'>To add entries using an LDAP client</a></li>
</ul></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-DeploytheLDAPrealm'>Deploy the LDAP realm</a>
<ul>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-LDAPrealmdeploymentdetails'>LDAP realm deployment details</a></li>
</ul></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-CreatingandInstallingtheLDAPSampleApplication'>Creating and Installing the LDAP Sample Application</a>
<ul>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-Deploymentplans'>Deployment plans</a></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-Packagethesampleapplication'>Package the sample application</a></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-Deploythesampleapplication'>Deploy the sample application</a></li>
</ul></li>
  <li><a href='#ldap-sample-app-LDAPSampleApplication-Testingthesampleapplication'>Testing the sample application</a></li>
</ul></div>

<h1><a name="ldap-sample-app-LDAPSampleApplication-StartingtheLDAPserver"></a>Starting the LDAP server</h1>
<p>If you installed the Apache Geronimo-Apache Directory Plugin it should have been started as part of the installation.  You can verify that it is started from command line using the deployer tool or via the Geronimo Administration Console.</p>

<p>Using the Administration Console click on <b>System Modules</b> on the navigation menu from the left and look for the component name <b>org.apache.geronimo.plugins/directory</b> in the <b>Installed System Modules</b> portlet. You will see the current status and available commands for this particular component.</p>

<p>Alternatively, if you are using an external LDAP server, start that server in the normal manner and follow the remaining instructions here.</p>

<p><a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p>

<h1><a name="ldap-sample-app-LDAPSampleApplication-SourceCodeforSample"></a>Source Code for Sample</h1>

<p>You can checkout the source code of this sample from SVN:</p>

<p><b><tt>svn checkout <span class="nobr"><a href="http://svn.apache.org/repos/asf/geronimo/samples/trunk/samples/ldap-sample-app" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/geronimo/samples/trunk/samples/ldap-sample-app<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>   ldap-sample-app</tt></b></p>

<p>The above command places the source under ldap-sample-app, from now on this directory will be referred as &lt;ldap_home&gt;.</p>

<p>At this point you can choose to install an LDAP client and import/export an <b><tt>.ldif</tt></b> file to a directory server.  However, this is not required.  Directions are provided if you choose to not install an LDAP client.</p>

<p><a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p>

<h1><a name="ldap-sample-app-LDAPSampleApplication-AddLDAPentries"></a>Add LDAP entries</h1>
<p>Ensure that Geronimo is up and running and the Directory service is started. </p>

<h2><a name="ldap-sample-app-LDAPSampleApplication-Toaddentriesmanually"></a>To add entries manually</h2>
<p>When you installed the <b>Apache Geronimo-Apache Directory plugin</b> you may have noticed a message on the console similar to the following:</p>

<div class="preformatted" style="border-style: solid; "><div class="preformattedContent">
<pre>WARN  [ServerContextFactory] LDIF load directory '/Users/user1/geronimo-tomcat6-javaee5-2.1/var/ldif' does not exist.  No LDIF files will be loaded.
</pre>
</div></div>

<p>This is because the directory server does not yet have any content.  You can manually add the content necessary for the sample by including the <b>ldap-sample.ldif</b> from the sample source in the location specified in the message (&lt;geronimo-home&gt;/var/ldif/) and restarting the Geronimo server or optionally just the directory configuration in the server. </p>

<h2><a name="ldap-sample-app-LDAPSampleApplication-ToaddentriesusinganLDAPclient"></a>To add entries using an LDAP client</h2>
<p>Start your LDAP client and create a new connection profile with the following values:</p>

<table class='confluenceTable'><tbody>
<tr>
<td class='confluenceTd'> Host: </td>
<td class='confluenceTd'> &lt;localhost&gt; </td>
</tr>
<tr>
<td class='confluenceTd'> Port: </td>
<td class='confluenceTd'> 10389 </td>
</tr>
<tr>
<td class='confluenceTd'> Base DN: </td>
<td class='confluenceTd'> ou=system </td>
</tr>
<tr>
<td class='confluenceTd'> User DN: </td>
<td class='confluenceTd'> uid=admin,ou=system </td>
</tr>
<tr>
<td class='confluenceTd'> Password: </td>
<td class='confluenceTd'> secret </td>
</tr>
</tbody></table>

<p>Once you connect to the Geronimo Directory server you will see the initial configuration, this configuration can be exported as a backup in a ldif file. Depending the LDAP client you are using the export/import steps will be different. For example, to export the initial configuration using the <b>ldapsearch</b> tool execute the following command:</p>

<p><tt><b>ldapsearch -h localhost -p 10389 -b "ou=system" -D "uid=admin,ou=system" -w secret -x "(objectclass=&#42;)"</b></tt></p>

<p>When you export the initial configuration you get an ldif file with a content similar as the one shown in the following example.</p>
<div class="preformatted" style="border-style: solid; "><div class="preformattedHeader" style="border-bottom-style: solid; "><b>export.ldif</b></div><div class="preformattedContent">
<pre>dn: ou=system
ou: system
objectClass: organizationalUnit
objectClass: top

dn: uid=admin, ou=system
displayName: Directory Superuser
uid: admin
userPassword:: c2VjcmV0
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
sn: administrator
cn: system administrator

dn: ou=users, ou=system
ou: users
objectClass: organizationalUnit
objectClass: top

dn: ou=groups, ou=system
ou: groups
objectClass: organizationalUnit
objectClass: top

dn: ou=configuration, ou=system
ou: configuration
objectClass: organizationalUnit
objectClass: top

dn: ou=partitions, ou=configuration, ou=system
ou: partitions
objectClass: organizationalUnit
objectClass: top

dn: ou=services, ou=configuration, ou=system
ou: services
objectClass: organizationalUnit
objectClass: top

dn: ou=interceptors, ou=configuration, ou=system
ou: interceptors
objectClass: organizationalUnit
objectClass: top

dn: prefNodeName=sysPrefRoot, ou=system
objectClass: extensibleObject
prefNodeName: sysPrefRoot
</pre>
</div></div>

<p>Now you need to import the entries needed to run the sample application. Packaged with the sample application is a sample <b><tt>.ldif</tt></b> file with all the entries necessary to run the LDAP sample application, this file is located in <b>&lt;ldap_home&gt;/ldap-sample.ldif</b>. To import the data with <b>ldapmodify</b> tool execute the following command:</p>

<p><tt><b>ldapmodify -h localhost -p 10389 -D "uid=admin,ou=system" -w secret -x -a -f &lt;ldap_home&gt;/ldap-sample.ldif</b></tt></p>

<p>The following example shows the content of the <b><tt>ldap-sample.ldif</tt></b> file.</p>
<div class="preformatted" style="border-style: solid; "><div class="preformattedHeader" style="border-bottom-style: solid; "><b>ldap-sample.ldif</b></div><div class="preformattedContent">
<pre># User: system

dn: uid=system,ou=users,ou=system
cn: John Doe
sn: Doe
givenname: John
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Las Vegas
uid: system
mail: system@apachecon.comm
telephonenumber: +1 408 555 5555
facsimiletelephonenumber: +1 408 555 5556
roomnumber: 4613
userPassword: manager

# User: user1

dn: uid=user1,ou=users,ou=system
cn: User
sn: One
givenname: User1
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Las Vegas
uid: user1
mail: user1@apachecon.comm
telephonenumber: +1 408 555 5555
facsimiletelephonenumber: +1 408 555 5556
roomnumber: 4613
userPassword: p1

# User: user2

dn: uid=user2,ou=users,ou=system
cn: User
sn: Two
givenname: User2
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Las Vegas
uid: user2
mail: user2@apachecon.comm
telephonenumber: +1 408 555 5555
facsimiletelephonenumber: +1 408 555 5556
roomnumber: 4613
userPassword: p2

# Group: admin

dn: cn=admin,ou=groups,ou=system
objectClass: groupOfUniqueNames
uniqueMember: uid=system,ou=users,ou=system
uniqueMember: uid=user2,ou=users,ou=system
cn: admin

# Group: guest

dn: cn=guest,ou=groups,ou=system
objectClass: groupOfUniqueNames
uniqueMember: uid=user1,ou=users,ou=system
cn: guest
</pre>
</div></div>

<p>Once the file is imported you should get a confirmation that five entries were successfully imported.</p>

<p><a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p>

<h1><a name="ldap-sample-app-LDAPSampleApplication-DeploytheLDAPrealm"></a>Deploy the LDAP realm</h1>

<p>One way to install the LDAP realm for the sample is by installing a Geronimo plugin created for this purpose.  You can do this by navigating in the Geronimo Administration Console to <b>Applications</b> -&gt; <b>Plugins</b>.  Once in the view, updating the repository list (which should add <span class="nobr"><a href="http://geronimo.apache.org/plugins/geronimo-2.1/" title="Visit page outside Confluence" rel="nofollow">http://geronimo.apache.org/plugins/geronimo-2.1/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> if not already included), selecting the referenced repository, and then select <b>Show Plugins in selected repository</b> to display the list of all possible plugins in this directory.  Locate the <b>Geronimo Configs :: LDAP Sample Security Realm</b> and then install it.  However, this process hides many of the details of creating and installing the realm.  For those details refer to the next section.</p>

<h2><a name="ldap-sample-app-LDAPSampleApplication-LDAPrealmdeploymentdetails"></a>LDAP realm deployment details</h2>

<p>The LDAP sample application provides a security realm that needs to be deployed before the deployment of the application itself. This realm is located in <b>&lt;ldap_home&gt;/ldap-realm.xml</b> and the content is illustrated in the following example.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>ldap-realm.xml</b></div><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;module xmlns=<span class="code-quote">"http://geronimo.apache.org/xml/ns/deployment-1.2"</span>&gt;</span>
    <span class="code-tag">&lt;environment&gt;</span>
        <span class="code-tag">&lt;moduleId&gt;</span>
            <span class="code-tag">&lt;groupId&gt;</span>console.realm<span class="code-tag">&lt;/groupId&gt;</span>
            <span class="code-tag">&lt;artifactId&gt;</span>LDAP_Sample_Realm<span class="code-tag">&lt;/artifactId&gt;</span>
            <span class="code-tag">&lt;version&gt;</span>1.0<span class="code-tag">&lt;/version&gt;</span>
            <span class="code-tag">&lt;type&gt;</span>car<span class="code-tag">&lt;/type&gt;</span>
        <span class="code-tag">&lt;/moduleId&gt;</span>
        <span class="code-tag">&lt;dependencies&gt;</span>
            <span class="code-tag">&lt;dependency&gt;</span>
                <span class="code-tag">&lt;groupId&gt;</span>org.apache.geronimo.configs<span class="code-tag">&lt;/groupId&gt;</span>
                <span class="code-tag">&lt;artifactId&gt;</span>j2ee-security<span class="code-tag">&lt;/artifactId&gt;</span>
                <span class="code-tag">&lt;type&gt;</span>car<span class="code-tag">&lt;/type&gt;</span>
            <span class="code-tag">&lt;/dependency&gt;</span>
        <span class="code-tag">&lt;/dependencies&gt;</span>
    <span class="code-tag">&lt;/environment&gt;</span>
    &lt;gbean name=<span class="code-quote">"LDAP_Sample_Realm"</span> class=<span class="code-quote">"org.apache.geronimo.security.realm.GenericSecurityRealm"</span> 
                                    xsi:type=<span class="code-quote">"dep:gbeanType"</span> <span class="code-keyword">xmlns:dep</span>=<span class="code-quote">"http://geronimo.apache.org/xml/ns/deployment-1.2"</span> 
                                    <span class="code-keyword">xmlns:xsi</span>=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>&gt;
        <span class="code-tag">&lt;attribute name=<span class="code-quote">"realmName"</span>&gt;</span>LDAP_Sample_Realm<span class="code-tag">&lt;/attribute&gt;</span>
        <span class="code-tag">&lt;reference name=<span class="code-quote">"ServerInfo"</span>&gt;</span>
            <span class="code-tag">&lt;name&gt;</span>ServerInfo<span class="code-tag">&lt;/name&gt;</span>
        <span class="code-tag">&lt;/reference&gt;</span>
        <span class="code-tag">&lt;xml-reference name=<span class="code-quote">"LoginModuleConfiguration"</span>&gt;</span>
            <span class="code-tag">&lt;log:login-config <span class="code-keyword">xmlns:log</span>=<span class="code-quote">"http://geronimo.apache.org/xml/ns/loginconfig-1.2"</span>&gt;</span>
                <span class="code-tag">&lt;log:login-module control-flag=<span class="code-quote">"REQUIRED"</span> wrap-principals=<span class="code-quote">"false"</span>&gt;</span>
                    <span class="code-tag">&lt;log:login-domain-name&gt;</span>LDAP_Sample_Realm<span class="code-tag">&lt;/log:login-domain-name&gt;</span>
                    <span class="code-tag">&lt;log:login-module-class&gt;</span>org.apache.geronimo.security.realm.providers.LDAPLoginModule<span class="code-tag">&lt;/log:login-module-class&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"initialContextFactory"</span>&gt;</span>com.sun.jndi.ldap.LdapCtxFactory<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"connectionURL"</span>&gt;</span>ldap://localhost:10389<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"connectionUsername"</span>&gt;</span>uid=admin,ou=system<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"connectionPassword"</span>&gt;</span>secret<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"authentication"</span>&gt;</span>simple<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"userBase"</span>&gt;</span>ou=users,ou=system<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"userSearchMatching"</span>&gt;</span>uid={0}<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"userSearchSubtree"</span>&gt;</span>false<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"roleBase"</span>&gt;</span>ou=groups,ou=system<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"roleName"</span>&gt;</span>cn<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"roleSearchMatching"</span>&gt;</span>(uniqueMember={0})<span class="code-tag">&lt;/log:option&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"roleSearchSubtree"</span>&gt;</span>false<span class="code-tag">&lt;/log:option&gt;</span>
                <span class="code-tag">&lt;/log:login-module&gt;</span>
                <span class="code-tag">&lt;log:login-module control-flag=<span class="code-quote">"OPTIONAL"</span> wrap-principals=<span class="code-quote">"false"</span>&gt;</span>
                    <span class="code-tag">&lt;log:login-domain-name&gt;</span>LDAP_Sample_Realm-Audit<span class="code-tag">&lt;/log:login-domain-name&gt;</span>
                    <span class="code-tag">&lt;log:login-module-class&gt;</span>org.apache.geronimo.security.realm.providers.FileAuditLoginModule<span class="code-tag">&lt;/log:login-module-class&gt;</span>
                    <span class="code-tag">&lt;log:option name=<span class="code-quote">"file"</span>&gt;</span>var/log/login-attempts.log<span class="code-tag">&lt;/log:option&gt;</span>
                <span class="code-tag">&lt;/log:login-module&gt;</span>
            <span class="code-tag">&lt;/log:login-config&gt;</span>
        <span class="code-tag">&lt;/xml-reference&gt;</span>
    <span class="code-tag">&lt;/gbean&gt;</span>
<span class="code-tag">&lt;/module&gt;</span></pre>
</div></div>

<p>This deployment plan tell Geronimo all the connection and search paraments against the LDAP database. This plan also specifies to record each login attempt into the <tt>login-attempts.log</tt> log file.</p>

<p>To deploy the ldap-realm.xml run the following command from the &lt;geronimo_home&gt;/bin directory:</p>

<p><tt><b>java &#45;jar deployer.jar &#45;-user system &#45;-password manager deploy &lt;ldap_home&gt;/ldap-realm.xml</b></tt></p>

<p>Once deployed you should see a confirmation message similar to the following example:<br/>
<font color="white"><div class="preformatted" style="border-style: solid; "><div class="preformattedContent" style="background-color: #000000; ">
<pre>D:\geronimo-tomcat6-jee5-2.0\bin&gt;deploy deploy \samples\2.0\ldap-sample-app\ldap-realm.xml
Using GERONIMO_BASE:   D:\geronimo-tomcat6-jee5-2.0
Using GERONIMO_HOME:   D:\geronimo-tomcat6-jee5-2.0
Using GERONIMO_TMPDIR: D:\geronimo-tomcat6-jee5-2.0\var\temp
Using JRE_HOME:        C:\Java\jdk1.5.0_06\\jre
    Deployed console.realm/LDAP_Sample_Realm/1.0/car
</pre>
</div></div></font><br/>
<a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p>

<p>For further details refer to the <a href="/confluence/display/GMOxDOC21/LDAP+Realm" title="LDAP Realm">LDAP Realm</a> section.</p>

<h1><a name="ldap-sample-app-LDAPSampleApplication-CreatingandInstallingtheLDAPSampleApplication"></a>Creating and Installing the LDAP Sample Application</h1>
<p>One way to install the LDAP sample application is by installing a Geronimo plugin created for this purpose.  You can do this by navigating in the Geronimo Administration Console to <b>Applications</b> -&gt; <b>Plugins</b>.  Once in the view, updating the repository list (which should add <span class="nobr"><a href="http://geronimo.apache.org/plugins/geronimo-2.1/" title="Visit page outside Confluence" rel="nofollow">http://geronimo.apache.org/plugins/geronimo-2.1/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> if not already included), selecting the referenced repository, and then select <b>Show Plugins in selected repository</b> to display the list of all possible plugins in this directory.  Locate the <b>Geronimo Configs :: LDAP Sample for Tomcat</b> or <b>Geronimo Configs :: LDAP Sample for Jetty</b> (depending upon you Geronimo service choice) and then install it.  However, this process hides many of the details of creating and installing the sample.  For those details refer to the next section.</p>

<h2><a name="ldap-sample-app-LDAPSampleApplication-Deploymentplans"></a>Deployment plans</h2>

<p>The deployment plans are located in the <b>&lt;ldap_home&gt;/WEB-INF</b> directory. Clearly, <b>geronimo-web.xml</b> is the Geronimo specific deployment plan. It provides the details on what security realm to use and user role mappings as well as the Geronimo specific namespace used to identify the elements in the security configuration. Common to other types of applications, not just security, the deployment plan also provides the main namespace for the deployment plan, a module identification (optional), a parent module configuration ID (also optional) and a context root. The following example illustrates the Geronimo specific deployment plan.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>geronimo-web.xml</b></div><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?&gt;</span>
<span class="code-tag">&lt;web-app xmlns=<span class="code-quote">"http://geronimo.apache.org/xml/ns/j2ee/web-1.2"</span>&gt;</span>
    <span class="code-tag">&lt;environment&gt;</span>
        <span class="code-tag">&lt;moduleId&gt;</span>
            <span class="code-tag">&lt;groupId&gt;</span>samples<span class="code-tag">&lt;/groupId&gt;</span>
            <span class="code-tag">&lt;artifactId&gt;</span>LDAP_Sample<span class="code-tag">&lt;/artifactId&gt;</span>
            <span class="code-tag">&lt;version&gt;</span>1.2<span class="code-tag">&lt;/version&gt;</span>
        <span class="code-tag">&lt;/moduleId&gt;</span>
    <span class="code-tag">&lt;/environment&gt;</span>
    <span class="code-tag">&lt;context-root&gt;</span>/LDAP_Sample<span class="code-tag">&lt;/context-root&gt;</span>

    <span class="code-tag">&lt;security-realm-name&gt;</span>LDAP_Sample_Realm<span class="code-tag">&lt;/security-realm-name&gt;</span>
    <span class="code-tag">&lt;security&gt;</span>
        <span class="code-tag">&lt;default-principal realm-name=<span class="code-quote">"LDAP_Sample_Realm"</span>&gt;</span>
            <span class="code-tag">&lt;principal class=<span class="code-quote">"org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"</span> name=<span class="code-quote">"system"</span>/&gt;</span>
        <span class="code-tag">&lt;/default-principal&gt;</span>
        <span class="code-tag">&lt;role-mappings&gt;</span>
            <span class="code-tag">&lt;role role-name=<span class="code-quote">"content-administrator"</span>&gt;</span>
                <span class="code-tag">&lt;realm realm-name=<span class="code-quote">"LDAP_Sample_Realm"</span>&gt;</span>
                    <span class="code-tag">&lt;principal class=<span class="code-quote">"org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"</span> name=<span class="code-quote">"admin"</span> designated-run-as=<span class="code-quote">"true"</span>/&gt;</span>
                    <span class="code-tag">&lt;principal class=<span class="code-quote">"org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"</span> name=<span class="code-quote">"system"</span>/&gt;</span>
                <span class="code-tag">&lt;/realm&gt;</span>
            <span class="code-tag">&lt;/role&gt;</span>
            <span class="code-tag">&lt;role role-name=<span class="code-quote">"guest"</span>&gt;</span>
                <span class="code-tag">&lt;realm realm-name=<span class="code-quote">"LDAP_Sample_Realm"</span>&gt;</span>
                    <span class="code-tag">&lt;principal class=<span class="code-quote">"org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"</span> name=<span class="code-quote">"guest"</span> designated-run-as=<span class="code-quote">"true"</span>/&gt;</span>
                    <span class="code-tag">&lt;principal class=<span class="code-quote">"org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"</span> name=<span class="code-quote">"user1"</span>/&gt;</span>
                <span class="code-tag">&lt;/realm&gt;</span>
            <span class="code-tag">&lt;/role&gt;</span>
        <span class="code-tag">&lt;/role-mappings&gt;</span>
    <span class="code-tag">&lt;/security&gt;</span>
<span class="code-tag">&lt;/web-app&gt;</span></pre>
</div></div>

<p>The first part of the deployment plan is straight forward. However, the security configuration is tricky. The &lt;security-realm-name&gt; is described in the &lt;security&gt; element through a sequence of declarations in the &lt;realms&gt; element.</p>

<p>While the web.xml specifies the security roles, the geronimo-web.xml maps to which specific users or groups in the Geronimo security realms they belong to. If there is a user that is not logged in, it defaults to what is defined in the &lt;default-principal&gt; element.</p>

<p>There are two roles that are issued in this project: content-administrator and guest. And they each hold two principals: a GeronimoGroupPrincipal and a GeronimoUserPrincipal. Since the 'designated-run-as' flag is turned on for some principals, they will be the ones used if the deployable has a run-as role set in the web.xml.</p>

<p>Note that these role mappings will be overridden by the actual roles (what users pertaining to what groups) defined in the LDAP server. Ultimately it is the realm defined in the application deployment plan who determines the validation method. Nevertheless, for this particular example, you still need to define principals and role mappings as determined in the <span class="nobr"><a href="http://geronimo.apache.org/xml-schemas.html" title="Visit page outside Confluence" rel="nofollow">XML schemas<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p><a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p>

<p>The <b>web.xml</b> deployment descriptor shown in the following example (also located in the <b>&lt;ldap_home&gt;/WEB-INF</b> diretory) adds security constraints based on the location of the files.</p>

<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>web.xml</b></div><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"ISO-8859-1"</span>?&gt;</span>
&lt;web-app xmlns=<span class="code-quote">"http://java.sun.com/xml/ns/j2ee"</span>
         <span class="code-keyword">xmlns:xsi</span>=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
         xsi:schemaLocation=<span class="code-quote">"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span>
         version=<span class="code-quote">"2.4"</span>&gt;

    <span class="code-tag">&lt;welcome-file-list&gt;</span>
        <span class="code-tag">&lt;welcome-file&gt;</span>index.html<span class="code-tag">&lt;/welcome-file&gt;</span>
    <span class="code-tag">&lt;/welcome-file-list&gt;</span>

    <span class="code-tag">&lt;security-constraint&gt;</span>
        <span class="code-tag">&lt;web-resource-collection&gt;</span>
            <span class="code-tag">&lt;web-resource-name&gt;</span>Admin Role<span class="code-tag">&lt;/web-resource-name&gt;</span>
            <span class="code-tag">&lt;url-pattern&gt;</span>/protect/*<span class="code-tag">&lt;/url-pattern&gt;</span>
        <span class="code-tag">&lt;/web-resource-collection&gt;</span>
        <span class="code-tag">&lt;auth-constraint&gt;</span>
            <span class="code-tag">&lt;role-name&gt;</span>content-administrator<span class="code-tag">&lt;/role-name&gt;</span>
        <span class="code-tag">&lt;/auth-constraint&gt;</span>
    <span class="code-tag">&lt;/security-constraint&gt;</span>
    
    <span class="code-tag">&lt;security-constraint&gt;</span>
        <span class="code-tag">&lt;web-resource-collection&gt;</span>
            <span class="code-tag">&lt;web-resource-name&gt;</span>No Access<span class="code-tag">&lt;/web-resource-name&gt;</span>
            <span class="code-tag">&lt;url-pattern&gt;</span>/forbidden/*<span class="code-tag">&lt;/url-pattern&gt;</span>
        <span class="code-tag">&lt;/web-resource-collection&gt;</span>
        <span class="code-tag">&lt;auth-constraint/&gt;</span>
    <span class="code-tag">&lt;/security-constraint&gt;</span>

    <span class="code-tag">&lt;login-config&gt;</span>
        <span class="code-tag">&lt;auth-method&gt;</span>FORM<span class="code-tag">&lt;/auth-method&gt;</span>
            <span class="code-tag">&lt;realm-name&gt;</span>ldap-realm-1<span class="code-tag">&lt;/realm-name&gt;</span>
            <span class="code-tag">&lt;form-login-config&gt;</span>
                <span class="code-tag">&lt;form-login-page&gt;</span>/auth/logon.html?param=test<span class="code-tag">&lt;/form-login-page&gt;</span>
                <span class="code-tag">&lt;form-error-page&gt;</span>/auth/logonError.html?param=test<span class="code-tag">&lt;/form-error-page&gt;</span>
            <span class="code-tag">&lt;/form-login-config&gt;</span>
    <span class="code-tag">&lt;/login-config&gt;</span>

    <span class="code-tag">&lt;security-role&gt;</span>
        <span class="code-tag">&lt;role-name&gt;</span>content-administrator<span class="code-tag">&lt;/role-name&gt;</span>
    <span class="code-tag">&lt;/security-role&gt;</span>

<span class="code-tag">&lt;/web-app&gt;</span></pre>
</div></div>
<p><a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p>

<h2><a name="ldap-sample-app-LDAPSampleApplication-Packagethesampleapplication"></a>Package the sample application</h2>

<p>Now that all the elements have been identified, it is necessary to package the sample application in a Web application Archive (.war). Open a command line window, change directory to &lt;ldap_home&gt; and run the following command:</p>

<p><b><tt>jar -cvf ldap-demo.war &#42;</tt></b></p>

<p>This command will package all the existing files and directories inside <b>&lt;ldap_home&gt;</b>. Although not needed inside the .war file, the ldap-realm.xml and ldap-sample.ldif files will also be included.</p>

<p><a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p>

<h2><a name="ldap-sample-app-LDAPSampleApplication-Deploythesampleapplication"></a>Deploy the sample application</h2>

<p>To deploy the LDAP sample application make sure the Geronimo server is up and running. Open a command line window, change directory to &lt;geronimo_home&gt;/bin and run the following command:</p>

<p><tt><b>java &#45;jar deployer.jar &#45;-user system &#45;-password manager deploy &lt;ldap_home&gt;/ldap-demo.war</b></tt></p>


<h1><a name="ldap-sample-app-LDAPSampleApplication-Testingthesampleapplication"></a>Testing the sample application</h1>

<p>Once the Web application is successfully deployed you should see a confirmation message similar as the one shown in the following example:</p>

<p><font color="white"><div class="preformatted" style="border-style: solid; "><div class="preformattedContent" style="background-color: #000000; ">
<pre>D:\geronimo-tomcat6-jee5-2.0\bin&gt;deploy deploy \samples\2.0\ldap-sample-app\ldap-demo.war
Using GERONIMO_BASE:   D:\geronimo-tomcat6-jee5-2.0
Using GERONIMO_HOME:   D:\geronimo-tomcat6-jee5-2.0
Using GERONIMO_TMPDIR: D:\geronimo-tomcat6-jee5-2.0\var\temp
Using JRE_HOME:        C:\Java\jdk1.5.0_06\\jre
    Deployed samples/LDAP_Sample/1.2/war @
    http://localhost:8080/LDAP_Sample
    </pre>
</div></div></font></p>

<p>To test the LDAP application open a Web browser and access the following URL:</p>

<p><span class="nobr"><a href="http://localhost:8080/LDAP_Sample" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/LDAP_Sample<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<p>The following figure shows the welcome page for the LDAP sample application.</p>

<p><img src="/confluence/download/attachments/78386/ldap_1.jpg" align="absmiddle" border="0" /></p>

<p>Click on <span class="nobr"><a href="http://localhost:8080/LDAP_Sample/protect/" title="Visit page outside Confluence" rel="nofollow">Protect<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> to validate against the LDAP Directory Server.</p>

<p><img src="/confluence/download/attachments/78386/ldap_2.jpg" align="absmiddle" border="0" /></p>

<p>Enter <b>system</b> as the username and <b>manager</b> as the password and click <b>Login</b>. The username and password you provide here is the same you use to access the Geronimo Web console and it is stored in the Directory Server database. Once you are logged in you should see the following screen.</p>

<p><img src="/confluence/download/attachments/78386/ldap_3.jpg" align="absmiddle" border="0" /></p>

<p>At this point you have an application that is validating username and passwords against an LDAP Directory Server database based on the security configuration you provided earlier in the LDAP realm. Now, if you go back to the welcome page and click on <span class="nobr"><a href="http://localhost:8080/LDAP_Sample/forbidden/" title="Visit page outside Confluence" rel="nofollow">Forbidden<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> you should receive a 403 - Forbidden HTTP error similar to the one shown in the following figure.</p>

<p><img src="/confluence/download/attachments/78386/ldap_4.jpg" align="absmiddle" border="0" /></p>

<p>Depending on the web container you are using (that is Jetty or Tomcat) the presentation of that screen may be slightly different.</p>

<p>To further test this example you could now try the different users provided in the <b><tt>ldap-sample.ldif</tt></b>, use your LDAP client and add/remove users from the different groups. You will notice the changes immediatly (you may need to close your web browser).</p>

<p><a href="#ldap-sample-app-LDAPSampleApplication-top" title="top on ldap-sample-app - LDAP Sample Application">Back to Top</a></p></div>


</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
    </tr>
</table>

<div class="smalltext">
    Powered by
    <a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
    (Version: 2.2.9 Build:#527 Sep 07, 2006)
    -
    <a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
    <br>
    <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>

</div>

</body>
</html>


Mime
View raw message