使用单点登录获取用户数据的最佳方法

时间:2018-08-22 15:30:35

标签: architecture single-sign-on onelogin

我有以下问题,但找不到更好的解决方案。 我有一个SSO服务器和一个REST客户端应用程序。

  1. 1-客户端登录到SSO,该SSO返回令牌和ID为 用户“ user_id”
  2. 2-应用程序将此数据(令牌,user_id)保存在表中 (user_table)。
  3. 3-客户端应用程序需要列出所有用户及其用户 信息(姓名,年龄,地址等),但此信息位于 SSO。

获取此用户信息的最佳方法是什么?

我考虑过通过传递令牌和user_id来使每个用户成为SSO请求,或者当客户端登录时,该用户信息将保存在user_table表中。

但是,如果用户使用另一个客户端应用程序更新了一些信息?如何在所有客户端应用程序上升级?

2 个答案:

答案 0 :(得分:1)

大多数SSO都有自己的API,您可以查询这些API,并且您必须这样做,因为数据仅存在于此。就像Onelogin一样,您标记的用户API可以让您的应用查询(如果具有API访问权限)。

您还可以将此数据存储在一个客户端应用程序中,并使用其他应用程序中的SSO来控制对该数据的访问。这样一来,您的SSO就可以控制访问权限,而客户端则可以管理非访问控制数据。

答案 1 :(得分:0)

有几种方法可以解决此问题,最后取决于您的应用最终所需的行为。

  1. 实时同步。
  2. SSO时及时配置/更新。

案例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,则该老师永远不会知道该学生的存在。