• 
      

    Handle HTTP_AUTHORIZATION headers on all requests.

    Review Request #2010 — Created Dec. 21, 2010 and submitted — Latest diff uploaded

    Information

    Djblets

    Reviewers

    Handle HTTP_AUTHORIZATION headers on all requests.
    
    This introduces code to handle HTTP_AUTHORIZATION headers for all webapi
    requests, without first requiring a 401 Unauthorized error. This allows
    clients to pre-login, even for URLs that don't require authorization to
    see content.
    
    Since we now handle all this in a single place, @webapi_login_required
    no longer needs to check the header and attempt to log in. This will have
    the affect of effectively disabling HTTP Basic Auth for the old API, but that
    was never a supported feature anyway.
    
    We prevent multiple logins when the user has already logged in by comparing
    the requested username and the currently authenticated user's name, if any.
    If the user is already authenticated, we don't bother hitting the auth
    server or updating the last_login timestamp.
    
    We also no longer specifically set user.last_login, as that's already done
    by auth.login().
    Tested running post-review and verified that authentication still works.
    
    Tested using curl to pre-specify a username/password to a URL requiring
    authentication, without any cookies. I was able to invoke the URL without
    getting a 401 Unauthorized.
    
    Review Board unit tests pass.