single-sign-on - 如何设置启用SAML SSO的初始用户/角色

标签 single-sign-on saml user-management application-design user-roles

我们是服务提供商。假设在我们的应用程序中,我们最初拥有自己的用户/角色管理。允许具有不同角色的不同用户使用不同的功能。因此,当用户登录时,我们需要知道该用户具有哪些角色,并准备适当的UI。我们具有管理员角色,具有此角色的用户可以将角色分配给其他用户。

我们正在考虑为我们的应用程序启用SAML SSO,现在的问题是我们如何为每个用户设置角色。

解决方案1,我们依靠IdP为每个登录用户提供角色信息,该角色信息可能随Assertion一起提供,但这可能不适用于所有IdP。

解决方案2,我们仅从IdP检索用户,并在我们自己的应用程序中管理角色。例如,当我们获得一个断言时,我们检索用户名(或电子邮件地址),并与数据库中的一条记录匹配,如果该记录不存在,我们会自动为此新用户创建一个。然后,我们依靠具有管理员角色的用户为该新用户分配正确的角色。

现在的问题是,第一个管理员来自哪里?我们的客户获取了我们的应用程序,并打开了SAML SSO,现在数据库中还没有用户,那么如何解决此类引导问题?有什么标准的方法吗?我们提出了不同的选择,但不确定哪个更好,每个选择的关注点是什么。

选项1,具有默认的内置管理员用户。内置用户有一个常规的 native 登录页面,而无需通过IdP即可登录(如果启用了SAML SSO,则可以打开/关闭该选项)

选项2,在SAML SSO设置过程中,要求提供管理员用户名,以便我们在具有管理员角色的数据库中自动创建此用户。然后,当该用户通过IdP登录时,我们可以在数据库中将其匹配。

还有哪些其他选择?

最佳答案

关于您应该由谁来处理角色的第一个问题。据我了解,每个客户都有您的服务提供商软件之一。它连接到您拥有的中央IDP。在这种情况下,让管理员处理您IDP上的角色感觉很复杂。我会去第二。

关于第二个问题。我一直处在同样的情况下,我不记得我看到了一个明显的标准解决方案。

我们所做的是选项2。它可以正常工作,但会增加安装过程的复杂性。我们选择它是因为我们没有本地登录页面。
我想也许我最好选择选项1。

关于single-sign-on - 如何设置启用SAML SSO的初始用户/角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390859/

相关文章:

java - 应用服务器中是否有针对JDBC 的单点登录解决方案?

plone - 使用Plone的认证机制登录其他站点

authentication - 在 Web 单点登录中针对客户端 Active Directory 进行身份验证

java - 需要有关 SAML 2.0 的信息

azure - 我可以使用 Azure Active Directory 库 (ADAL) 从 Azure AD 获取 SAML 响应吗?

Ansible 用于用户管理 - 删除死帐户

deployment - 使用 CLI 自动设置 jenkins 用户

phpmyadmin 无法删除用户

node.js - Shibboleth 与 Node.js Rest API 和 Angular 2 应用程序

java - 使用 Spring SAML 从 https 加载元数据