我们是服务提供商。假设在我们的应用程序中,我们最初拥有自己的用户/角色管理。允许具有不同角色的不同用户使用不同的功能。因此,当用户登录时,我们需要知道该用户具有哪些角色,并准备适当的UI。我们有管理员角色,具有此角色的用户可以将角色分配给其他用户。
我们正在考虑为我们的应用程序启用SAML SSO,现在问题是我们如何为每个用户设置角色。
解决方案1,我们依靠IdP为每个登录用户提供角色信息,角色信息可能与Assertion一起出现,但这可能不适用于所有IdP。
解决方案2,我们只从IdP中检索用户,并在我们自己的应用程序中管理角色。例如,当我们得到断言时,我们检索用户名(或电子邮件地址),并与我们数据库中的记录匹配,如果它不存在,我们会自动为这个新用户创建一个。然后,我们依靠具有管理员角色的用户为这个新用户分配正确的角色。
现在问题是第一个管理员来自哪里?我们的客户获取我们的应用程序,并打开SAML SSO,现在数据库中还没有用户,那么我们如何解决这样的引导问题呢?有什么样的标准方式吗?我们提出了不同的选择,但不确定哪个更好,每个选项的关注点是什么。
选项1,具有默认的内置管理员用户。有一个常规的本机登录页面,内置用户无需通过IdP即可登录(如果启用了SAML SSO,则可以选择打开/关闭它)
选项2,在SAML SSO设置期间,询问管理员用户名,以便我们在具有管理员角色的数据库中自动创建此用户。然后当这个用户通过IdP登录时,我们可以在我们的数据库中匹配他。
还有其他选择吗?
答案 0 :(得分:0)
关于谁应该处理角色的第一个问题。据我所知,每个客户都有您的服务提供商软件之一。它连接到您拥有的中央IDP。如果是这种情况,那么让管理员处理您的IDP上的角色就会变得复杂。我会选择第二名。
关于第二个问题。我一直处于相同的情况,我记不清楚我已经看到了一个明显的标准解决方案。
我们所做的是选项2.它工作正常,但它增加了安装过程的一些复杂性。我们选择它是因为我们没有本地登录页面。 我也许最好选择1。
答案 1 :(得分:0)
您可以使用授权层从IDP的不同目录中获取角色。它消除了对SAML的约束,并提供与解决方案1相同的结果。