【问题标题】:SSO with multiple native application based on access token of one application基于一个应用程序的访问令牌与多个本机应用程序的 SSO
【发布时间】:2020-04-05 20:12:32
【问题描述】:

我有一个应用程序对用户进行身份验证并安全地存储基于 client_id #1 生成的访问令牌。在第二个应用程序中知道我需要基于 client_id#2 的访问令牌,而无需用户登录。

如果访问令牌可用于其他应用程序,有哪些方法可以根据客户端 ID 生成 access_token?

【问题讨论】:

  • 是否可以通过浏览器使用单点登录?如果是这种情况,您可以共享用户的登录名并省略重新登录
  • 如果可以通过浏览器完成,可以通过API复制。你能详细说明我在这里需要做什么吗?

标签: openid-connect okta okta-api


【解决方案1】:

不,您不能自己生成自己的访问令牌(好的,您可以。但是每个适当的 OIDC 实现都会忽略它,因为令牌不会被 IdP 密钥正确签名,因此无法验证)。访问令牌始终由身份提供者(在您的情况下为 Okta)创建和签名。

但是,如果两个客户端位于同一领域(领域是 Keycloak 术语,Okta 可能使用不同的术语 - 域、池等),那么它们共享 IdP 会话。因此,如果用户通过 client_id#1 登录(IdP 会话就位)并且您将通过 client_id#2 启动登录过程,则不会要求用户再次登录,并且访问令牌将由 IdP 在 jiffy* 中发出。这就是 OIDC 协议的单点登录功能。

*这不适用于某些特殊的边缘情况,例如:直接访问授权用于 client_id#1 登录,需要同意,...

【讨论】:

  • 我不是自己生成访问令牌。令牌将由 IdP(此处为 Okta)生成。正如您提到的,这两个应用程序都在同一个域下,我们可以使用会话令牌来获取基于客户端 ID 的新访问令牌。遵循 OIDC 流程是否是好的实践/流程?
  • @Rollno1 我很困惑。那么有什么问题呢?您已经拥有所需的一切。
  • 如果造成混乱,我深表歉意。问题是如何处理会话令牌的到期?我可以使用 refresh 更新访问令牌,而如果会话令牌过期,则无法刷新它。
  • 什么是Session token
  • 会话令牌是提供身份验证证明的一次性不记名令牌,可以在用户代理中的 Okta 中兑换交互式 SSO 会话。会话令牌只能用于一次为用户建立会话,并在令牌过期时被撤销。 developer.okta.com/docs/reference/api/sessions/#session-token
猜你喜欢
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
相关资源
最近更新 更多