2

OpenID Connect Session(问题时的草案 23)中,它指出

在注销端点处,OP 应该询问最终用户是否也想注销 OP。如果最终用户说“是”,那么 OP 必须注销最终用户。

因此,如果用户单击“是”,那么我们仍然处于 OP 领域,我们或许可以将它们带回欢迎屏幕。但是,如果用户单击“否”,则未定义行为。

我猜它会是这样的:

  • 设为state用户在按下 RP 应用程序上的注销按钮之前所访问的最后一个已知页面。
  • RP 的注销将使用令牌撤销端点销毁用户在 OP 上为 RP 拥有的任何凭据(如果 RP 需要重新同意)
  • 然后它将重定向到 end_session_endpoint 传递state
  • 一旦到达 OP end_session_endpoint 用户碰巧选择“否”
  • 那么用户没有从 OP 中注销。
  • 然后用户被重定向回 post_logout_redirect_uri 并带有已通过的状态。
  • 然后,RP 上的 post_redirect_uri 会将用户重定向回具有状态的 authentication_endpoint
  • 因为用户仍然在 OP 中登录并且假设仍然存在同意,它应该将用户重定向回 RP 回调,其状态就像用户没有离开应用程序一样,但现在有一组全新的 id_token

为防止重定向循环,RP 应确保注销不需要有效身份,以防万一不再存在。否则会有一个重定向循环。

4

0 回答 0