<!--
  ~ Copyright © 2009-2013, JoshuaTree. All Rights Reserved.
  -->
<body>
  <img src="./images/fortresscommunitylogov3.jpg" />  
<br>
<p>
These instructions are intended for new users who want to quickly learn how to use JoshuaTree Fortress and Symas OpenLDAP IAM software on Windows platform.
These instructions are intended for new users who want to quickly learn how to install and test JoshuaTree Fortress and Symas OpenLDAP IAM software.
<br><br>Follow the steps and
    <ul>
    <li>OpenLDAP will be installed, configured, loaded, and ready to use by <em>Section IV</em>.</li>
    <li>Commander Web Admin demo starts in <em>Section V</em></li>    
    <li>EnMasse Policy Server demo starts in <em>Section XI</em></li>
    </ul>
</p>
  <hr>
   <h2>System Prerequisites</h2>
   The following steps are required...
   <p>
    <ul>
    <li>Internet access to retrieve binary dependencies from online Maven repo.</li>
    <li>Java SDK Version 7 or beyond installed to target environment</li>
    </ul>       
   </p>

<b>NOTE:</b> The Fortress build.xml may run without connection to Internet iff:
    <ul>
    <li>The binary dependencies are already present in FORTRESS_HOME/lib folder</li>
    <li>Local mode has been enabled on target machine.  Local mode can be enabled by adding this property to build.properties: local.mode=true</li>
    </ul>       
  <hr>
   <h2>Guidelines and Tips for first-time users</h2>
    <ul>
    <li>In the document that follows, when you read <em>[version]</em> or <em>[platform]</em> substitute with current package info.  For example - if the downloaded package version is 1.0.0 and platform is 'Debian Silver i386', the instructions show fortressBuilder-<em>[platform]</em>-<em>[version]</em>.jar your file name would be fortressBuilder-Debian-Silver-i386-1.0.0.zip</li>
<br>    
    <li>Does your target machine OS end with an X?  Go to <em>README-QUICKSTART.html</em></li>
<br>    
    <li>The source code for this project is located in <em>FORTRESS_HOME\src</em> folder.</li>
    
    <br><img src="./images/Screenshot28-src-listing-win.png" /><br><br>    
    </ul>       

<ol type="I">
    <hr>
    <li>
       <h3>Instructions to extract and configure Fortress Builder Package to Target System</h3>
        <ol type="A">	  
           <li>Copy fortressBuilder-[platform]-[version].zip to hard drive on target server env.</li>
<br>	   
           <li>Extract the zip.  The location for archive can vary according to requirements.  The location of package will be referred to as <em>FORTRESS_HOME</em> later on.</li>
<br>	   
        </ol>
    </li>
    <hr>
    <li>
       <h3>Instructions to run the Fortress Ant Build</h3>
        <ol type="A">	  
           <li>
From FORTRESS_HOME root folder, edit the b.bat script to point to java home:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">set JAVA_HOME=\Progra~1\Java\jdk1.7.0
</p></pre>
	   </li>	   
	   <img src="./images/Screenshot28-edit-javahome-win.png" /><br><br>
           <li>
Run the distribution target:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">b.bat dist	    
</p></pre>
	   <img src="./images/Screenshot29-ant-dist-win.png" />
<br>Note: The b.bat file referred to here uses Ant package that is local to Fortress quickstart package.
	   </li>
<br>	   	   
           <li>
Verify it ran correctly according to Ant:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">BUILD SUCCESSFUL
</p></pre>
	   <img src="./images/Screenshot30-ant-dist-success-win.png" /><br><br>    
	   </li>	   
        </ol>
You may now view the project binaries and documentation located under FORTRESS_HOME/dist.
	   <br><br><img src="./images/Screenshot5-dist-listing.png" /><br><br>
    </li>
    <hr>
    <li>
       <h3>Instructions to run the Builder to Install Symas OpenLDAP, configure and load with seed data</h3>
        <strong><p style="color:blue;font-size:14px;">Important: This target reinstalls and reloads the OpenLDAP server program, configuration and data.
</p>
  
        <ol type="A">
<br>
  
	   <li>
