我们是服务提供商。假设在我们的应用程序中,我们最初有自己的用户/角色管理。不同角色的不同用户可以使用不同的功能。这样当用户登录时,我们需要知道该用户拥有哪些角色,并准备适当的 UI。我们有管理员角色,具有此角色的用户可以将角色分配给其他用户。
我们正在考虑为我们的应用程序启用 SAML SSO,现在的问题是我们如何为每个用户设置角色。
解决方案 1,我们依靠 IdP 为每个登录用户提供角色信息,角色信息可能会随 Assertion 一起出现,但这可能不适用于所有 IdP。
解决方案 2,我们只从 IdP 中检索用户,并在我们自己的应用程序中管理角色。例如,当我们得到一个断言时,我们检索用户名(或电子邮件地址),并匹配我们数据库中的一条记录,如果它不存在,我们会自动为这个新用户创建一个。然后我们依靠具有管理员角色的用户为这个新用户分配正确的角色。
现在的问题是第一个管理员来自哪里?我们的客户得到了我们的应用程序,并打开了 SAML SSO,现在数据库中还没有用户,那么我们该如何解决这种引导问题?有什么标准的方式吗?我们提出了不同的选项,但不确定哪个更好,每个选项有什么问题。
选项 1,有一个默认的内置管理员用户。有一个常规的本地登录页面,内置用户无需通过 IdP 即可登录(如果启用了 SAML SSO,则可以选择打开/关闭它)
选项 2,在 SAML SSO 设置期间,询问管理员用户名,以便我们在我们的数据库中自动创建此用户,并具有管理员角色。然后当这个用户通过 IdP 登录时,我们可以在我们的数据库中匹配他。
还有哪些其他选择?