詹金斯 - j_acegi_security_check

时间:2012-03-13 12:54:51

标签: authentication tomcat continuous-integration installation jenkins

我正在尝试设置jenkins,但我无法让身份验证工作。我在CentOS 6.2上运行Tomcat6上的jenkins。我启用了登录,一切正常,直到我尝试登录。在提供我的凭证并按下登录后,tomcat给了我一个错误:

“HTTP状态404 - 请求的资源()不可用。”在http://myserver:8080/jenkins/j_acegi_security_check

通过谷歌搜索我可以找到这个: https://issues.jenkins-ci.org/browse/JENKINS-3761

我发现了两个建议的修复:

  • 在tomcat上运行jenkins而不是运行独立版本 - 我 我已经这样做了。
  • 编辑文件:WEB-INF / security / SecurityFilters.groovy - 我试过 编辑,但我不能让它改变任何东西

我能做些什么来使这项工作?

10 个答案:

答案 0 :(得分:105)

花了很长时间与这个人搏斗,确保在Jenkins中选择授权方法时设置了安全领域。

即,在 Manage Jenkins→配置全局安全中,在安全领域列表中选择一个选项。

例如:

enter image description here

答案 1 :(得分:19)

您可能忘记选择下面指定的安全领域

https://wiki.jenkins-ci.org/display/JENKINS/Standard+Security+Setup

如果您已将自己锁定,可以按照此处的说明还原Jenkins config.xml文件,将<useSecurity>true</useSecurity>节点值设置为false

https://wiki.jenkins-ci.org/display/JENKINS/Disable+security

答案 2 :(得分:8)

正如the bug page所述:

  