From FORTRESS_HOME root folder, edit the build.properties file, setting the 3 properties below to match your environment:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">
slapd.exe.drive=C             <-- contains the drive letter for openldap server
slapd.exe.dir=OpenLDAP        <-- contains the folder to load openldap server binaries
fortress.home.drive=C         <-- contains the drive letter that you extracted fortress' builder package to.
</p></pre>
If you are not sure, what to use, the defaults usually work.    Here's a screen shot of the build.properties.<br><br>
	   <img src="./images/Screenshot39-build-properties-win.png" /><br><br>	     	    
	   </li>
</strong>
    
	   <li>
From FORTRESS_HOME root folder, enter the following command from a system prompt:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">b init-slapd
</p></pre>
    <br>Note: You will need to reply 'Yes' to the pop-up message:<br>
    	   <img src="./images/Screenshot33-window-warning.png" /><br><br>

    <br>Note: You will need to reply 'Allow' to the pop-up security warning message if you intend to allow other machines to communicate with ldap server:<br>
    	   <img src="./images/Screenshot40-firewall-warning-win.png  " /><br><br>

	   <img src="./images/Screenshot31-init-slapd-win.png" /><br><br>
	   </li>
           <li>
Verify it ran correctly according to Ant.
<pre><p style="font-family:monospace;color:blue;font-size:14px;">BUILD SUCCESSFUL
</p></pre>
	   <img src="./images/Screenshot32-init-slapd-success-win.png" /><br><br>
           <li>
After above step completes, Symas OpenLDAP will be installed, configured and loaded with fortress bootstrap config.  This
step also runs provisioning scripts which may be tailored according to requirements.  Check out the xml load scripts
in FORTRESS_HOME/ldap/setup folder.
<br><br>	   
	   </li>

           <li>
Point your preferred LDAP browser, ours is <a href="http://directory.apache.org/studio/">Apache Directory Studio</a>, to the installed directory.
	   	   	   
The configuration parameters you'll need to browse can be found in the generated 'slapd.conf' file.
<br><br>
    To view data stored in default database:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">suffix	    "dc=jts,dc=us"
rootdn      "cn=Manager,dc=jts,dc=us"
rootpw      "secret"</p></pre>
The root pw will be encrypted before stored in slapd.conf

	   <br><br><img src="./images/Screenshot8-ldap-browser.png" /><br><br>
	       
To view data stored in audit log database:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">suffix      "cn=log"
rootdn      "cn=Manager,cn=log"
rootpw      "secret"</p></pre>  
The log root pw will be encrypted before stored in slapd.conf

	   <br><br><img src="./images/Screenshot9-ldap-browser-log.png" /><br><br>
	   
	   </li>
        </ol>
    </li>
  <hr>
    <li>
       <h3>Instructions to regression test Fortress and Symas OpenLDAP on target machine</h3>
        <ol type="A">	  
           <li>From FORTRESS_HOME root folder, enter the following command from a system prompt:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">b test-full
</p></pre>  
	   </li>
	   <img src="./images/Screenshot34-ant-test-init-win.png" /><br><br>	   	   	   
	   
           <li>Verify these tests ran with no ERRORS.
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">BUILD SUCCESSFUL	    
</p></pre>  
	   </li>
	   <img src="./images/Screenshot35-ant-test-init-success-win.png" /><br><br>
           <li>
To re-run these tests:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">b test-full
</p></pre>  
   	   </li>	   	   	   
        </ol>
Note 1: WARNING messages in test output are good as these are negative tests in action:
	   <br><img src="./images/Screenshot12-junit-warn.png" />	   	   
<br><br>Note 2: If you made it this far without junit or ant ERRORS, the Fortress and Symas OpenLDAP IAM system are certified to run on your machine.
<br><br>Note 3: These tests load tens of thousands of records into your newly installed directory.
The 'init-slapd' target may be re-run after the 'test-full-init' and 'test-full' targets have completed.  This will delete the test data from the directory
and restart directory with a clean slate.
    </li>
    <li>
       <h3>Instructions to install Commander Web UI Demo (optional)</h3>
Run the install-commander-demo target:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">b install-commander-demo
</p></pre>

   </li>
    
    <li>
       <h3>Instructions to automatically test Commander Web UI Demo (optional)</h3>
Run the commander-maven-test target to perform headless test of Commander Web:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">b commander-maven-test
</p></pre>

