• 
      

    Add ticket-based authentication for perforce.

    Review Request #3850 — Created Feb. 7, 2013 and submitted — Latest diff uploaded

    Information

    Review Board
    release-1.7.x

    Reviewers

    Add ticket-based authentication for perforce.
    
    People running perforce these days are encouraged to use ticket-based
    authentication, which dramatically improves security (it actually forces users
    to authenticate, and uses per-host tickets that can be expired).
    
    We've been putting this off for a long time, and it turns out that it's not so
    bad these days. I was mostly worried because our PerforceClient used p4api for
    most tasks but manually invoked 'p4 print' to actually get the file contents,
    which meant that we'd have to have two different login implementations. Some
    testing reveals that since perforce revamped the python bindings, they fixed it
    so run_print actually returns usable data.
    
    Whether we want to use ticket-based authentication gets stored into the
    extra_data dictionary, so we don't have to have any migrations.
    Verified that the field was shown and hidden at the right times, and that data
    was correctly persisted into the database.
    
    Set up a local perforce server that required password authentication. Verified
    that diffs still displayed correctly (to test the run_print() change).
    
    Set the "security" setting to "3" on the server, which enforces ticket
    authentication, and verified that local p4 clients all required ticket
    authentication. Set use_ticket_auth in the admin UI and cleared my cache, then
    reloaded the diff successfully.