[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFE Review : JDK-5016517 - Replace plaintext passwords by hashed passwords for out-of-the-box JM
From:       Harsha Wardhana B <harsha.wardhana.b () oracle ! com>
Date:       2017-11-13 5:38:12
Message-ID: b404f334-cd09-8cf9-ee81-ff0c6d8174ba () oracle ! com
[Download RAW message or body]

Hi Daniel,

Maintaining a warning or info log requires internationalization and 
since java.management module does not have the necessary resource 
bundles, it becomes complicated to take up that activity as a part of 
this enhancement.  Hence I have changed all the logs to debug. We can 
take up changing logging level and internationalization as a separate 
issue. I have updated the webrev in-place. Please review and let me know 
if you are okay with it.

Thanks
Harsha

On Friday 10 November 2017 07:50 PM, Daniel Fuchs wrote:
> Hi Harsha,
>
> On 10/11/2017 12:38, Harsha Wardhana B wrote:
>> Hi,
>>
>> Please find the below webrev with the following changes.
>>
>> 1. All the reads/writes into the password file are synchronized w.r.t 
>> threads within the JVM and across multiple JVM processes. It is 
>> possible that some edits made to file while the agent is running 
>> might be lost and hence added a cautionary note in 
>> jmxremote.password.template.
>
> OK - given the complexity of the alternative I believe what you
> have now should be considered "good enough". We can always revisit
> later if it proves to cause issues. Thanks for adding the note
> to the jmxremote.password.template.
>
>> 2. Added a new test-case 'testMultipleClients' that validates 
>> concurrent read/writes
>
> Thanks for doing that!
>
>>
>> 3. Added an info log when the password file is over-written.
>>
>> http://cr.openjdk.java.net/~hb/5016517/webrev.08/
>>
>> Please review the latest webrev.
>
> HashPasswordManager:
>
>  204             } catch (NoSuchAlgorithmException ex) {
>  205                 if (logger.warningOn()) {
>  206                     logger.warning("authenticate", "Unrecognized 
> hash algorithm : "
>  207                             + 
> userCredentialsMap.get(userName).hashAlgorithm
>  208                             + " - for user : " + userName);
>  209                 }
>  210                 return false;
>  211             }
>  212         } else {
>  213             if (logger.warningOn()) {
>  214                 logger.warning("authenticate", "Unknown user : " 
> + userName);
>  215             }
>  216             return false;
>  217         }
>
> and elsewhere in this file: these should not be warnings: debug at
> the most.
>
>  318                 if (logger.infoOn()) {
>  319                     logger.info("loadPasswords",
>  320                             "Wrote hashed passwords to file : " + 
> passwordFile);
>  321                 }
>
> I think this should be debug as well.
>
>
> The last one might probably stay as a warning but if so:
>
>    1. it should be printed only once (and not for every
>       new client that comes)
>    2. It might need to be internationalized.
>
>  322             } else if (logger.warningOn()) {
>  323                 logger.warning("loadPasswords",
>  324                         "Passwords in " + passwordFile + " are in 
> clear and password file is read-only. "
>  325                                 + "Passwords cannot be hashed 
> !!!!");
>  326             }
>
> The rest looks good to me!
>
> best regards,
>
> -- daniel
>
>>
>> Thanks
>> Harsha
>>
>> On Wednesday 08 November 2017 09:29 AM, mandy chung wrote:
>>>
>>>
>>> On 11/7/17 9:04 AM, Harsha Wardhana B wrote:
>>>>
>>>> Hi Mandy,
>>>>
>>>> To summarize the changes,
>>>>
>>>> 1. The header will not contain the file modification timestamp. 
>>>> Instead when the password file is modified, a debug log will be 
>>>> printed. The log will contain the timestamp.
>>>>
>>>> 2. The password file is now protected from concurrent writes from 
>>>> within the JVM.
>>>>
>>>> 3. HashedPasswordManager.authenticate accepts char[] for password 
>>>> instead of String.
>>>>
>>>
>>> Thanks for this. That helps.
>>>> Header will be inserted. Apart from that all the comments will be 
>>>> retained.
>>>
>>> I think this header can also be taken out.  The comment may already 
>>> be copied from the template or deleted on purpose.
>>>
>>>>> Also log a message when the file is overridden - we didn't discuss 
>>>>> the format but I think it should include the pathname of the file 
>>>>> and the role name of the overridden entries (should it be info 
>>>>> level?). line 308-311 is debug message - is that the one?
>>>> I guess this wasn't discussed. We just output a debug log saying 
>>>> the file is overwritten. File name can be mentioned in the log.
>>>
>>> INFO log message seems more appropriate.
>>>
>>> Mandy
>>
>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic