首页 > 其他分享 >第二十三章 CSP Session 管理 - 身份验证共享策略

第二十三章 CSP Session 管理 - 身份验证共享策略

时间:2022-10-22 07:22:38浏览次数:51  
标签:登录 身份验证 应用程序 会话 Session Cookie 共享 CSP

第二十三章 CSP Session 管理 - 身份验证共享策略

本节介绍如何通过两种方式创建一组应用程序以作为一个组工作:

  • 共享认证:如果应用程序不共享认证,用户必须分别登录到被另一个应用程序链接的每个应用程序。共享身份验证允许用户通过一次登录进入所有链接的应用程序。
  • 共享数据:应用程序共享和协调全局状态信息。

本节介绍以下内容:

  • 身份验证方法
  • 认证架构
  • 选择策略时的注意事项

身份验证方法

本节介绍以下身份验证方法。通过导航到系统管理 > 安全 > 应用程序 > Web 应用程序,可以在管理门户中找到实现它们的选项。

  • 一次性共享One-Time Sharing: Login Cookies:登录 Cookie。具有相同 id 的所有应用程序共享身份验证。这对应于 CSP 应用程序选项登录 Cookie
  • 持续共享:按 ID 或会话进行身份验证组
    • Session。这对应于两个 CSP 应用程序选项。 Session Cookie Path 选项使具有相同 session-path-cookie 的应用程序共享一个会话及其身份验证。如果 CSPSHARE 选项设置为 CSPSHARE=1,则当用户单击(在源应用程序中)到目标应用程序的链接时,目标应用程序将与源应用程序置于同一会话中

登录 Cookie 保存有关最近登录用户的信息。如果让用户不必经常登录,但又希望应用程序保持独特且未连接,请使用登录 Cookie

对于登录 Cookie,请将每个应用程序放在单独的会话中。然后仅在第一次进入应用程序时共享身份验证。登录 Cookie 应用程序不构成一个组。因此,登录后,一个应用程序中的身份验证更改不会影响其他应用程序。

当用户使用密码登录时,该身份验证将保存在 cookie 中。如果进入另一个启用了登录 Cookie 的应用程序(第一次),它将使用保存在 cookie 中的身份验证。如果用户跳转到未启用登录 Cookie 的第三个应用程序(第一次),用户必须输入用户名/密码。

在决定是否使用登录 Cookie 时,请注意以下几点:

  • 每当用户使用密码登录时,登录 cookie 都会更新给新用户。
  • 不会为未经身份验证的登录(作为 UnknownUser)生成登录 cookie
  • 通过 API 调用登录时不会生成登录 cookie
  • 一旦该会话已通过身份验证,登录 cookie 会话就是独立的。因此,在一个会话中注销或超时不会影响其他会话。
  • 来自 Login-Cookie 应用程序的身份验证不能与仅密码(非 Login-Cookie)应用程序共享。对于组中经过身份验证的应用程序,为了获得一致的行为,请使用登录 Cookies 或全部使用登录 Cookie

持续共享:按 ID 或按会话的身份验证组

通过组共享,组应用程序的身份验证作为一个单元移动。如果组中应用程序中的用户以新用户身份登录,则所有应用程序都将移至该用户。如果一个应用程序注销,它们都将被注销。

应用程序可以通过两种方式组合在一起:按会话和按 ID。按会话组共享身份验证和数据。按 ID 组仅共享身份验证。

应用程序在 CSP 会话中运行。每个会话都有一个与之关联的安全上下文。

如果多个应用程序放置在同一个会话中,它们将共享身份验证。这称为按会话组(会话共享)。此外,会话可能包含用户定义的数据。应用程序可以通过使其应用程序 Cookie 路径完全匹配或在通过链接从一个应用程序跳转到另一个应用程序时使用 CSPSHARE=1 标志来共享会话。

可以通过分配与组标识符匹配的应用程序来对应用程序进行分组。这称为按 ID 组。该组共享一个安全上下文。这些应用程序通常在单独的会话中。该组不管理用户数据,仅管理身份验证。

按会话组(会话共享)

共享会话存在潜在问题。会话事件仅从原始 CSP 应用程序中获取。如果链接转到需要不同会话事件的页面,则这些会话事件不会运行。此外,在另一个具有不同安全上下文的 CSP 应用程序中运行页面可能需要登录;登录可能会改变原始 CSP 应用程序中运行页面的安全上下文。在选择使用按会话组之前,请阅读下面选择策略时的注意事项。

当应用程序共享会话时,它们通过会话对象共享身份验证和数据。共享会话有两种方式:

  1. 会话 Cookie 路径:具有完全匹配会话 cookie 路径的所有应用程序都放置在同一个会话中。
  2. CSPSHARE:将 CSPSHARE=1 放入应用程序页面的链接中。当源应用程序的会话 Cookie 路径与目标的会话 Cookie 路径不同时使用此选项。

