Actually, you need to make sure that container-managed authentication
is enabled in JSPWiki. You can do this by **uncommenting** the
security constraints in web.xml. That is the opposite of what you said
you did (you said you commented them out).
Here's the methodology I'd use to solve the problem.
1. Turn on container-managed auth in JSPWiki by uncommenting the
security constraints.
2. Once you have turned on container-managed auth in JSPWiki, you need
to make sure the container realm itself is working properly, You might
want to use a very simple container realm first (for example, the
memory realm that consults conf/tomcat-users.xml), instead of your
custom JAAS realm. When you log via the container's realm, you should
be able to see this principal propagated to JSPWiki.
SecurityConfig.jsp should confirm that container auth works.
3. After verifying that 1) basic container authentication works and 2)
JSPWiki recognizes the credentials, next try using Tomcat's JAASRealm
instead, using your custom JAAS authentication module.
If this doesn't work, you should try using one of Tomcat's supplied
JAAS LoginModules instead to verify that it really is with your
module. If you've determined that the problem is with your custom JAAS
LoginModule, start Tomcat via "$CATALINA_HOME/bin/catalina.sh jpda
start," fire up Eclipse and attach a debugger to the module. You'll
find the problem soon enough.
4. Finally, once you get done with that, then you can turn on the SSO
valve.
Andrew
On Jun 24, 2008, at 2:06 PM, Ramya KGrama wrote:
Hello,
I have been trying to implement JAAS login with JSPWiki on Tomcat.
We are
using JSPWiki 2.6.2 with Tomcat5.5
We have an existing web application (mainApp) that does not use JAAS.
However, we would like to use JSPWiki as a portal with a single-sign-
on
feature -
meaning when the user logs into our mainApp the user clicks on a
link to
JSPWiki application. At this point, we would like to automatically
authenticate
the user with appropriate roles and permissions and log him into
JSPWiki.
To acheive this, I have done the following but doesn't seem to work:
1. Tomcat server.xml:
a. I've added a <Context> tag for JSPWiki application and <Context>
tag for
mainApp with crossContext=true in both.
b. Added a <Realm> entry as such:
<Realm
className="org.apache.catalina.realm.JAASRealm"
appName="JSPWiki-custom"
userClassNames="com.ecyrd.jspwiki.user.DefaultUserProfile"
roleClassNames="com.ecyrd.jspwiki.auth.authorize.Role"
debug="99"/>
c. Enabled SingleSignOn by adding the <Valve> tag within the <Host>
tag as
such:
<Valve
className="org.apache.catalina.authenticator.SingleSignOn"
/>
2. Placed my login module (JAASLoginModule's) jar file
JAASLoginLM.jar in
%TOMCAT_HOME%/common/lib folder.
In the JAASLoginModule itself I am using HttpRequestCallback just
like
the SiteMinderLoginModule example:
http://www.jspwiki.org/wiki/Security2.3WishList
3. I added the entries for the login module in jspwiki.policy
towards the
end as such:
// grant LoginModule permissions
grant codebase "file:${catalina.home}/common/lib/JaasLoginLM.jar" {
permission javax.security.auth.AuthPermission "modifyPrincipals";
};
grant codebase "file:${catalina.home}/common/lib/JaasLoginAzn.jar" {
permission javax.security.auth.AuthPermission
"createLoginContext.jaaslogin";
permission javax.security.auth.AuthPermission "doAsPrivileged";
};
4. In jspwiki.properties file I enabled JAAS as such:
jspwiki.security = jaas
5. On tomcat startup I specify the policy file and jaas file
settings as
such:
-Djava.security.auth.login.config==C:\Program Files\Apache Software
Foundation\Tomcat 5.5\webapps\JSPWiki\WEB-INF\jspwiki.jaas
-Djava.security.policy==C:\Program Files\Apache Software Foundation
\Tomcat
5.5\webapps\JSPWiki\WEB-INF\jspwiki.policy
6. Disabled container managed authentication in
<TOMCAT_HOME>/webapps/web.xml by commenting the <security-constraint>
section and
in jspwiki.properties set jspwiki.userdatabase.isSharedWithContainer
= false
Now, I restart the server and launch the mainApp and login. After
logging
in, I click on the link to JSPWiki (http://<hostname:port>/JSPWiki/
Wiki.jsp)
-
which takes me to the main page as an "Anonymous" user.
I dont see JAAS being used. The logs do not show any debug messages
from my
JAASLoginModule. Instead it says -
"Checking JAAS configuration...JAAS already configured by some other
application (leaving it alone...)"
My security configuration verifier (SecurityConfig.jsp) says that it
found
jspwiki.jaas. It doesn't show any errors - except that it says
"We found some errors with your configuration: Policy file does not
have a
keystore... at least not one that we can locate."
Do I need jspwiki.jks file and an entry in policy file - keystore
jspwiki.jks? - Currently I DO NOT have the keystore file.
Do I need to programmatically create the LoginContext and call the
login()
method in the JSP?
My understanding was that all that would happen automatically in the
background.
I am sure I'm missing something.
Your help is greatly appreciated!
Thanks.