Authentication Bitbucker服务器中的SSO插件如何启动身份验证

Authentication Bitbucker服务器中的SSO插件如何启动身份验证,authentication,single-sign-on,saml-2.0,atlassian-plugin-sdk,bitbucket-server,Authentication,Single Sign On,Saml 2.0,Atlassian Plugin Sdk,Bitbucket Server,我正在尝试编写一个小的bitbucket插件,它支持SAML2SSO身份验证 我一直在看bitbucket中的源代码,它看起来非常简单 但是,我的问题是,处理跨越不同请求的身份验证的最佳方法是什么 要做到SAML SSO,你必须通过用户的浏览器向IDP发送一个帖子,然后再通过POST再次发送一个SAML令牌,但是你不再处于认证的中间。因此,我正试图找出重新启动身份验证过程的最干净的方法,我目前的想法如下: 让实现com.atlassian.bitbucket.auth.HttpAuthentic

我正在尝试编写一个小的bitbucket插件,它支持SAML2SSO身份验证

我一直在看bitbucket中的源代码,它看起来非常简单

但是,我的问题是,处理跨越不同请求的身份验证的最佳方法是什么

要做到SAML SSO,你必须通过用户的浏览器向IDP发送一个帖子,然后再通过POST再次发送一个SAML令牌,但是你不再处于认证的中间。因此,我正试图找出重新启动身份验证过程的最干净的方法,我目前的想法如下:

  • 让实现
    com.atlassian.bitbucket.auth.HttpAuthenticationHandler
    的身份验证处理程序检查
    authenticate()
    方法中是否发生了SAML身份验证,然后根据需要将其重定向到IdP。(由于重定向,身份验证过程已停止)
  • 在单独的servlet上从IdP接收SAML令牌,并检查SAML令牌是否易于使用。假设一切正常,使用已验证的用户名设置servlet请求属性(或会话属性),然后将用户转发到他们试图访问的原始页面。这将再次启动身份验证过程
  • 我的身份验证处理程序再次运行,检查请求/会话属性,这一次创建
    ApplicationUser
    ,这是成功完成
    authenticate()
    所必需的
  • 这听起来是个好办法吗?我看了bitbucket源代码,了解了群组SSO处理程序的工作原理,但对于群组SSO,它不需要重定向外部登录页面,因此没有此流程的示例


    想法?

    发布时请与我联系,您是否考虑过将SAML2.0添加到?我知道您可以使用群组,但群组不是免费的。我还没有费心去实现它。但我可能会在六月份之后做,那时工作中的事情会慢慢平息下来。