我们希望将CAS身份验证集成到Sonar 3.7 LTS中。我们想开始使用已弃用的CAS插件,这当然不起作用。我们已经将它与来自here的LDAP插件进行了比较,其中Authenticator有趣地实现了已弃用的接口LoginPasswordAuthenticator
。其中一个主要区别是CAS Authenticator插件实现了Authenticator
。所以我们改变了它实现LoginPasswordAuthenticator
的CAS插件。
现在有了线索:
在这两种情况下,实施Authenticator
或LoginPasswordAuthenticator
的身份验证器,传递给它的用户名为null
。对CAS服务器的身份验证就像一个魅力,插件知道用户名,但Sonar询问插件,如果它知道名为null
的用户。结果是,当我们点击登录时,我们会被重定向到CAS,填写登录表单并重定向回Sonar,仍未通过Sonar本身验证。
我们还考虑过使用容器身份验证,但不确定它是否适用于Sonar。
现在问题:
另外一个注意事项:我们希望在现有的Tomcat 7中使用Sonar,因此使用Sonar 4是一种我们不想去的方式,因为Sonar团队决定停止战争支持。如果其他任何事情都失败了,使用它是一种令人痛苦但又可以接受的解决方案。
感谢您的帮助。
答案 0 :(得分:1)
试试这个叉子:https://github.com/jerzykrlk/sonar-cas。
我恢复了原始插件的行为 - 它应该与Sonar 3.7一起使用。这是非官方的,需要手动构建。但也许它会在某个时刻成为官方插件。
答案 1 :(得分:1)
感谢@psqita,我们获得了Sonar的CAS插件,并与Saml 1.1一起运行。业务要求表示不允许匿名访问。可悲的是,将forceAuthentication
设置为true
会让我们陷入无休止的CAS和Sonar之间的痛苦重定向。所以我们发现Sonar以一种忽略所有身份验证插件的方式彻底改变了它的行为。
我们的解决方案:根据业务要求,我们无法允许匿名访问。所以我们实现了另一个Filter
,它有条件地重定向到CAS。身份验证和内容仍由插件完成。可悲的是,我们仍然不知道为什么首先会出现这种无限循环,但现在它不再发生了。那就是我想的......
感谢您的支持和节日快乐。