[prev in list] [next in list] [prev in thread] [next in thread]
List: tomcat-user
Subject: RE: Accessing Credential handler inside the web application always returns null
From: Усман <usmanov () ie
Date: 2023-10-31 17:53:14
Message-ID: AM0PR03MB614670BD52F205B3E277727FA3A0A () AM0PR03MB6146 ! eurprd03 ! prod ! outlook ! com
[Download RAW message or body]
[Attachment #2 (text/plain)]
Hi everyone! CredentialHandler became not null, as soon as I transferred Realm \
definition from server.xml to context.xml(after checking the source code) .I've been \
able to see the new pbkdf2 version of the given clear text password even with old \
9.0.64 version. I was wondering is the necessity to have realm defined inside \
context. xml for accessing CredentialHandler a design decision or a possible bug in \
tomcat itself?. It wasn't mentioned in tomcat documentation. Perhaps it should be \
added in the docs. ________________________________
От: Усманов Азат Анварович <usmanov@ieml.ru>
Отправлено: 30 октября 2023 г. 20:25
Кому: users@tomcat.apache.org <users@tomcat.apache.org>
Тема: RE: Accessing Credential handler inside the web application always returns \
null
I did recheck using 9.0.82, unfortunately nothing has changed CredentialHandler is \
still null ________________________________
От: Christopher Schultz <chris@christopherschultz.net>
Отправлено: 30 октября 2023 г. 18:52
Кому: Tomcat Users List <users@tomcat.apache.org>; Усманов Азат \
Анварович <usmanov@ieml.ru> Тема: Re: Accessing Credential handler \
inside the web application always returns null
Азат,
On 10/29/23 20:45, Усманов Азат Анварович wrote:
> Hi everyone!I'm trying to test CredentialHandeler functionality on our test \
> server (Tomcat 9.0.64) inside the web-app I Our realm is defined as follows( \
> excerpt from server.xml )
> <Realm className="org.apache.catalina.realm.DataSourceRealm" \
> dataSourceName="jdbc/IEML_DB" roleNameCol="RoleName" userCredCol="PWD" \
> userNameCol="UserName" userRoleTable="educ.ad_UserRoles" userTable="educ.ad_Users"> \
> <CredentialHandler className="org.apache.catalina.realm.NestedCredentialHandler"> \
> <CredentialHandler \
> className="org.apache.catalina.realm.SecretKeyCredentialHandler"/> \
> <CredentialHandler \
> className="org.apache.catalina.realm.MessageDigestCredentialHandler" \
> algorithm="MD5" /> </CredentialHandler>
> </Realm>
> Currently pwd column defined as Oracle (RAW) only stores md5 hashes, I was hoping \
> to upgrade to PBKDF2 using tomcat ?so here is the relevant part basic login \
> controller code (LoginCheckServlet) LoginCheckServlet
>
> protected void doGet(HttpServletRequest request, \
> HttpServletResponse response) throws ServletException, IOException \
> {
> ...
> String userName = request.getParameter("j_username");
> String password = \
> request.getParameter("j_password"); HttpSession session = \
> request.getSession();
> UserRecord user=... //load data \
> from db if \
> (user.checkCorrectPassword(password,session.getServletContext())) { \
> CredentialHandler \
> cr=Security.getCredentialHandler(getServletContext()); \
> System.out.println(cr.mutate(password));// \
> hoping to see my password displayed as pbkdf2 hash
> .....
> }
>
> Security.getCredentialHandler
>
> public static CredentialHandler getCredentialHandler(final \
> ServletContext context) { \
> System.out.println("context"+context) ;// \
> prints contextorg.apache.catalina.core.ApplicationContextFacade@33f1f7c7 \
> System.out.println("context \
> vs"+context.getMajorVersion()); // prints 4 \
> System.out.println("ATRIB"+context.getAttribute(Globals.CREDENTIAL_HANDLER));//always \
> prints ATRIB null return (CredentialHandler) \
> context.getAttribute(Globals.CREDENTIAL_HANDLER); \
> }
Your code and configuration looks reasonable to me.
> So basically it always return null when trying to access
> CredentialHandler attribute inside Security.getCredentialHandler
> method,Any idea why it might be the case ?
Are you able to re-try with Tomcat 9.0.70 or later? There is a
changelog[1] entry which may be important for you:
"
Fix: Improve the behavior of the credential handler attribute that is
set in the Servlet context so that it actually reflects what is used
during authentication. (remm)
"
There was a problem specifically with the NestedCredentialHandler, I
think, which was not working as expected. 9.0.70 includes a fix that
should improve things for you.
-chris
[1]
https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.70_(remm)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic