I've filed https://bugs.openjdk.org/browse/JDK-8327818.

But first, in order to make sure the debug option in Krb5LoginModule and other 
JGSS/krb5-related system properties still work, there needs a way to 
instantiate a Debug object without providing the `-Djava.security.debug` system 
property.

For example, in Krb5LoginModule, currently we have

       boolean debug = "true".equalsIgnoreCase((String)options.get("debug"));

And I'm thinking of

       Debug debug = Debug.of("krb5loginmodule", (String)options.get("debug"));

Hopefully this .of() method can automatically support thread info or timestamp 
if the "debug" option has it.

Also, I am wondering if even without he "debug" option, user can set 
-Djava.security.debug=krb5loginmodule to show debug info there. However, some 
krb5 debug info might contain sensitive information like passwords or secret 
keys, so maybe there is a little danger to cover them with 
`-Djava.security.debug=all`.

Thanks,
Weijun


> On Mar 11, 2024, at 5:43 AM, Sean Coffey <[email protected]> wrote:
> 
> 
> On 10/03/2024 16:01, Wei-Jun Wang wrote:
>> Hi Seán,
>> 
>> I know you are working on enhancing the security debug output with 
>> timestamps and thread info now. Do you think it can also cover Kerberos?
> I'd love to see Kerberos fall under the same debug implementation used by 
> other JDK security libraries. I suspect it was a standalone product a long 
> time back and had its own debug impl as a result. I'd like to see it worked 
> separate to the ongoing decorator work that's taking place via JDK-8051959. 
> The debug stack for krb5 is different and managed via a Map currently. Maybe 
> Peter could start out by moving the debug output from System.out calls to the 
> sun.security.util.Debug calls as suggested.
> 
> Using a Logger should be on the radar also. We'd have to use the 
> System.Logger interface since that's the only one guaranteed to be present in 
> the runtime. Maybe the Logger work can be done as a follow on task. I'm also 
> examining the potential for wider use of Logger in security libs. The TLS 
> javax.net.debug option already offers use of a Logger but the configuration 
> in both the calling code and backend remains a blocker to adoption IMO. (e.g. 
> no option to configure Level correctly and static backend configuration 
> options may not be set up correctly at the time logger output becomes 
> necessary to debug an issue)
> 
> regards,
> Sean.
> 
>> 
>> Traditionally, Kerberos debugging is independent of other security areas and 
>> itself is quite complicated. It includes the "debug" label in JAAS 
>> LoginModule (as Peter pointed out below) and separate system properties like 
>> sun.security.krb5.debug, sun.security.jgss.debug, 
>> sun.security.nativegss.debug, and sun.security.spnego.debug. It will be 
>> definitely great if they can enjoy the enhancement of 
>> sun.security.util.Debug.
>> 
>> BTW, Peter also mentioned a JUL logger. IIUC, our current debug messages are 
>> only sent to System.err, right?
>> 
>> Thanks,
>> Weijun
>> 
>> 
>> 
>>> On Mar 9, 2024, at 4:15 PM, Horváth Péter Gergely 
>>> <[email protected]> wrote:
>>> 
>>> Dear All,
>>> 
>>> In the past, I had issues with debug logging in Krb5LoginModule: if debug 
>>> is enabled,
>>> messages are simply written to the stdout. It is relatively hard to 
>>> correlate these
>>> messages with application logs, as there are no timestamps for 
>>> Krb5LoginModule output messages.
>>> 
>>> Imagine a server fails to service a request, due to its failure to 
>>> communicate with
>>> another Kerberized server. The failure itself will be logged properly, but 
>>> there is no way
>>> for an operator to easily find and correlate Krb5LoginModule debug output.
>>> (We are talking about servers unders heavy load)
>>> 
>>> I think debug logging in Krb5LoginModule should be improved; e.g. at least, 
>>> messages
>>> should be sent to both stdout and a JUL logger maybe?
>>> 
>>> I would be happy to implement the code change if someone is willing to 
>>> sponsor this issue.
>>> 
>>> Could someone please help here?
>>> 
>>> Thanks,
>>> Peter

Reply via email to