如果需要按会话共享,那么最好的解决方案是命名所有应用程序,以便为它们提供相同的会话 Cookie 路径。可能必须重命名应用程序,因为会话 Cookie 路径必须是应用程序名称的子字符串。

如果无法做到这一点并且需要会话共享,那么必须将 CSPSHARE 参数放在从一个应用程序跳转到另一个应用程序的链接中。目标应用程序页面放置在与源应用程序页面相同的会话中。源的会话由 CSPCHD 参数或会话 cookie 确定。

按 ID 组

可以通过导航到管理门户上的系统管理 > 安全 > 应用程序 > Web 应用程序并在“按 ID 分组”字段中为它们提供组名来对应用程序进行分组。此名称将打开的应用程序组合在一起。组在不同的会话中。应用程序不共享数据。

组名附加到应用程序,而不是命名空间。无论命名空间如何,具有相同组名的应用程序共享身份验证。

身份验证仅在单个浏览器中共享。

CSPSHARE

当 CSP 收到来自浏览器的请求时,它会进行一系列检查以查看它收到的 sessionId 是否有效。这些检查包括:

  • User-Agent 是否与之前来自该 sessionId 的请求相同
  • 如果正在使用 cookie,此 sessionId 是来自 cookie 还是来自 CSPCHD 参数

如果传递 CSPSHARE=1 查询参数,CPS 将关闭此检查。然后,可以使用 CSPCHD=sessionId 构造指向另一个 CSP 应用程序的链接并包含当前 sessionId,以便此链接与现有页面在同一会话中运行。另外,如果在构建链接时 CSPSHARE=1CSP 会自动将 CSPCHD=sessionId 插入到链接中。如果手动插入带有 Write 语句的链接,可能需要手动插入 sessionId

例如,如果应用程序从 https 页面请求 http 页面(或从 http 页面请求 https 页面),请将 CSPSHARE=1 添加到链接中,如下所示:

#(..Link(%request.URL_"?CSPSHARE=1"))#

CSPSHARE=1 强制链接构造添加 CSPCHD 以共享 sessionId,即使 Caché 检测到 cookie 已启用。

标签:登录,身份验证,应用程序,会话,Session,Cookie,共享,CSP
From: https://www.cnblogs.com/yaoxin521123/p/16815246.html

相关文章

  • 2_cookie、session、token、sign
    一、关于cookie、session、token、sign 借鉴链接:https://juejin.cn/post/7147913027785293855 ......
  • CSP 普及 & 提高 考点 模板合集
    CSP普及&提高考点零、杂项加速cin/cout:ios::sync_with_stdio(false);。注:放在main函数的第一行,但使用它之后不能使用scanf/printf。避坑/防爆0指南。快读:inl......
  • 【JavaWeb】会话的学习笔记:Cookie和Session的知识点,这一次我总算学明白了
    @[Toc]1会话1.1什么是会话?用户打开浏览器,访问Web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。1.2会话跟踪一种维护浏览器状......
  • session
           不想用cookie的话Token+Redis自己实现springboot使用redis  请求每次要带上token  如果是浏览器访问。可以将token放到请求头  ......
  • 第二十章 CSP Session 管理 - 状态管理
    第二十章CSPSession管理-状态管理状态管理因为HTTP是无状态协议。为Web编写的应用程序必须使用特殊技术来管理应用程序上下文或状态。CSP提供了许多用于状态......
  • 登录(cookie,session)
    cookie和登录校验cookie:存储在浏览器的一段字符串,最大5kb,每个域都有一个cookie,跨域不共享,格式如k1=v1;k2=v2(可结构化)cookie会随http请求传递给服务端每次http请求,coo......
  • 补CSP2020
    T1儒略日丧心病狂.jpg就是我也调了一会。对于一道T1来说确实挺久的,而且我交了好几发才过((T2动物园我们仍未知道出题人为什么不把他放到T1智障题T3函数调用拓扑......
  • 2022.10.18 CSP2022 模拟赛五
    旅行路线Source:CF459E。憨憨题。按\(w\)排序后,考虑DP,设\(f_u\)表示目前在点\(u\),可以走出的最长路线。按阶段转移的时候稍微注意一下相同边权的处理,具体的,开一个......
  • django报错 'WSGIRequest' object has no attribute 'session'
    最新学python的django后台用到session,报错'WSGIRequest'objecthasnoattribute'session'开始以为是session问题,结果去掉session仍报类似'WSGIRequest'objecthasno......
  • 2022 CSP-S 游记
    \(2022-9-18\)初赛在考场门口听到有人在聊florr.io,florr怕不是风靡\(OI\)圈了。宇宙射线什么东西。\(2022-9-27\\Day\-\infty\)出分了,还好过了,同机房的报了提高组的......