【问题标题】:Sonar 6.7 SSO - How to trigger authentication?Sonar 6.7 SSO - 如何触发身份验证?
【发布时间】:2017-12-12 22:22:45
【问题描述】:

你好,

一段时间以来,我们一直在使用我们制作的 SSO 插件来通过身份提供者 (Crowd) 进行身份验证,因为 crowd-plugin 不支持 SSO。 现在,我们决定将 Sonar 升级到新的 LTS 6.7。但是我们的插件使用的是 HttpSession 对象(在 servlet 过滤器中创建),由于 Sonar 现在是无状态的,因此似乎不再支持这些对象。 我们没有使用 OAuth2。

我一直在寻找一些东西,但我对我应该如何实现身份验证感到困惑。 Crowd 端的通信成功,我得到了用户详细信息和会话令牌。我的插件有现有的自定义 Authenticator、UserProvider 和 GroupsProvider,应该可以正常工作。

但是身份验证永远不会在 Sonar 端触发。我找不到如何让声纳触发我的身份验证器覆盖的 doAuthenticate 方法。

我不能使用BaseIdentityProvider,因为用户不应该进行任何操作,如果他有 Crowd cookie,他应该自动连接,或者被重定向到我们的 Crowd 登录页面,以便他可以连接;正如我对它的理解,BaseIdentityProvider 只是添加了一个与外部身份提供者连接的选项。

有人知道我如何从 servlet 过滤器代码触发身份验证吗?还是我必须重新开始并使用完全不同的方式?

【问题讨论】:

    标签: sonarqube single-sign-on


    【解决方案1】:

    无需单击任何按钮即可向 SonarQube 进行身份验证的唯一方法是使用 HTTP 标头。

    有关详细信息,请参阅documentation

    【讨论】:

    • 首先,感谢您的快速回答。话虽这么说,这有点尴尬,因为我在没有使用“新”HTTP 标头身份验证的情况下管理它。我实际上扩展了一个BaseIdentityProvider,我在init(Context) 方法中抛出了authenticate。然后我让我的 servlet 过滤器向<sonar-base-url>/sessions/init/<identity-provider-key> 发送重定向。它触发身份验证并重定向到声纳主页,而无需用户进行任何输入。
    • 有趣!提供 BaseIdentityProvider 是为了允许通过 OAuth2 以外的其他方式进行身份验证,但我从没想过它可以以这种方式使用。也许您可以创建一个开源插件或在某处提供一些示例,因为其他用户可能会对此感兴趣。
    • 当我有时间并且我的插件更新完成时我可能会考虑它,因为 Crowd 的 SSO 已经被询问了几次,所以它可能对某些人有用。在那之前,您可以检查一下 - 这是我看到使用此方法的地方:reverse-proxy-auth-sonar-plugin.
    • 感谢分享!顺便说一句,您有没有直接使用 HTTP 标头?我在问,因为如果您需要做的不仅仅是身份验证,那么拥有一个自动将您登录到 SonarQube 的插件很有趣,但否则我认为这可能是矫枉过正,因为您需要维护它。
    • 其实我没有。我们以前没有使用过它们,所以它只是使用过滤器的更简单方法。 Atm 我们的人群只向我们发送了令牌,我们使用令牌手动获取用户详细信息,因此我自然地尝试在声纳插件中解决问题并尽可能多地保留现有内容。我不认为维护它也会付出更大的努力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多