• 
      

    Add support of basic auth for jira

    Review Request #9830 — Created March 23, 2018 and discarded

    Information

    Review Board
    release-3.0.x

    Reviewers

    If the hosted bug tracker is not readable by
    an anonymous connection it is necessary to
    provide valid credentials to fetch jira information.
    
    These adds support to add username and password
    for a simple authentication.

    Added this patch, saved settings with empty username
    and empty password. Saw that it cannot fetch any
    information from jira as the connection is not
    authorized.

    Saved the settings wird a valid username and
    valid password. Saw that it can fetch all
    information.

    Description From Last Updated

    is this available in public WebAPI? How can I encrypt it? Will it be encrypted with SECRET_KEY?

    miserymisery
    misery
    1. 
        
    2. reviewboard/hostingsvcs/jira.py (Diff revision 1)
       
       
       
       
       
       
      Show all issues

      is this available in public WebAPI? How can I encrypt it? Will it be encrypted with SECRET_KEY?

      1. It gets stored in extra_data, which can be exposed.

        For how to encrypt things, I'd look at some of the other hosting services (beanstalk, for example). Search for encrypt_password/decrypt_password.

      2. Well, I don't know how to encrypt it in class JIRAForm(HostingServiceForm):. Decryption should be easy: auth = (user, decrypt_password(psw)).

        But maybe it would be better to split out the entire bug tracker stuff. We have 350 repositories with the same bug-tracker. I won't add user/psw to all repositories. ;-)

      3. Redoing bug tracker configuration is planned for hopefully RB5. It's long-overdue, and the current model limits us in too many ways. There will be a centralized configuration for each bug tracker you want to use, instead of making that part of the repository configuration.

        For encrypting, you can do:

        def clean_jira_psw(self):
            return encrypt_password(self.cleaned_data['jira_psw'].strip())
        
      4. Thanks!

        I have two problems now.

        • If I have a Jira and did not add the credentials (or bad credentials) but the server requires it, it has this error and the worker nerver stopps und blocks the whole process.
        15:02:00    WARNING     
        
         - root - Got recoverable error from GET https://jira.company.de/rest/api/2/issue/APP-1235, will retry [2/3] in 14.9607447152s. Err: 401
        
        15:02:00    DEBUG   
        
         - urllib3.connectionpool - https://jira.company.de:443 "GET /rest/api/2/issue/APP-1235 HTTP/1.1" 401 None
        

        • If I use the correct credentials it works until I re-open the repository settings and press "Save" again. This will clean the password - so I need to add the password anytime I save the repo settings.
      5. For the former, this seems like something coming from the jira module, which would require seeing if they have a mechanism for turning off retrying logic.

        To handle the latter case, I'd suggest only conditionally saving the username/password. If it's provided, save it. Otherwise, use what's already stored.

      6. Thanks, max_retries did the trick.

        Well, tried it but I don't know RB internals enough to add that. :-(

    3. 
        
    misery
    1. 
        
    2. ping? any help?

    3. 
        
    misery
    misery
    misery
    Review request changed
    Status:
    Discarded
    Change Summary:

    Just drop a "reviewboard/site/data/.netrc" file with the following content

    machine jira.company.de
    login reviewboarduser
    password 123456