我有以下问题,但找不到更好的解决方案。 我有一个SSO服务器和一个REST客户端应用程序。
获取此用户信息的最佳方法是什么?
我考虑过通过传递令牌和user_id来使每个用户成为SSO请求,或者当客户端登录时,该用户信息将保存在user_table表中。
但是,如果用户使用另一个客户端应用程序更新了一些信息?如何在所有客户端应用程序上升级?
答案 0 :(得分:1)
大多数SSO都有自己的API,您可以查询这些API,并且您必须这样做,因为数据仅存在于此。就像Onelogin一样,您标记的用户API可以让您的应用查询(如果具有API访问权限)。
您还可以将此数据存储在一个客户端应用程序中,并使用其他应用程序中的SSO来控制对该数据的访问。这样一来,您的SSO就可以控制访问权限,而客户端则可以管理非访问控制数据。
答案 1 :(得分:0)
有几种方法可以解决此问题,最后取决于您的应用最终所需的行为。
案例1。
某些身份管理系统(如OneLogin)能够在系统中的用户数据更改时执行挂接。因此,例如,如果用户更新了其电子邮件,则可以设置一个钩子,该钩子将执行对最终应用程序API的调用,以便更新最终应用程序上的用户帐户。
以同样的方式,有时有趣的是用户可以在最终应用程序中编辑其配置文件,并将更改应用到IdM系统上,因为您可以使用IdM API,因此,当用户在最终应用程序中编辑其配置文件时,它会执行对IdM API的API调用。 (请注意,如果idM系统在最终应用程序上配置了挂钩,那么这些挂钩将在IdM系统上执行,因此最终应用程序也会自动更新。)
案例2。
当用户执行SSO流程(SAML / OIDC,JIT)时,可以将其数据从IdM系统提供给最终应用,此时,最终应用可以使用所提供的数据进行同步。 缺点如果用户不执行SSO,则不会创建/更新帐户。
案例1在更新用户数据至关重要的环境中很有意义,例如在LMS中,老师需要了解他教室的学生,但是如果您依赖SSO流程(SAML / OIDC,JIT )创建/更新学生帐户,如果该学生从未访问过LMS,则该老师永远不会知道该学生的存在。