错误是由代理传递规则"/jenkins http://localhost:9080/jenkins/"引起的,这导致了(jenkins)请求"/jenkins//j_acegi_security_check"(双//)。因此登录页面被404拒绝(而所有其他页面都被拒绝)。

确保您的/jenkins ProxyPass不以目标网址中的尾部斜杠结尾。

答案 3 :(得分:0)

我在Ubuntu以及AIX上遇到了同样的问题,我迫切需要它在生产环境中工作。我甚至尝试过Tomcat和Apache Web服务器,但问题仍然存在。

最后按如下方式更改类加载器使其在独立模式下工作:

java -jar jenkins.war --httpPort=79802 --preferredClassLoader=java.net.URLClassLoader & 

顺便说一句,这是Ubuntu的标准Jenkins发行版中的默认设置,从中我得到了线索。

问题可能与包装有关,但目前这种解决方案有效。检查这是否可以解决类似的问题。

答案 4 :(得分:0)

我在&#34; / jenkins / j_acegi_security_check&#34;上有相同的HTTP 404。 URI问题。

与上面pga指出的问题相同:Tomcat是以root用户身份启动的。

这是因为我通过在&#34; /etc/init.d /&#34;创建启动tomcat脚本来设置tomcat自动重启。

解决了以下问题:

su - tomcatuser - c /cde/pkgs/../tomcat/start.sh

答案 5 :(得分:0)

我在“/ jenkins / j_acegi_security_check”页面上遇到了与404相同的问题。

使用Jenkins和Tomcat,经过大量尝试解决后,我开始使用以下解决方案 - 我使用18080作为默认端口而没有SSL重定向。 它与重定向有关,但在这种情况下(如使用Tomcat),必须在tomcat-server-configuration中进行更改:

/conf/server.xml 中查找以下条目:

<Connector port="18080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" /> 

只是评论 redirectPort 对我有帮助:

<Connector port="18080" protocol="HTTP/1.1"
    connectionTimeout="20000" />

答案 6 :(得分:0)

我加了书签的詹金斯登录网址是:https://jenkins.foo.com/login?from=%2F

如果安全性被禁用,并且您使用任何凭据或空白凭据访问该URL,则会引发j_acegi错误。

相反,请使用https://jenkins.foo.com/,它将带您直接进入仪表板。

答案 7 :(得分:-1)

我在“/ jenkins / j_acegi_security_check”URI上使用了相同的HTTP 404。

在我的情况下,Jenkins运行在用户'root'启动的Tomcat上。停止了Tomcat,并由适当的单独应用程序用户再次启动它。问题解决了。

答案 8 :(得分:-1)

看到投票结果:我在新服务器上再次执行了这些步骤。 有**字符,我删除了

像这个$ TOMCAT_VERSION

这样的tomcat缺少$符号

(两者均已更正且正在运行)(2016年3月28日更新)

如下所示禁用安全性:

http://markunsworth.com/2012/02/13/locked-yourself-out-of-jenkins/

无法登录jenkins,也无法禁用登录选项 要么 在Tomcat上使用Jenkins登录时锁定。

http://xx.xxx.xxx.xxx:8080/jenkins/login?from=/jenkins/并且在填写未完全设置的userId密码后,将始终显示此页面

http://xx.xxx.xxx.xxx:8080/jenkins/j_acegi_security_check

HTTP状态404 - 说明请求的资源不可用。

我在tomcat中安装了.war文件 我花了很长时间才解决这个问题。 我有很多次完全删除了Tomcat,Jenkins所有文件夹.jenkins等重新安装,什么不是......

再次彻底删除Tomcat和Jenkins ......

解决方案是正确使用用户和组,让我们通过逐个运行以下命令来了解如何操作。

您使用sudo权限登录用户(例如.vimal)。

 vimal@h123:~$ sudo apt-get update
 vimal@h123:~$ BASE_USER=vimal
 vimal@h123:~$ sudo chown -Rf $BASE_USER:$BASE_USER /opt/

 vimal@h123:~$ USER=apache-tomcat
 vimal@h123:~$ GROUP=myjenkins
 vimal@h123:~$ TOMCAT_INSTALL_DIR=/opt
 vimal@h123:~$ TOMCAT_VERSION=apache-tomcat-8.0.23
 vimal@h123:~$ TOMCAT_URL=http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.zip

对于TOMCAT_URL,从tomcat下载站点的archive / src(.zip)中复制所需的链接

vimal@h123:~$ mkdir -p $TOMCAT_INSTALL_DIR
vimal@h123:~$ cd $TOMCAT_INSTALL_DIR
vimal@h123:~$ wget $TOMCAT_URL
vimal@h123:~$ unzip -q $TOMCAT_VERSION.zip
vimal@h123:~$ rm $TOMCAT_VERSION.zip

在运行下面的命令之前,你需要设置JAVA_HOME,如JAVA_HOME =&#34; / usr / lib / jvm / java-8-oracle /&#34;将此添加到      sudo nano / etc / environment

vimal@h123:~$ sudo chmod +x  $TOMCAT_INSTALL_DIR/$TOMCAT_VERSION/bin/*.sh
vimal@h123:~$ $TOMCAT_INSTALL_DIR/$TOMCAT_VERSION/bin/catalina.sh start
vimal@h123:~$
vimal@h123:~$ cd $TOMCAT_INSTALL_DIR/$TOMCAT_VERSION/webapps/
vimal@h123:~$ wget http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war

等待几分钟,直到詹金斯满载。需要2GB内存。 尝试访问http://xx.xxx.xxx.xxx:8080/jenkins/上的浏览器,它将有效...

有一天我找到了解决方案。

答案 9 :(得分:-1)

以下是我解决此问题的方法:

# service tomcat status
tomcat start/running, process 996

# service tomcat stop
tomcat stop/waiting

# service jenkins status
Jenkins Continuous Integration Server is not running

# service jenkins restart
 * Restarting Jenkins Continuous Integration Server jenkins                [ OK ]
# service tomcat start
tomcat start/running, process 3839

# service jenkins status
Jenkins Continuous Integration Server is running with the pid 3694

刷新浏览器,Jenkins应该正常运行。 希望这有帮助!