2017-07-28 67 views
0

我目前正在开展与OpenID Connect Back-channel注销相关的项目。如specification中所述,我需要在注销令牌中包含sid作为声明。什么是OpenID Connect Back-channel注销中的注销令牌中的sid声明?

sid- 可选。会话ID - 会话的字符串标识符。这表示在RP处登录的最终用户的用户代理或设备的会话。不同的sid值用于在OP中识别不同的会话。 sid值只需在特定发行人的情况下是唯一的。其内容对RP不透明。其语法与OAuth 2.0客户端标识符相同。

从sid的解释来看,我对于是否讲述了RP上终端用户的session-id或OP上RP的session-id有些混淆。

在此先感谢。

回答

1

SID =终端用户在特定设备/用户代理上的会话的唯一标识符等。 假设我从游戏应用中的Android手机登录并且游戏应用使用openID并通过Facebook或Google进行身份验证。游戏应用程序启动用户代理并连接到OpenID提供程序。这里进行身份验证,应用程序获取ID令牌(其中包含SID)。游戏应用程序请求来自OpenID提供商的用户声明,然后在设备上创建会话,但发送用户信息以在游戏应用程序服务器(此处为RP)上创建会话。

现在假设我在同一部手机或不同手机上登录了另一个应用程序,并做了完全相同的事情。我现在登录了两个不同的应用程序,它们有自己的会话,但我将在OP中进行两个会话。 OP将如何区分哪个会话被杀死。如果没有SID,它将杀死所有会话并且SID在那里,只有那个会话可以被杀死。

这是我能给出的最简单的解释。其他一切都是如何实现的。

+0

OP是否创建SID并将其发送到ID令牌中? – Piraveena

+0

OP发起的注销(在SAML术语中称为IDP发起的注销):在OpenID反向信道注销的情况下,SID由OP产生并存储在OP侧。在这种情况下,当RP从OP获得ID令牌时,必须从OP获取该令牌中的SID。现在,当RP收到从OP注销的请求时(因为OP知道这个令牌会话何时到期),它使用该SID使其会话失效。在这里,会话的完整会话生命周期在OP端,也有一个RP启动了,在http://openid.net/specs/openid-connect-session-1_0.html#RPLogout – dvsakgec

+0

中涵盖了感谢您的解释! – Piraveena