OpenID Connect 的会话 ID
Session ID for OpenID Connect
我们公司的应用程序将进行集中认证。 App 1 或 App 2 中没有维护身份验证或用户帐户,所有这些都在 Identity Server 中处理。您需要公司的帐户才能拥有应用程序 1 或应用程序 2。
我认为 id_token
作为会话 ID 绰绰有余,但根据我的理解,最好不要在服务器外部暴露 id_token 以获得更严格的安全性。我应该如何发出 session_id
,这种情况下会话管理的理想方式是什么?我正在使用 WSO2 身份服务器
会话管理,这是与 Web 应用程序最常见的特征,因此我假设这就是 App 1 和 2 的特征。您可能会找到这篇文章 (Single Sign-On for Regular Web Apps an interesting read, in particular the section on session management.
When talking about managing sessions, there are typically three layers of sessions we need to consider:
- Application Session
- Auth0 (Federation Provider)1 session
- Identity Provider session
1 如果您计划让您的身份验证服务器进一步将身份验证委托给其他身份提供者,那么这将适用于您 Google 或 Facebook。
就我个人而言,我不会使用 ID 令牌作为会话标识符,而是使用较短的 ID 并在服务器端保留会话状态。
但是,ID 令牌旨在提供给客户端应用程序,作为向它们提供有关身份验证操作的信息的一种方式。在这里,客户端应用程序指的是应用程序的角色,而不是它的部署特征,因此您可以让客户端应用程序仅存在于服务器世界或在服务器世界之外的最终用户 devices/computers.
前文暗示让 ID 令牌跨越服务器端边界是完全可以的,并且您打算将其用作会话 cookie 值的意图很好。
请记住,cookie 和 ID 令牌都有过期的概念,因此将令牌放在 cookie 中可能有点令人困惑。您要么需要保持同步过期(重复),要么忽略一个并确保每个人都知道哪个被忽略(每个人甚至可能意味着从现在开始三个月后的您)。
我们公司的应用程序将进行集中认证。 App 1 或 App 2 中没有维护身份验证或用户帐户,所有这些都在 Identity Server 中处理。您需要公司的帐户才能拥有应用程序 1 或应用程序 2。
我认为 id_token
作为会话 ID 绰绰有余,但根据我的理解,最好不要在服务器外部暴露 id_token 以获得更严格的安全性。我应该如何发出 session_id
,这种情况下会话管理的理想方式是什么?我正在使用 WSO2 身份服务器
会话管理,这是与 Web 应用程序最常见的特征,因此我假设这就是 App 1 和 2 的特征。您可能会找到这篇文章 (Single Sign-On for Regular Web Apps an interesting read, in particular the section on session management.
When talking about managing sessions, there are typically three layers of sessions we need to consider:
- Application Session
- Auth0 (Federation Provider)1 session
- Identity Provider session
1 如果您计划让您的身份验证服务器进一步将身份验证委托给其他身份提供者,那么这将适用于您 Google 或 Facebook。
就我个人而言,我不会使用 ID 令牌作为会话标识符,而是使用较短的 ID 并在服务器端保留会话状态。
但是,ID 令牌旨在提供给客户端应用程序,作为向它们提供有关身份验证操作的信息的一种方式。在这里,客户端应用程序指的是应用程序的角色,而不是它的部署特征,因此您可以让客户端应用程序仅存在于服务器世界或在服务器世界之外的最终用户 devices/computers.
前文暗示让 ID 令牌跨越服务器端边界是完全可以的,并且您打算将其用作会话 cookie 值的意图很好。
请记住,cookie 和 ID 令牌都有过期的概念,因此将令牌放在 cookie 中可能有点令人困惑。您要么需要保持同步过期(重复),要么忽略一个并确保每个人都知道哪个被忽略(每个人甚至可能意味着从现在开始三个月后的您)。