<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tony+Gottlieb</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tony+Gottlieb"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Tony_Gottlieb"/>
		<updated>2026-05-27T02:50:46Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129955</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129955"/>
				<updated>2012-05-16T15:54:13Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Disclosure =&lt;br /&gt;
All of the code in the attached JAAS cheat sheet has been copied verbatim&lt;br /&gt;
from the free source.  The URL for the free source is   http://jaasbook.com/&lt;br /&gt;
= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameCallback nameCB = new NameCallback(&amp;quot;Username&amp;quot;);&lt;br /&gt;
PasswordCallback passwordCB = new PasswordCallback (&amp;quot;Password&amp;quot;, false);&lt;br /&gt;
Callback[] callbacks = new Callback[] { nameCB, passwordCB };&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  Below, is an example commit () method where first, for each group the &lt;br /&gt;
authenticated user has membership in, the group name is added as a principal to the subject. The subject’s username is then added to their public credentials.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding any principals and a public credentials to a subject:                              :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public boolean commit() {&lt;br /&gt;
  If (userAuthenticated) {&lt;br /&gt;
     Set groups = UserService.findGroups (username);&lt;br /&gt;
     for (Iterator itr = groups.iterator (); itr.hasNext (); {&lt;br /&gt;
        String groupName = (String) itr.next ();&lt;br /&gt;
        UserGroupPrincipal group = new UserGroupPrincipal (GroupName);&lt;br /&gt;
        subject.getPrincipals ().add (group);  &lt;br /&gt;
     }&lt;br /&gt;
     UsernameCredential cred = new UsernameCredential (username);&lt;br /&gt;
     subject.getPublicCredentials().add (cred);&lt;br /&gt;
  }&lt;br /&gt;
}                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The release of the users principals and credentials when LoginContext.logout is called.&lt;br /&gt;
public boolean logout() {&lt;br /&gt;
if (!subject.isReadOnly()) {&lt;br /&gt;
   Set principals = subject.getPrincipals(UserGroupPrincipal.class);&lt;br /&gt;
   subject.getPrincipals().removeAll(principals);&lt;br /&gt;
   Set creds = subject.getPublicCredentials(UsernameCredential.class);&lt;br /&gt;
   subject.getPublicCredentials().removeAll(creds);&lt;br /&gt;
   return true;&lt;br /&gt;
}  else {&lt;br /&gt;
           return false;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Articles = &lt;br /&gt;
* JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
* Pistoia, Marco, Nagaratnam, Nataraj, Koved, Larry, Nadalin, Anthony, &amp;quot;Enterprise Java Security&amp;quot;, Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
= Related Cheat Sheets = &lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129954</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129954"/>
				<updated>2012-05-16T15:51:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Disclosure =&lt;br /&gt;
All of the code in the attached JAAS cheat sheet has been copied verbatim&lt;br /&gt;
from the free source.  The URL for the free source is   http://jaasbook.com/&lt;br /&gt;
= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameCallback nameCB = new NameCallback(&amp;quot;Username&amp;quot;);&lt;br /&gt;
PasswordCallback passwordCB = new PasswordCallback (&amp;quot;Password&amp;quot;, false);&lt;br /&gt;
Callback[] callbacks = new Callback[] { nameCB, passwordCB };&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  Below, is an example commit () method where first, for each group the &lt;br /&gt;
authenticated user has membership in, the group name is added to the subject. The subject’s username is then added to their public credentials.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding any principals and a public credentials to a subject:                              :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public boolean commit() {&lt;br /&gt;
  If (userAuthenticated) {&lt;br /&gt;
     Set groups = UserService.findGroups (username);&lt;br /&gt;
     for (Iterator itr = groups.iterator (); itr.hasNext (); {&lt;br /&gt;
        String groupName = (String) itr.next ();&lt;br /&gt;
        UserGroupPrincipal group = new UserGroupPrincipal (GroupName);&lt;br /&gt;
        subject.getPrincipals ().add (group);  &lt;br /&gt;
     }&lt;br /&gt;
     UsernameCredential cred = new UsernameCredential (username);&lt;br /&gt;
     subject.getPublicCredentials().add (cred);&lt;br /&gt;
  }&lt;br /&gt;
}                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The release of the users principals and credentials when LoginContext.logout is called.&lt;br /&gt;
public boolean logout() {&lt;br /&gt;
if (!subject.isReadOnly()) {&lt;br /&gt;
   Set principals = subject.getPrincipals(UserGroupPrincipal.class);&lt;br /&gt;
   subject.getPrincipals().removeAll(principals);&lt;br /&gt;
   Set creds = subject.getPublicCredentials(UsernameCredential.class);&lt;br /&gt;
   subject.getPublicCredentials().removeAll(creds);&lt;br /&gt;
   return true;&lt;br /&gt;
}  else {&lt;br /&gt;
           return false;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Articles = &lt;br /&gt;
* JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
* Pistoia, Marco, Nagaratnam, Nataraj, Koved, Larry, Nadalin, Anthony, &amp;quot;Enterprise Java Security&amp;quot;, Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
= Related Cheat Sheets = &lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129953</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129953"/>
				<updated>2012-05-16T15:48:27Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameCallback nameCB = new NameCallback(&amp;quot;Username&amp;quot;);&lt;br /&gt;
PasswordCallback passwordCB = new PasswordCallback (&amp;quot;Password&amp;quot;, false);&lt;br /&gt;
Callback[] callbacks = new Callback[] { nameCB, passwordCB };&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  Below, is an example commit () method where first, for each group the &lt;br /&gt;
authenticated user has membership in, the group name is added to the subject. The subject’s username is then added to their public credentials.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding any principals and a public credentials to a subject:                              :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public boolean commit() {&lt;br /&gt;
  If (userAuthenticated) {&lt;br /&gt;
     Set groups = UserService.findGroups (username);&lt;br /&gt;
     for (Iterator itr = groups.iterator (); itr.hasNext (); {&lt;br /&gt;
        String groupName = (String) itr.next ();&lt;br /&gt;
        UserGroupPrincipal group = new UserGroupPrincipal (GroupName);&lt;br /&gt;
        subject.getPrincipals ().add (group);  &lt;br /&gt;
     }&lt;br /&gt;
     UsernameCredential cred = new UsernameCredential (username);&lt;br /&gt;
     subject.getPublicCredentials().add (cred);&lt;br /&gt;
  }&lt;br /&gt;
}                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The release of the users principals and credentials when LoginContext.logout is called.&lt;br /&gt;
public boolean logout() {&lt;br /&gt;
if (!subject.isReadOnly()) {&lt;br /&gt;
   Set principals = subject.getPrincipals(UserGroupPrincipal.class);&lt;br /&gt;
   subject.getPrincipals().removeAll(principals);&lt;br /&gt;
   Set creds = subject.getPublicCredentials(UsernameCredential.class);&lt;br /&gt;
   subject.getPublicCredentials().removeAll(creds);&lt;br /&gt;
   return true;&lt;br /&gt;
}  else {&lt;br /&gt;
           return false;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Articles = &lt;br /&gt;
* JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
* Pistoia, Marco, Nagaratnam, Nataraj, Koved, Larry, Nadalin, Anthony, &amp;quot;Enterprise Java Security&amp;quot;, Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
= Related Cheat Sheets = &lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129952</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129952"/>
				<updated>2012-05-16T15:40:51Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameCallback nameCB = new NameCallback(&amp;quot;Username&amp;quot;);&lt;br /&gt;
PasswordCallback passwordCB = new PasswordCallback (&amp;quot;Password&amp;quot;, false);&lt;br /&gt;
Callback[] callbacks = new Callback[] { nameCB, passwordCB };&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  Below, is an example commit () method where first, for each group the &lt;br /&gt;
authenticated user has membership in, the group name is added to the subject. Then subject’s username is added to their public credentials.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding any principals and a public credentials to a subject:                              :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public boolean commit() {&lt;br /&gt;
  If (userAuthenticated) {&lt;br /&gt;
     Set groups = UserService.findGroups (username);&lt;br /&gt;
     for (Iterator itr = groups.iterator (); itr.hasNext (); {&lt;br /&gt;
        String groupName = (String) itr.next ();&lt;br /&gt;
        UserGroupPrincipal group = new UserGroupPrincipal (GroupName);&lt;br /&gt;
        subject.getPrincipals ().add (group);  &lt;br /&gt;
     }&lt;br /&gt;
     UsernameCredential cred = new UsernameCredential (username);&lt;br /&gt;
     subject.getPublicCredentials().add (cred);&lt;br /&gt;
  }&lt;br /&gt;
}                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** Set principalSet = subject.getPrincipals ();&lt;br /&gt;
** principalSet.remove (PR1);&lt;br /&gt;
** subject.getPublicCredentials().remove(publicCredential);&lt;br /&gt;
** subject.getPrivateCredentials().remove(privateCredential);&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Articles = &lt;br /&gt;
* JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
* Pistoia, Marco, Nagaratnam, Nataraj, Koved, Larry, Nadalin, Anthony, &amp;quot;Enterprise Java Security&amp;quot;, Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
= Related Cheat Sheets = &lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129831</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129831"/>
				<updated>2012-05-14T15:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Callback[] callbacks = new Callback [2];&lt;br /&gt;
callbacks[0] = new NameCallback (“name”); &lt;br /&gt;
callbacks[1] = new PasswordCallback (“password”, false);&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  &lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding a principal and two credentials to a subject:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private Principal PR1 = new DemoPrincipal(“Quarterback”);&lt;br /&gt;
private String publicCredential = “Aikman”;&lt;br /&gt;
private String privateCredential = “Secret database accessible only password”;&lt;br /&gt;
Set principalSet = subject.getPrincipals();&lt;br /&gt;
principalSet.add (PR1);&lt;br /&gt;
subject.getPublicCredentials().add(publicCredential);&lt;br /&gt;
subject.getPrivateCredentials().add(privateCredential); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** Set principalSet = subject.getPrincipals ();&lt;br /&gt;
** principalSet.remove (PR1);&lt;br /&gt;
** subject.getPublicCredentials().remove(publicCredential);&lt;br /&gt;
** subject.getPrivateCredentials().remove(privateCredential);&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References = &lt;br /&gt;
  [1] JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
  [2] Pistoia, Marco, Nagaratnam, Nataraj, Koved, Larry, Nadalin, Anthony, &amp;quot;Enterprise Java Security&amp;quot;, Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129830</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129830"/>
				<updated>2012-05-14T15:55:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Callback[] callbacks = new Callback [2];&lt;br /&gt;
callbacks[0] = new NameCallback (“name”); &lt;br /&gt;
callbacks[1] = new PasswordCallback (“password”, false);&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  &lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding a principal and two credentials to a subject:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private Principal PR1 = new DemoPrincipal(“Quarterback”);&lt;br /&gt;
private String publicCredential = “Aikman”;&lt;br /&gt;
private String privateCredential = “Secret database accessible only password”;&lt;br /&gt;
Set principalSet = subject.getPrincipals();&lt;br /&gt;
principalSet.add (PR1);&lt;br /&gt;
subject.getPublicCredentials().add(publicCredential);&lt;br /&gt;
subject.getPrivateCredentials().add(privateCredential); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** Set principalSet = subject.getPrincipals ();&lt;br /&gt;
** principalSet.remove (PR1);&lt;br /&gt;
** subject.getPublicCredentials().remove(publicCredential);&lt;br /&gt;
** subject.getPrivateCredentials().remove(privateCredential);&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References = &lt;br /&gt;
  [1] JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
  [2] Pistoia, Marco, Nagaratnam Nataraj, Koved, Larry, Nadalin, &amp;quot;Enterprise Java Security&amp;quot;, Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129825</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129825"/>
				<updated>2012-05-14T15:50:46Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Callback[] callbacks = new Callback [2];&lt;br /&gt;
callbacks[0] = new NameCallback (“name”); &lt;br /&gt;
callbacks[1] = new PasswordCallback (“password”, false);&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  &lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding a principal and two credentials to a subject:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private Principal PR1 = new DemoPrincipal(“Quarterback”);&lt;br /&gt;
private String publicCredential = “Aikman”;&lt;br /&gt;
private String privateCredential = “Secret database accessible only password”;&lt;br /&gt;
Set principalSet = subject.getPrincipals();&lt;br /&gt;
principalSet.add (PR1);&lt;br /&gt;
subject.getPublicCredentials().add(publicCredential);&lt;br /&gt;
subject.getPrivateCredentials().add(privateCredential); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** Set principalSet = subject.getPrincipals ();&lt;br /&gt;
** principalSet.remove (PR1);&lt;br /&gt;
** subject.getPublicCredentials().remove(publicCredential);&lt;br /&gt;
** subject.getPrivateCredentials().remove(privateCredential);&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References = &lt;br /&gt;
  [1] JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
  [2] Pistoia, Marco, Nagaratnam, Koved, Larry, Nadalin, &amp;quot;Enterprise Java Security&amp;quot;, Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129797</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129797"/>
				<updated>2012-05-14T15:13:56Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Callback[] callbacks = new Callback [2];&lt;br /&gt;
callbacks[0] = new NameCallback (“name”); &lt;br /&gt;
callbacks[1] = new PasswordCallback (“password”, false);&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  &lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding a principal and two credentials to a subject:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private Principal PR1 = new DemoPrincipal(“Quarterback”);&lt;br /&gt;
private String publicCredential = “Aikman”;&lt;br /&gt;
private String privateCredential = “Secret database accessible only password”;&lt;br /&gt;
Set principalSet = subject.getPrincipals();&lt;br /&gt;
principalSet.add (PR1);&lt;br /&gt;
subject.getPublicCredentials().add(publicCredential);&lt;br /&gt;
subject.getPrivateCredentials().add(privateCredential); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** Set principalSet = subject.getPrincipals ();&lt;br /&gt;
** principalSet.remove (PR1);&lt;br /&gt;
** subject.getPublicCredentials().remove(publicCredential);&lt;br /&gt;
** subject.getPrivateCredentials().remove(privateCredential);&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References = &lt;br /&gt;
  JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129796</id>
		<title>JAAS Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=JAAS_Cheat_Sheet&amp;diff=129796"/>
				<updated>2012-05-14T15:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
== What is JAAS authentication ==&lt;br /&gt;
&lt;br /&gt;
The process of verifying the identity of a user or another system is authentication. JAAS, as an authentication framework manages the authenticated user’s identity and credentials from login to logout. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JAAS authentication lifecycle:&lt;br /&gt;
# Create LoginContext&lt;br /&gt;
# Read the configuration file for one or more LoginModules to initialize&lt;br /&gt;
# Call LoginContext.initialize () for each LoginModule to initialize.&lt;br /&gt;
# Call LoginContext.login () for each LoginModule&lt;br /&gt;
# If login successful then call LoginContext.commit () else call LoginContext.abort ()&lt;br /&gt;
&lt;br /&gt;
== Configuration file  ==&lt;br /&gt;
The JAAS configuration file contains a LoginModule stanza for each LoginModule available for logging on to the application.  &lt;br /&gt;
&lt;br /&gt;
A stanza from a JAAS configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Branches&lt;br /&gt;
{&lt;br /&gt;
     USNavy.AppLoginModule required&lt;br /&gt;
     debug=true&lt;br /&gt;
     succeeded=true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;                 &lt;br /&gt;
&lt;br /&gt;
Note the placement of the semicolons, terminating both LoginModule entries and stanzas.  The word required indicates the LoginContext’s login () method must be successful when logging in the user.    The LoginModule-specific values debug and succeeded are passed to the LoginModule.  They are defined by the LoginModule and their usage is managed inside the LoginModule.  Note, Options are Configured using key-value pairing such as debug=&amp;quot;true&amp;quot; and the key and value should be separated by a 'equals' sign.&lt;br /&gt;
&lt;br /&gt;
==Main.java (The client)==&lt;br /&gt;
* Execution syntax&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Java –Djava.security.auth.login.config==packageName/packageName.config &lt;br /&gt;
     packageName.Main Stanza1&lt;br /&gt;
Where:&lt;br /&gt;
packageName is the directory containing the config file.&lt;br /&gt;
packageName.config specifies the config file in the Java package, packageName&lt;br /&gt;
packageName.Main specifies Main.java in the Java package, packageName                                       &lt;br /&gt;
Stanza1 is the name of the stanza Main () should read from the config file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When executed, the 1st command line argument is the stanza from the config file. The Stanza names the LoginModule to be used.  The 2nd argument is the CallbackHandler.&lt;br /&gt;
* Create a new LoginContext with the arguments passed to Main.java.    &lt;br /&gt;
** loginContext = new LoginContext (args[0], new AppCallbackHandler ());&lt;br /&gt;
* Call the LoginContext.Login Module&lt;br /&gt;
**  loginContext.login ();&lt;br /&gt;
* The value in succeeded Option is returned from loginContext.login ()&lt;br /&gt;
* If the login was successful, a subject was created.&lt;br /&gt;
&lt;br /&gt;
==LoginModule.java==&lt;br /&gt;
A LoginModule must have the following authentication methods:&lt;br /&gt;
* initialize ()&lt;br /&gt;
* login ()&lt;br /&gt;
* commit ()&lt;br /&gt;
* abort ()&lt;br /&gt;
* logout () &lt;br /&gt;
&lt;br /&gt;
===initialize ()===&lt;br /&gt;
&lt;br /&gt;
In Main (), after the LoginContext reads the correct stanza from the config file, the LoginContext instantiates the LoginModule specified in the stanza.&lt;br /&gt;
&lt;br /&gt;
* initialize () methods signature: &lt;br /&gt;
** Public void initialize (Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) &lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** this.subject = subject;&lt;br /&gt;
** this.callbackHandler = callbackHandler;&lt;br /&gt;
**  this.sharedState = sharedState;&lt;br /&gt;
** this.options = options;  &lt;br /&gt;
* What the initialize () method does:&lt;br /&gt;
** Builds a subject object of the Subject class contingent on a successful login ()&lt;br /&gt;
** Sets the CallbackHandler which interacts with the user to gather login information&lt;br /&gt;
** If a LoginContext specifies 2 or more LoginModules, which is legal, they can share information via a sharedState map&lt;br /&gt;
** Saves state information such as debug and succeeded in an options Map&lt;br /&gt;
&lt;br /&gt;
===login ()===&lt;br /&gt;
&lt;br /&gt;
Captures user supplied login information.  The code snippet below declares an array of two callback objects which, when passed to the callbackHandler.handle method in the callbackHandler.java program, will be loaded with a user name and password  provided interactively by the user. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Callback[] callbacks = new Callback [2];&lt;br /&gt;
callbacks[0] = new NameCallback (“name”); &lt;br /&gt;
callbacks[1] = new PasswordCallback (“password”, false);&lt;br /&gt;
callbackHandler.handle (callbacks);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Authenticates the user&lt;br /&gt;
* Retrieves the user supplied information from the callback objects:&lt;br /&gt;
** String ID = nameCallback.getName ();&lt;br /&gt;
** char[] tempPW = passwordCallback.getPassword ();&lt;br /&gt;
* Compare name and tempPW to values stored in a repository such as LDAP&lt;br /&gt;
* Set the value of the variable succeeded and return to Main ()&lt;br /&gt;
&lt;br /&gt;
===commit ()===&lt;br /&gt;
&lt;br /&gt;
Once the users credentials are successfully verified during login (), the JAAS authentication framework associates the credentials, as needed, with the subject. There are two types of credentials, public and private.  Public credentials include public keys.  Private credentials include passwords and public keys. Principals (i.e. Identities the subject has other than their login name) such as employee number or membership ID in a user group are added to the subject.  &lt;br /&gt;
&lt;br /&gt;
Code snippet setting then adding a principal and two credentials to a subject:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private Principal PR1 = new DemoPrincipal(“Quarterback”);&lt;br /&gt;
private String publicCredential = “Aikman”;&lt;br /&gt;
private String privateCredential = “Secret database accessible only password”;&lt;br /&gt;
Set principalSet = subject.getPrincipals();&lt;br /&gt;
principalSet.add (PR1);&lt;br /&gt;
subject.getPublicCredentials().add(publicCredential);&lt;br /&gt;
subject.getPrivateCredentials().add(privateCredential); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===abort ()===&lt;br /&gt;
&lt;br /&gt;
The abort () method is called when authentication doesn’t succeed.  Before the abort () method exits the LoginModule, care should be taken to reset state including the user name and password input fields.&lt;br /&gt;
&lt;br /&gt;
===logout ()===&lt;br /&gt;
* The arguments above should be saved as follows:&lt;br /&gt;
** Set principalSet = subject.getPrincipals ();&lt;br /&gt;
** principalSet.remove (PR1);&lt;br /&gt;
** subject.getPublicCredentials().remove(publicCredential);&lt;br /&gt;
** subject.getPrivateCredentials().remove(privateCredential);&lt;br /&gt;
&lt;br /&gt;
== CallbackHandler.java==&lt;br /&gt;
&lt;br /&gt;
The callbackHandler is in a source (.java) file separate from any single LoginModule so that it can service a multitude of LoginModules with differing callback objects.&lt;br /&gt;
&lt;br /&gt;
* Creates instance of the CallbackHandler class and has only one method, handle ().&lt;br /&gt;
* A CallbackHandler servicing a LoginModule requiring username &amp;amp; password to login:  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void handle(Callback[] callbacks) { &lt;br /&gt;
    for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;
        Callback callback = callbacks[i];&lt;br /&gt;
        if (callback instanceof NameCallback) {&lt;br /&gt;
            NameCallback nameCallBack = (NameCallback) callback; &lt;br /&gt;
            nameCallBack.setName(username); &lt;br /&gt;
    }  else if (callback instanceof PasswordCallback) {&lt;br /&gt;
            PasswordCallback passwordCallBack = (PasswordCallback) callback;&lt;br /&gt;
            passwordCallBack.setPassword(password.toCharArray());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References = &lt;br /&gt;
JAAS in Action, Michael Coté, posted on September 27, 2009, URL as 5/14/2012 http://jaasbook.com/&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors  =&lt;br /&gt;
&lt;br /&gt;
Dr. A.L. Gottlieb - AnthonyG [at] owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Application_7&amp;diff=107918</id>
		<title>Global Education Committee - Application 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Application_7&amp;diff=107918"/>
				<updated>2011-03-30T14:49:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Coordinator/facility host for N. Virginia, OWASP Presenter.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Benjamin Tomhave&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|OWASP NoVA Program Committee, OWASP GCC member (pending final board approval)&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Tony's contributions to OWASP NoVA have been outstanding! He has helped host several chapter meetings, has presented in the past, will be presenting again in April 2011, and is overall a strong supporter of OWASP Education initiatives.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Stan Wisseman&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Coordinator/facility host for N. Virginia&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|I endorse Tony Gottlieb for the OWASP Global Education Committee.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Dan Cornell&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|San Antonio Chapter Leader, Global Membership Committee Chair&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Every time I have been to the OWASP NoVA chapter Tony has been an active and valuable contributor. The Global Education Committee would benefit from his perspective and enthusiasm.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;| John Steven&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;| NoVA Chapter Lead&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;| Hell hath no fury like Tony on a mission to educate.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Rod Wetsel&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;| OWASP member.&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|I endorse Tony Gottlieb for the OWASP Global Education Committee.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Tony_Gottlieb&amp;diff=107742</id>
		<title>User:Tony Gottlieb</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Tony_Gottlieb&amp;diff=107742"/>
				<updated>2011-03-27T17:24:15Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'1.  Problems with secure software development training&lt;br /&gt;
     A.   No place for developers to get trained where a training path has been laid out&lt;br /&gt;
     B.   Classes ranging from 2 to 3 days don’t cover enough material to elevate job skills  &lt;br /&gt;
     C.   Some technologies such as Java require a more robust security curriculum &lt;br /&gt;
     D.   Educators are barred from teaching secure software development courses which&lt;br /&gt;
            constrains the growth of education services and the number of trained people.  &lt;br /&gt;
     E.   Colleges don’t integrate secure development into their curricula despite teaching &lt;br /&gt;
            architectural illustration using techniques such as UML, data flow, and use cases. &lt;br /&gt;
     F.   Lean or light secure software development should be considered an option when&lt;br /&gt;
           risk analysis permits, not as a way to cajole developers into dipping their toes into&lt;br /&gt;
           something they would like to avoid.&lt;br /&gt;
     G.  Despite the existence of attack enumeration services such as CERT and Symantec, &lt;br /&gt;
           the software development communities at large are not as a matter of course acting&lt;br /&gt;
           to mitigate these threats.&lt;br /&gt;
&lt;br /&gt;
2.  OWASP Global Education Committee Goals &lt;br /&gt;
     A.   Provide an accessible entrance into secure development for individual developers&lt;br /&gt;
     B.   Provide a path for CIO’s to put their development organizations on&lt;br /&gt;
     C.   Assimilate functional development into secure development (resistance is futile) &lt;br /&gt;
     D.   Stimulate demand for the “Professional Developer”.&lt;br /&gt;
     E.   Offer secure software Ed.  Services to young people who wish to begin programming through &lt;br /&gt;
            OWASP’s Young Developer program.&lt;br /&gt;
&lt;br /&gt;
3.  Specific Projects to satisfy goals&lt;br /&gt;
     A.   Establish secure lifecycle curriculum for training companies and universities&lt;br /&gt;
     B.   Curriculum for how to migrate software development personnel from insecure to secure.&lt;br /&gt;
     C.   Process management / management reporting relative to software security&lt;br /&gt;
     D.   Curriculum for performing Risk Assessment for software&lt;br /&gt;
     E.   Work with marketing and SME community to establish a “Professional Developer”&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Application_7&amp;diff=107601</id>
		<title>Global Education Committee - Application 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Application_7&amp;diff=107601"/>
				<updated>2011-03-25T15:08:35Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Coordinator/facility host for N. Virginia, OWASP Presenter.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Benjamin Tomhave&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|OWASP NoVA Program Committee, OWASP GCC member (pending final board approval)&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Tony's contributions to OWASP NoVA have been outstanding! He has helped host several chapter meetings, has presented in the past, will be presenting again in April 2011, and is overall a strong supporter of OWASP Education initiatives.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Stan Wisseman&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Coordinator/facility host for N. Virginia&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|I endorse Tony Gottlieb for the OWASP Global Education Committee.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Dan Cornell&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|San Antonio Chapter Leader, Global Membership Committee Chair&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Every time I have been to the OWASP NoVA chapter Tony has been an active and valuable contributor. The Global Education Committee would benefit from his perspective and enthusiasm.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;| John Steven&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;| NoVA Chapter Lead&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;| Hell hath no fury like Tony on a mission to educate.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Tony_Gottlieb&amp;diff=107347</id>
		<title>User:Tony Gottlieb</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Tony_Gottlieb&amp;diff=107347"/>
				<updated>2011-03-22T20:29:39Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: Tony Gottlieb's plan for the OWASP Global Education Committee&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'1.  Problems with secure software development &lt;br /&gt;
     A.   No place for developers to get trained where a training path has been laid out&lt;br /&gt;
     B.   Classes ranging from 2 to 3 days don’t cover enough material to elevate job skills  &lt;br /&gt;
     C.   Some technologies such as Java require a more robust security curriculum &lt;br /&gt;
     D.   Educators are barred from teaching secure software development courses which&lt;br /&gt;
            constrains the growth of education services and the number of trained people.  &lt;br /&gt;
     E.   Colleges don’t integrate secure development into their curricula despite teaching &lt;br /&gt;
            architectural illustration using techniques such as UML, data flow, and use cases. &lt;br /&gt;
     F.   Lean or light secure software development should be considered an option when&lt;br /&gt;
           risk analysis permits, not as a way to cajole developers into dipping their toes into&lt;br /&gt;
           something they would like to avoid.&lt;br /&gt;
     G.  Despite the existence of attack enumeration services such as CERT and Symantec, &lt;br /&gt;
           the software development communities at large are not as a matter of course acting&lt;br /&gt;
           to mitigate these threats.&lt;br /&gt;
&lt;br /&gt;
2.  OWASP Global Education Committee Goals &lt;br /&gt;
     A.   Provide an accessible entrance into secure development for individual developers&lt;br /&gt;
     B.   Provide a path for CIO’s to put their development organizations on&lt;br /&gt;
     C.   Assimilate functional development into secure development (resistance is futile) &lt;br /&gt;
     D.   Stimulate demand for the “Professional Developer”.&lt;br /&gt;
     E.   Offer secure software Ed.  Services to young people who wish to begin programming through &lt;br /&gt;
            OWASP’s Young Developer program.&lt;br /&gt;
&lt;br /&gt;
3.  Specific Projects to satisfy goals&lt;br /&gt;
     A.   Establish secure lifecycle curriculum for training companies and universities&lt;br /&gt;
     B.   Curriculum for how to migrate software development personnel from insecure to secure.&lt;br /&gt;
     C.   Process management / management reporting relative to software security&lt;br /&gt;
     D.   Curriculum for performing Risk Assessment for software&lt;br /&gt;
     E.   Work with marketing and SME community to establish a “Professional Developer”&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106980</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106980"/>
				<updated>2011-03-16T17:33:10Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Coordinator/facility host for N. Virginia, OWASP Presenter.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Dan Cornell&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Benjamin Tomhave&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106976</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106976"/>
				<updated>2011-03-16T14:55:52Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Coordinator/facility host for N. Virginia, OWASP Presenter.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Kate Hartmann&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Thomas Brennan&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Dan Cornell&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Benjamin Tomhave&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106837</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106837"/>
				<updated>2011-03-15T12:31:05Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Coordinator/facility host for N. Virginia, OWASP Presenter.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Kate Hartmann&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Thomas Brennan&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Dan Cornell&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106836</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106836"/>
				<updated>2011-03-15T12:29:16Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Coordinator/facility host for N. Virginia, Presenter.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Kate Hartmann&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Thomas Brennan&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Dan Cornell&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106835</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106835"/>
				<updated>2011-03-15T12:25:27Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|List here.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Kate Hartmann&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Thomas Brennan&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Dan Cornell&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106826</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106826"/>
				<updated>2011-03-15T01:50:20Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|List here.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Kate Hartmann&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|Thomas Brennan&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106825</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106825"/>
				<updated>2011-03-15T01:48:41Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|List here.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''Kate Hartmann'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''Thomas Brennan'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106824</id>
		<title>Global Education Committee - Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Global_Education_Committee_-_Template&amp;diff=106824"/>
				<updated>2011-03-15T01:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;Tony Gottlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[How to Join a Committee|Click here to return to 'How to Join a Committee' page]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE APPLICATION FORM''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;|'''Applicant's Name'''&lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Dr. A.L. Gottlieb.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Current and past OWASP Roles''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|List here.&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:25%; background:#7B8ABD&amp;quot; align=&amp;quot;center&amp;quot;| '''Committee Applying for''' &lt;br /&gt;
 | colspan=&amp;quot;1&amp;quot; style=&amp;quot;width:85%; background:#cccccc&amp;quot; align=&amp;quot;left&amp;quot;|Global Education Committee&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Please be aware that for an application to be considered by the board, '''you MUST have 5 recommendations'''.  &lt;br /&gt;
An incomplete application will not be considered for vote.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot; border=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4058A0; color:white&amp;quot;|&amp;lt;font color=&amp;quot;white&amp;quot;&amp;gt;'''COMMITTEE RECOMMENDATIONS''' &lt;br /&gt;
 |- &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:white; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Who Recommends/Name''' &lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Role in OWASP'''&lt;br /&gt;
 ! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#7B8ABD; color:white&amp;quot;|&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;'''Recommendation Content''' &lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''3'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |-&lt;br /&gt;
 | style=&amp;quot;width:3%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:20%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 | style=&amp;quot;width:57%; background:#cccccc&amp;quot; align=&amp;quot;center&amp;quot;|&lt;br /&gt;
 |}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Tony Gottlieb</name></author>	</entry>

	</feed>