note: Firefox must be preinstalled to target system.
   </li>
    
    
    <li>
       <h3>Instructions to connect to Commander Web Admin</h3>
Open up browser and enter the following URL:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">http://localhost:8080/commander
</p></pre>

userId: test
password: test
<br><br>
Click on links on top or bottons on side of page to navigate between pages
   </li>
    
    
  <hr>
    <li>
       <h3>Instructions to run the Fortress Command Line Interpreter (CLI) utility (optional)</h3>
This command line tool provides an interactive session with the user based on a simple command line syntax.<br><br>
        <ol type="A">	  
           <li>
To start the CLI, enter:<pre><p style="font-family:monospace;color:blue;font-size:14px;">b cli
</p></pre>
	   <img src="./images/Screenshot36-ant-cli-win.png" /><br><br>
Which will bring up the command interpreter:
	   <br><img src="./images/Screenshot14-cli.png" /><br><br>
	   </li>
           <li>
enter the command:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">review fuser -u demo
</p></pre>
	   <img src="./images/Screenshot15-cli-review.png" /><br><br>

This example will return all users with userId that begins with 'demo':<br><br>
<img src="./images/Screenshot16-cli-fuser.png" /><br><br>
	   </li>
           <li>
To learn more about the CLI and what it can do, follow instructions in the command line interpreter reference
manual in the javadoc located here:
<br><br>
<a href="./dist/docs/api/us/jts/fortress/cli/package-summary.html">Command Line Interpreter</a>
<br><br>
Note: if javadocs are not found, go to Section X
	   </li>	   
        </ol>
   </li>
  <hr>
    <li>
       <h3>Instructions to run Fortress Console (optional)</h3>
For tasks like one-time setup of new users, password resets, searches
the Fortress Console application can be used.<br><br>       
        <ol type="A">	  
           <li>
From FORTRESS_HOME root folder, enter the following command
from a system prompt:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">b console
</p></pre>
<img src="./images/Screenshot37-ant-console-win.png" /><br><br>
	   </li>
	   
           <li>
Console Screenshots...
        <ol type="1">
	  <br>
           <li>
Main Menu:
<br><img src="./images/Screenshot18-console-main.png" /><br>
	   </li>
	   <br>
           <li>
	    Enter choice and follow the screen prompts to edit RBAC data:
	    <br><img src="./images/Screenshot19-console-admin.png" /><br>
	   </li>
	   <br>
	    
           <li>
Enter choice and follow the screen prompts to search RBAC data:
<br><img src="./images/Screenshot20-console-review.png" /><br>	    	    
	   </li>
	   <br>	   	   
           <li>
Enter choice and follow the screen prompts to test RBAC policies:
<br><img src="./images/Screenshot21-console-access.png" /><br>	    	    
	   </li>
	   <br>	   	   
           <li>
Enter choice and follow the screen prompts to setup ARBAC delegated policies:
<br><img src="./images/Screenshot22-console-deladmin.png" /><br>
	   </li>
	   <br>	   	   
           <li>
Enter choice and follow the screen prompts to search through the AUDIT log:
<br><img src="./images/Screenshot23-console-audit.png" />
	   </li>
        </ol>
	   </li>
        </ol>
    </li>
  <hr>
    <li>
       <h3>Instructions to generate and view Javadoc  (optional)</h3>
        <ol type="A">	  
           <li>
Run the javadoc target:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">b javadoc
</p></pre>
<img src="./images/Screenshot38-javadoc-win.png" /><br><br>
	   </li>
           <li>Navigate to where docs are genned:</li>
	   <br>
<img src="./images/Screenshot25-javadoc-listing.png" /><br><br>
           <li>Open 'index.html' using your preferred HTML Browser:</li>
<img src="./images/Screenshot26-javadoc.png" /><br><br>
	    
           <li>The javadoc provides coverage of the Fortress APIs and also provides explanations on how RBAC, ARBAC, PW Policies and Audit work.</li>
	   <br>	   <a href=""></a>
           <li>
