Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
G gitlab-workhorse
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • nexedi
  • gitlab-workhorse
  • Repository

Switch branch/tag
  • gitlab-workhorse
  • main_test.go
Find file BlameHistoryPermalink
  • Kirill Smelkov's avatar
    fixup! NXD blob/auth: Teach it to handle HTTP Basic Auth too · c3682335
    Kirill Smelkov authored Jun 04, 2018
    @rafael approached me and asked why URLs like
    
    	https://gitlab-ci-token:XXX@hostname/group/project/raw/master/file
    
    work in CURL, but not in Chrome under AJAX requests.
    
    After investigation it turned out they neither work in WGET and give 302
    redirect to http://localhost:8080/users/sign_in:
    
    	kirr@deco:~$ wget https://gitlab-ci-token:XXX@lab.nexedi.com/kirr/test/raw/master/hello.txt
    	--2018-06-04 13:14:04--  https://gitlab-ci-token:*password*@lab.nexedi.com/kirr/test/raw/master/hello.txt
    	Resolving lab.nexedi.com (lab.nexedi.com)... 176.31.129.213, 85.118.38.162
    	Connecting to lab.nexedi.com (lab.nexedi.com)|176.31.129.213|:443... connected.
    	HTTP request sent, awaiting response... 302 Found
    	Location: http://localhost:8080/users/sign_in [following]
    	--2018-06-04 13:14:04--  http://localhost:8080/users/sign_in
    	Resolving localhost (localhost)... 127.0.0.1, ::1
    	Connecting to localhost (localhost)|127.0.0.1|:8080... failed: Connection refused.
    	Connecting to localhost (localhost)|::1|:8080... failed: Connection refused.
    
    This turned out to be due to most clients (in fine accordance with RFC2617 /
    RFC7617) first send request without Authorization header set and retry it with
    that header only if server challenges it to(*), and our authorization code was
    only trying to handle HTTP basic auth if Authorization header was provided
    without issuing any challenge on server side.
    
    Fix it by checking Rails backend reply for 302, which it gives for
    unauthorized non-raw requests, and on our side convert it HTTP Basic
    auth challenge if raw request does not contain any token. This way it
    now works with user:password in URLs for both WGET and Chrome.
    
    If any tokens were provided we leave Rails auth response as is because
    we handle user/password only for that "no token provided at all" case.
    
    (*) see https://en.wikipedia.org/wiki/Basic_access_authentication for overview.
    /cc @alain.takoudjou, @jerome
    
    /reviewed-on nexedi/gitlab-workhorse!2
    c3682335
main_test.go 26.4 KB
EditWeb IDE

Replace main_test.go

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7