Owen,<br><br>I would encourage you to extend org.owasp.esapi.reference.AbstractAuthenticator and org.owasp.esapi.reference.DefaultUser, I&#39;ve done it in my code with great success.  I didn&#39;t see the need to duplicate functionality that was already there and probably do a worse job at it.<br>
<br>As far as this code goes:<br><br><div><i>HTTPSession session = ESAPI.currentRequest().</i><i>getSession(false);</i></div>
<div><i>DataUser account = DBAuthenticator.INSTANCE.</i><i>getUser((String)session.</i><i>getAttribute(&quot;username&quot;));</i></div><div><i>account.doSomething();<br></i><br>To get the first line to work, something does need to set the current request, take a look at org.owasp.esapi.filters.ESAPIFilter.<br>
The code on the second line in most cases should be more like:<br><i><br></i><i>User user = ESAPI.authenticator().login();</i><br><i>or<br>User user = ESAPI.authenticator().getCurrentUser();</i><br><br></div>Of course it depends on exactly what you are trying to accomplish, but you should reference the interfaces wherever you can instead of the implementations.<br>
<br>I hope you find this useful,<br>Brent<br><br><br><div class="gmail_quote">On Fri, Jun 25, 2010 at 7:38 PM, Owen Berger <span dir="ltr">&lt;<a href="mailto:owen.k.berger@gmail.com">owen.k.berger@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Thank very much for the response!<div><br></div><div>So to clarify, I need to: </div><div><br>
</div><div>--- Create the DatabaseAuthenticator class as a singleton,</div><div><br></div><div><div>public enum DBAuthenticator implements org.owasp.esapi.Authenticator {</div>
<div>    INSTANCE;</div></div><div><br></div><div>    /* All Authenticator methods and fields here, adapted to the application&#39;s Database Interactivity needs... */</div><div>}</div><div><br></div><div>--- Implement the User interface with my own Account object,</div>

<div><br></div><div>public class DataUser implements org.owasp.esapi.User {</div><div>    /* All User methods and fields here, along with my own Application specific methods and fields... */</div><div>}</div><div><br></div>

<div>--- Change the correct line in ESAPI.properties to the FQN of DBAuthenticator ,</div><div><br></div><div>And then, in my application, </div><div><br></div><div>HTTPSession session = ESAPI.currentRequest().getSession(false);</div>

<div>DataUser account = DBAuthenticator.INSTANCE.getUser((String)session.getAttribute(&quot;username&quot;));</div><div>account.doSomething();</div><div><br></div><div>Would that work? I&#39;m not trying to be lazy, it is just going to take me awhile to adapt all of my current code to this stuff, and I want to get the big picture beforehand.</div>

<div>Is there something I am missing about the interdepencies of the classes involved? </div><div>Also, is it okay to use the default implementations of any of the ESAPI classes, such as calls to ESAPI.validator(), or are all classes and methods merely meant to be templates?</div>

<div>I noticed that the FileBasedAuthenticator extends AbstractAuthenticator, should I be extending or implementing Authenticator?</div><div>Am I asking too many questions? :)</div><div><br></div><div>Thank you again,</div>

<div><br></div><font color="#888888"><div>Owen Berger</div></font><div><div></div><div class="h5"><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>
<div><div class="gmail_quote">On Fri, Jun 25, 2010 at 6:14 AM, Chris Schmidt <span dir="ltr">&lt;<a href="mailto:chrisisbeef@gmail.com" target="_blank">chrisisbeef@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div bgcolor="#FFFFFF"><div>Hi Owen,</div><div><br></div><div>First off, this is absolutely the right place to ask these types of questions.</div>

<div><br></div><div>Now, to answer, you will need to adapt your own class and use the file based authenticator as a &#39;template&#39; for doing so. Your adapter will need to implement the Authenticator interface that is within ESAPI. If your authenticator needs to maintain any state you will need to make it a singleton. Once you have written your adapter, all you need to do is modify the ESAPI.properties file and change the authenticator class to the FQN of your adapter. </div>

<div><br></div><div>If you have any specific questions while implementing your ESAPI, feel free to ask here and we will help you.</div><div><br></div><div>Thanks,</div><div>Chris<br><br>Sent from my iPwn</div><div><div></div>

<div><div><br>On Jun 24, 2010, at 11:01 PM, Owen Berger &lt;<a href="mailto:owen.k.berger@gmail.com" target="_blank">owen.k.berger@gmail.com</a>&gt; wrote:<br><br></div><div></div><blockquote type="cite"><div>Hello All,<div>

<br></div><div><span style="font-family: &#39;Segoe UI&#39;,Tahoma,Verdana,Arial,sans-serif; font-size: 13px; color: rgb(68, 68, 68);"><div>I am a new developer and have a question about adapting a work-in-progress website over to something that either uses the ESAPI library or its principles in most aspects of the security. Are you the right people to ask? If not, please don&#39;t read anything after this paragraph and please guide to me to the proper forum.</div>


<div><br></div><div>Thank you,</div><div><br></div><div>Owen Berger</div><div><br></div><div>My question, if this is the right place, concerns the Authenticator portion of ESAPI, which seems to be interwoven in both session and user management. My specific question is this, and sorry if it took awhile to get here - is there a Database-backed authentication mechanism out there, either by library or example? I wish to use the ESAPI authenticator, but need one that isn&#39;t defaulted to the FileBasedAuthenticator.  Has this been done, or do I simply need to adapt the FileBasedAuthenticator to a new class with my own methods that interact with the database, and call something like DBAuthenticator auth = DBAuthenticator.getInstance()? Should the authenticator then call my own account class that implements the ESAPI User Interface? I am concerned that in creating all my own stuff I will be missing something, or is that the whole point, that ESAPI is just the stepping stone? Thank you again if you read this far.</div>


</span></div>
</div></blockquote></div></div><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Esapi-user mailing list</span><br><span><a href="mailto:Esapi-user@lists.owasp.org" target="_blank">Esapi-user@lists.owasp.org</a></span><br>

<span><a href="https://lists.owasp.org/mailman/listinfo/esapi-user" target="_blank">https://lists.owasp.org/mailman/listinfo/esapi-user</a></span><br></div></blockquote></div></blockquote></div><br></div></div>
</div></div><br>_______________________________________________<br>
Esapi-user mailing list<br>
<a href="mailto:Esapi-user@lists.owasp.org">Esapi-user@lists.owasp.org</a><br>
<a href="https://lists.owasp.org/mailman/listinfo/esapi-user" target="_blank">https://lists.owasp.org/mailman/listinfo/esapi-user</a><br>
<br></blockquote></div><br>