Good places to start learning about Fortress:
    <ul><br>
    <li><a href="./dist/docs/api/us/jts/fortress/package-summary.html">Fortress Manager Summary</a></li>
    <li><a href="./dist/docs/api/us/jts/fortress/rbac/package-summary.html">RBAC Summary</a></li>
    <li><a href="./dist/docs/api/us/jts/fortress/AuditMgr.html">Audit Manager</a></li>
    <li><a href="./dist/docs/api/us/jts/fortress/cli/package-summary.html">Command Line Interpreter</a></li>
    <li><a href="./dist/docs/api/us/jts/fortress/ant/FortressAntTask.html">FortressAntTask</a></li>
    </ul>
	   </li>	   	   	   	   
        </ol>

    <hr>
    <li>
       <h3>Instructions to install EnMasse Policy Server Demo (optional)</h3>
        <ol type="A">	  
           <li>
Run the install-enmasse-demo target:
<pre><p style="font-family:monospace;color:blue;font-size:14px;">b install-enmasse-demo
</p></pre>

   </li>
           <li>
Verify it ran correctly according to Ant.
           <li>
After above step completes, Fortress EnMasse will be installed
<br><br>	   
	   </li>
	</ol>
    <hr>
    <li>
       <h3>Instructions to regression test EnMasse Policy server on target machine (optional)</h3>
        <ol type="A">
	  
		  <li>Edit file named 'build.properties' and enable REST protocol here:
       <br><pre><p style="font-family:monospace;color:blue;font-size:14px;">enable.mgr.impl.rest=true
       </p></pre>
       Accept the defaults for other HTTP parameters in build.properties:
       <pre><p style="font-family:monospace;color:blue;font-size:14px;">http.user=demouser4
http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
http.host=localhost
http.port=8080
       </p></pre>
		  </li>
	  Should look like the following:	  
		  <br><br><img src="./images/Screenshot41-enmasse-http-settings.png" /><br><br>
		   
		  <li>Save and exit the text file editor		  
		  </li><br>
		  
           <li>From FORTRESS_HOME root folder, enter the following command from a system prompt:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">b test-full	    
</p></pre>
	   </li>
	   <img src="./images/Screenshot10-ant-test-init.png" /><br><br>
Note: The EnMasse regression tests will run for around 20 minutes.<br><br>
           <li>Verify these tests ran with no ERRORS.
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">BUILD SUCCESSFUL	    
</p></pre>  
	   </li>
	   <img src="./images/Screenshot43-ant-enmasse-test-success.png" /><br><br>
           <li>
This regression test may be rerun as often as necessary:
<br><pre><p style="font-family:monospace;color:blue;font-size:14px;">b test-full
</p></pre>  
   	   </li>	   	   	   
Note 1: WARNING messages in test output are good as these are negative tests in action:
	   <br><img src="./images/Screenshot12-junit-warn.png" />	   	   
<br><br>Note 2: If you made it this far without junit or ant ERRORS, EnMasse is installed and certified to run on your machine.
<br><br>Note 3: These tests load tens of thousands of records into your directory.
The 'test-full' target may be re-run as often as necessary.  After regressions testing have completed, you may run the 'init-slapd' target to remove all test data from the directory.
    </li>
    </li>		  
	</ol>
  <hr>
		
        <hr>
    <li>
       <h3>More Utilities</h3>
Other execution targets you may find useful:       
        <ol type="A">
	  <br>
           <li>	    
'test-samples' - contains examples of how the Fortress API's work
check out the following javadoc for more info on the samples package:
<a href="./dist/docs/samples/index.html">Samples Javadoc</a>	    
	   </li>
	  <br>	   
           <li>
'admin' - provides an XML-centric way to provision RBAC data policies and user accounts.
check out the following javadoc for more info on this utility:	    
<a href="./dist/docs/api/us/jts/fortress/ant/FortressAntTask.html">Fortress Ant admin script utility document</a>
	   </li>
	  <br>	   	   
           <li>'encrypt' - interface to jacypt encryption utility</li>
	  <br>	   	   
           <li>'start-slapd' - Starts OpenLDAP on target machine.</li>
	  <br>	   	   
           <li>'stop-slapd' - Stops OpenLDAP on target machine.</li>
Note: for slapd commands sudo or elevated privileges may be required.
	  <br><br>	   
           <li>display all ant targets available:
<br><img src="./images/Screenshot27-ant-p.png" /><br><br>	   
	   </li>	   	   	   
        </ol>
    </li>
        </ol>    
</ol>
  <hr>
Copyright (c) 2009-2013, JoshuaTree. All Rights Reserved.
</body>
