On Tue, 30 Jan 2024 16:45:34 GMT, Weijun Wang <wei...@openjdk.org> wrote:

>> OK - things seem to be a bit convoluted here and some pieces might be 
>> missing. I suspect that what needs to be done is more complicated:
>> 
>> `RMIConnectionImpl` sets up an ACC and calls doPrivileged with that ACC, on 
>> the assumption that the subject is tied to the ACC and it can be retrieved 
>> down the road from the ACC. `RMIConnectionImpl` has the subject, and the 
>> delegation subject too. 
>> 
>> So for `Subject::current` to work here, shouldn't 
>> `RMIConnectionImpl::doPrivilegedOperation` use `Subject::callAs` when the 
>> security manager is disallowed?
>> 
>> It seems that when `Subject::current` is used, some analysis should be done 
>> to verify where the Subject is supposed to come from - that is - how the 
>> caller is expecting the subject to reach the callee.
>> 
>> Typically, JMX doesn't use `Subject::doAs` but ties a `Subject` to an 
>> `AccessControlContext` and uses `doPrivileged` instead.
>
> This is complicated.
> 
> The benefit of `current()` is that it is always equivalent to 
> `getSubject(AccessController.getContext())`  *as long as the latter works*. 
> However, in this case, when a security manager is not allowed, the latter 
> DOES NOT work but `current()` still works.
> 
> I'll revert the change. Before finding an alternative solution for 
> `JMXSubjectDomainCombiner`, I assume this code only works when a security 
> manager is allowed. It's better to throw an UOE instead of returning null.
> 
> I'm not sure of the other `getSubject` call (below), but I'll revert the 
> change as all.

A new commit is push. The change in this class is reverted. I'm still 
investigating the other one.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/17472#discussion_r1471906073

Reply via email to