OpenID Connect的会话ID

时间:2016-11-16 04:21:50

标签: oauth-2.0 openid wso2is openid-connect

我们公司的应用程序将具有集中身份验证。在App 1或App 2中都没有维护身份验证或用户帐户,所有这些都在Identity Server中处理。您需要公司的帐户才能拥有应用1或应用2。 enter image description here

我认为id_token足以作为会话ID,但根据我的理解,如果可能的话,最好不要在服务器外部公开id_token以获得更严格的安全性。我该如何发布session_id,这种情况下会话管理的理想方式是什么?我正在使用WSO2 Identity Server

1 个答案:

答案 0 :(得分:1)

会话管理,这是最常与Web应用程序相关联的特征,因此我假设App 1和2是什么。您可能会发现这篇文章(Single Sign-On for Regular Web Apps是一篇有趣的读物,特别是关于session management的部分。

  

在谈论管理会话时,我们通常需要考虑三层会话:

     
      
  • 申请会议
  •   
  • Auth0 (联盟提供商) 1 会话
  •   
  • 身份提供商会话
  •   

1 如果您计划让身份验证服务器进一步将身份验证委托给其他身份提供商(如Google或Facebook),则适用于您。

就个人而言,我不会将ID令牌用作会话标识符,而是使用较短的ID并保持会话状态服务器端。

但是,ID令牌旨在提供给客户端应用程序,作为向其提供有关身份验证操作的信息的方式。在这里,客户端应用程序指的是应用程序的角色而不是其部署特征,因此您可以将客户端应用程序仅存储在服务器世界中或在最终用户设备/计算机之外。

之前的意思是让ID令牌越过服务器端边界是完全可以的,并且您将其用作会话cookie值的意图很好。

请记住,Cookie和ID令牌都有过期的概念,因此在Cookie中使用令牌可能会让人感到困惑。您需要保持同步过期(复制)或忽略过期,并确保每个人都知道哪一个被忽略(每个人甚至可能意味着你从现在起三个月)。