我们有一个基于Django的门户网站,通过 SAML SSO 执行用户身份验证和授权 . 此门户网站充当我们客户的SP(SAML术语中的服务提供商),并允许将其用户的标识联合到我们的应用程序 .

但是,我们组织中的某些管理用户还希望能够以管理用户身份访问门户,以执行各种管理/维护任务 . 如果我们自己的用户需要在客户端的IdP中进行配置,则可以预期客户端的回退 .

目前,SSO流程是作为单独的定制Django后端实现的,利用python-saml库进行身份验证并覆盖 django.contrib.auth 身份验证机制,并在SAML消息中为Django的 django.contrib.auth.models.Userdjango.contrib.auth.models.Group 提供一些专有的组映射 .

反过来,默认的Django管理应用程序流(也存在但稍微定制以驻留在单独的Django应用程序中)依赖于 django.contrib.sessions.middleware.SessionMiddlewaredjango.contrib.auth.middleware.AuthenticationMiddleware 的存在并且需要重新启动应用程序 .

实施这种SAML后门解决方案的可能替代方案是什么?这个用例有没有标准的行业解决方案?

我们正在考虑几种(最少侵入性,主要是配置)的可能性,也许有人可以提出更好的建议:

  • 在客户端IdP上 Build 用户,该用户具有执行管理任务所需的所有必要组 .

  • 将我们自己的IdP组件部署到Portal的SP endpoints ,然后为该用户配置必要的权限 . 该用户执行必要的管理工作 .

  • 指定与客户达成一致的维护窗口,此时可以使用SAML基础架构重新部署Portal,并且所有管理工作都可以由常规管理员用户执行 .

  • 暴露必需的Portal功能,因为REST API endpoints 无需登录即可访问(而是使用其他一些身份验证机制)

如果在安全审计期间发现此类功能是否会被视为安全漏洞?

先感谢您 .