Bug 413847 - HTTP 404 error in /j_spring_security_check when Team Authentication is enabled.
Summary: HTTP 404 error in /j_spring_security_check when Team Authentication is enabled.
Status: NEW
Alias: None
Product: Hudson
Classification: Technology
Component: Core (show other bugs)
Version: 3.1.0   Edit
Hardware: PC Windows 7
: P3 critical (vote)
Target Milestone: ---   Edit
Assignee: Winston Prakash CLA
QA Contact: Geoff Waymark CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-26 18:14 EDT by Roy Varghese CLA
Modified: 2013-07-26 21:42 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Roy Varghese CLA 2013-07-26 18:14:32 EDT
URL : http://localhost:8080/hudson/j_spring_security_check

Steps:
1. Start Hudson with new Home
2. Manage Hudson/Manage Security/
3. Enable Security and change Authorization to Team Management
4. Create sysadmin as "root". Click Save.
5. Back in home screen, click the "log in" link.
6. Type in username "root", leave password empty, click Submit.

Following page is returned:

404 Not Found

Stapler processed this HTTP request as follows, but couldn't find the resource to consume the request

-> evaluate(<hudson.model.Hudson@1495e50> :hudson.model.Hudson,"/j_spring_security_check")
-> evaluate(((StaplerProxy)<hudson.model.Hudson@1495e50>).getTarget(),"/j_spring_security_check")
-> evaluate(<hudson.model.Hudson@1495e50>.getDynamic("j_spring_security_check",...),"")
            hudson.model.Hudson@1495e50.getDynamic("j_spring_security_check",...)==null. Back tracking.
-> evaluate(((StaplerFallback)<hudson.model.Hudson@1495e50>).getStaplerFallback(),"/j_spring_security_check")
-> evaluate(<hudson.model.AllView@afe3b8> :hudson.model.AllView,"/j_spring_security_check")
-> evaluate(<hudson.model.AllView@afe3b8>.getDynamic("j_spring_security_check",...),"")
            hudson.model.AllView@afe3b8.getDynamic("j_spring_security_check",...)==null. Back tracking.
-> No matching rule was found on <hudson.model.AllView@afe3b8> for "/j_spring_security_check"
<hudson.model.AllView@afe3b8> has the following URL mappings, in the order of preference:

hudson.model.AllView.doCreateItem(...) for url=/createItem/...
hudson.model.AllView.doSubmitDescription(...) for url=/submitDescription/...
hudson.model.View.doRssAll(...) for url=/rssAll/...
hudson.model.View.doRssFailed(...) for url=/rssFailed/...
hudson.model.View.doDoDelete(...) for url=/doDelete/...
hudson.model.View.doConfigSubmit(...) for url=/configSubmit/...
hudson.model.View.doRssLatest(...) for url=/rssLatest/...
VIEW.jelly for url=/VIEW
hudson.model.View.LIST for url=/LIST/...
hudson.model.View.SORTER for url=/SORTER/...
hudson.model.View.PERMISSIONS for url=/PERMISSIONS/...
hudson.model.View.CREATE for url=/CREATE/...
hudson.model.View.DELETE for url=/DELETE/...
hudson.model.View.CONFIGURE for url=/CONFIGURE/...
hudson.model.AllView.getItems() for url=/items/...
hudson.model.AllView.getPostConstructLandingPage() for url=/postConstructLandingPage/...
hudson.model.AllView.getDescription() for url=/description/...
hudson.model.View.getPeople() for url=/people/...
hudson.model.View.getApi() for url=/api/...
hudson.model.View.getAbsoluteUrl() for url=/absoluteUrl/...
hudson.model.View.getTimeline() for url=/timeline/...
hudson.model.View.getBuilds() for url=/builds/...
hudson.model.View.getWidgets() for url=/widgets/...
hudson.model.View.getViewName() for url=/viewName/...
hudson.model.View.getComputers() for url=/computers/...
hudson.model.View.getSearchUrl() for url=/searchUrl/...
hudson.model.View.getACL() for url=/aCL/...
hudson.model.View.getViewUrl() for url=/viewUrl/...
hudson.model.View.getBuildHistoryList() for url=/buildHistoryList/...
hudson.model.View.getItemCreatePermission() for url=/itemCreatePermission/...
hudson.model.View.getQueueItems() for url=/queueItems/...
hudson.model.View.getUrl() for url=/url/...
hudson.model.View.getDisplayName() for url=/displayName/...
hudson.model.View.getOwner() for url=/owner/...
hudson.model.View.getDescriptor() for url=/descriptor/...
hudson.model.View.getDescriptor() for url=/descriptor/...
hudson.model.View.getActions() for url=/actions/...
hudson.model.AbstractModelObject.getSearchIndex() for url=/searchIndex/...
hudson.model.AbstractModelObject.getSearch() for url=/search/...
hudson.model.AbstractModelObject.getSearchName() for url=/searchName/...
java.lang.Object.getClass() for url=/class/...
hudson.model.View.getJob(String) for url=/job/TOKEN/...
hudson.model.View.getDynamic(String) for url=/dynamic/TOKEN/...
hudson.model.View.getItem(String) for url=/item/TOKEN/...
hudson.model.View.getDynamic(String,StaplerRequest,StaplerResponse) for url=/TOKEN/...
Comment 1 Bob Foster CLA 2013-07-26 20:24:17 EDT
Does this bug happen in unmodified 3.1.0 hudson?
Comment 2 Bob Foster CLA 2013-07-26 20:25:34 EDT
Reason I ask, I couldn't reproduce it here with current 3.1.0 build.
Comment 3 Bob Foster CLA 2013-07-26 21:34:49 EDT
Let me clarify. In 3.1.0 without a custom security manager and with security disabled, there is no link to take you to the /login page. If you type it explicitly, you will be able to get that error, but as Winston said: "Calling localhost:8080/login when no security enabled is against the law :)"

Anyway, it's an end case.

OTOH, in the environment where you encountered that bug, there is a custom security realm and Hudson does invite you to log in, with a link that will take you to the /login page. There, it fails because the security realm has overridden getFilter and prevents the handler for j_spring_security_check being added.

But this case should only be reachable during testing, as users are not supposed to be able to reach a Hudson for which they are not pre-authorized, and if they are preauthorized they won't be led to the /login dialog.
Comment 4 Bob Foster CLA 2013-07-26 21:42:27 EDT
But I'm guessing. What was the SecurityRealm and Authorization scheme you using in the environment you originally found the bug. If it's the one I'm thinking of, my previous post was correct.