All,

I thought there was a BZ issue for this, but I didn't find one. It's
been suggested (and I agree completely) that an application ought to be
able to fetch the CredentialHandler for the context's realm so that it
could mutate user credentials in the same way that the Realm expects to
do. That allows applications to change user's passwords, for instance.

So I think I've identified where to put this: around
StandardContext.java:5131 (in Tomcat 9/trunk). But I have a few
questions about it.

It occurs to me that we won't want applications to change the
CredentialHandler in any way -- such as changing the salt length for a
DigestCredentialHandler, etc., so I think it makes sense to wrap the
CredentialHandler in a "safe" class that doesn't allow access to the
real CredentialHandler. That's fairly easy to do.

Also, we probably want the CredentialHandler in the application scope to
always be in sync with the CredentialHandler actually being used by the
Realm. Realm has a setCredentialHandler(CredentialHandler) method, so
theoretically, the CH could change at any time.

Also, the Realm could theoretically change at any time as well.

So, this "safe" wrapper could just call
getRealmInternal().getCredentialHandler().underlyingMethod and always
use that. But, ContainerBase.getRealmInternal uses a lock, and I'm not
sure how expensive that is. Is there any concern over performance, here?

Another option would be to override setRealm and capture the Realm,
there... except that StandardContext never calls setRealm directly.
(Presumably, it's called by another component when constructing the
StandardContext, but then why does StandardContext.startInternal call
getRealmInternal().start() when ContainerBase.setRealm already calls
Realm.start()?)

I'd appreciate some thoughts on the above; I don't want to have to
commit 12 patches for this due to misunderstandings about what's going
on with StandardContext.

Thanks,
-chris

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to