第二十四章 CSP Session 管理 - 认证架构

简介: 第二十四章 CSP Session 管理 - 认证架构

第二十四章 CSP Session 管理 - 认证架构

认证架构

安全上下文和粘性登录

应用程序在会话中运行。会话需要运行应用程序的安全上下文。安全上下文包含身份验证状态。

By-SessionsBy-ID Groups 有一个粘性登录,它会记住会话或组中使用的最后一个应用程序的安全上下文。如果组应用程序中的用户以其他用户身份登录,则会更新粘性登录。 (如果用户登录到未经身份验证的应用程序,则粘滞登录不会更新。)

在会话中跳转到应用程序时,会话会尝试使用适合目标应用程序的粘性登录。如果粘性登录与会话的当前安全上下文不匹配,并且应用程序可以接受粘性登录中的身份验证方法,则会话的安全上下文切换到粘性上下文中的安全上下文。

会话结束时,会话的粘性登录会丢失。当包含该组的任何应用程序的所有会话都结束时,该组的粘性登录将丢失。

初始登录后,组有一个关联的粘性登录对象,它在进入组的一个应用程序时尝试使用该对象。当组中的应用程序输入为 UnknownUser 时,粘性登录不会更新,因为这会将组中的所有其他应用程序移动到未经身份验证的安全上下文中。

如果粘性登录包含经过双重身份验证的用户,则该双重身份验证用于非双重身份验证应用程序,只要用户名身份验证在两个应用程序中匹配即可。

级联认证

CSP 服务器在尝试获取应用程序的身份验证信息时使用优先级。它尝试在以下每个事件中获取新的身份验证信息:

  • 对于新会话的第一个请求;
  • 当会话内有应用程序更改时;
  • 当应用程序是 By-id 组的一部分并且会话的当前安全上下文与组的粘性上下文不匹配时;
  • 当请求包含用户名/密码对时。

它尝试按以下顺序依次获取新的身份验证信息:

  1. 显式登录:检查用户是否输入了经过身份验证的用户名/密码。如果他们这样做了,系统会更新应用程序的身份验证组的上下文。 (这将设置组的粘滞登录。)
  2. 粘性登录:获取应用程序组的粘性上下文。如果没有粘性登录和按会话分组,请使用会话的当前上下文。
  3. 登录 Cookie:如果存在并为此应用程序启用,则使用。
  4. 未经身份验证:如果为应用程序启用,则使用未知用户。
  5. 建立登录页面:如果以上都失败,则向用户请求用户名/密码。如果从 %CSP.Session API 调用,则只尝试用户名/密码。登录后,更新组的粘性登录,除非刚刚以 UnknownUser 身份登录。

注销或结束会话

会话注销或结束时身份验证丢失。可以在方法中使用以下 %CSP.Session注销或结束会话:

推荐:CacheLogout=end

注销 CSP 会话的推荐方法是链接到应用程序主页,并传递包含字符串 CacheLogout=endURL。这会在尝试运行主页之前结束当前会话——释放任何获得的许可证、删除现有会话数据并删除会话的安全上下文。

如果此 CSP 应用程序需要身份验证,则没有会话,也没有经过身份验证的用户。在这种情况下,Caché 不运行主页逻辑,而是显示登录页面。当用户提交有效登录时,这将启动这个新会话,然后显示主页。

Set EndSession? =1

这会杀死会话。会话的粘性上下文被破坏。 OnEndSession 被调用。如果会话包含 By-Session 组,则该组被销毁。如果会话包含 By-Id 应用程序,则该应用程序将从继续存在的组中删除,除非这是该组中的唯一应用程序。登录 cookie 不受影响。按会话组丢失其数据。但是,对于 By-Id 组,该组的粘性登录不受单一破坏的影响,并且该组的其他成员保持登录状态。

此外,对于By-Session组,销毁会分散组中的成员,如果成员应用程序重新进入,则不能保证它们将被重新集成到同一个新会话中,或者(如果它们使用CSPSHARE进行分组)发送到不同的会话。

Session Logout

会话已注销。它的粘性上下文被破坏了。如果会话包含按会话组,则该组中的所有应用程序都将失去其身份验证。如果会话包含来自 by-id 组的应用程序,则组会丢失其粘性上下文,并且组中的所有应用程序都将被注销。

此外,还会调用 OnLogout。登录 cookie 被销毁。

会话继续存在,因此为 By-Session 组保留数据。

Session Logout All

可以注销当前作为特定用户身份验证的所有会话。

这会破坏登录 cookie

会话继续存在但没有身份验证。

相关文章
|
4月前
|
存储 Cloud Native 数据处理
Flink 2.0 状态管理存算分离架构演进
本文整理自阿里云智能 Flink 存储引擎团队负责人梅源在 Flink Forward Asia 2023 的分享,梅源结合阿里内部的实践,分享了状态管理的演进和 Flink 2.0 存算分离架构的选型。
848 0
Flink 2.0 状态管理存算分离架构演进
|
16天前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
43 0
RabbitMQ入门指南(二):架构和管理控制台的使用
|
5月前
|
存储 前端开发
Flutter Provider状态管理---MVVM架构实战
Flutter Provider状态管理—MVVM架构实战 在Flutter中,状态管理是一个非常重要的概念。Flutter Provider是一种状态管理的解决方案,它提供了一种简单,灵活和高效的方法来管理Flutter应用程序中的状态。本文将详细介绍Flutter Provider的使用,以及如何在MVVM架构中使用它。
159 0
|
2月前
|
SQL NoSQL 数据库
深入浅出:微服务架构下的数据库事务管理
【2月更文挑战第12天】 在当今微服务架构日益流行的背景下,如何有效地管理跨服务的数据库事务成为了开发与维护中的一大挑战。本文旨在探讨微服务环境下数据库事务管理的关键技术和策略,包括但不限于分布式事务的基本概念、常见的解决方案(如两阶段提交、补偿事务等),以及这些方案在实际应用中的优缺点比较。通过深入浅出的方式,本文希望能够帮助读者更好地理解并应对微服务架构下的数据库事务管理问题,进而提升系统的稳定性和可靠性。
|
4月前
|
安全 Java 数据库
SpringSecurity+JWT前后端分离架构登录认证
在SpringSecurity实现前后端分离登录token认证详解_springsecurity前后端分离登录认证-CSDN博客基础上进行重构,实现前后端分离架构登录认证,基本思想相同,借鉴开源Gitee代码进行改造,具有更好的代码规范。
177 1
|
5月前
|
消息中间件 运维 前端开发
(云HIS)云医院管理系统源码 SaaS模式 B/S架构 基于云计算技术
v(云HIS)云医院管理系统源码 SaaS模式 B/S架构 基于云计算技术
73 0
|
7月前
|
存储 JSON JavaScript
“Jwt认证在前后端分离架构中的应用与优化“
“Jwt认证在前后端分离架构中的应用与优化“
161 0
|
8月前
|
XML 缓存 API
分布式系统核心:REST风格的架构,REST成熟度模型及REST API管理
正如前文所述,正确、完整地使用REST是困难的,关键在于RoyFielding所定义的REST只是一种架构风格,它并不是规范,所以也就缺乏可以直接参考的依据。好在Leonard Richardson补充了这方面的不足。
|
11月前
|
消息中间件 负载均衡 监控
【Kafka从入门到放弃系列 六】Kafka架构深入——高并发读写及Zookeeper管理
【Kafka从入门到放弃系列 六】Kafka架构深入——高并发读写及Zookeeper管理
171 0
|
11月前
|
运维 Kubernetes Cloud Native
【华为云原生入门级认证】第 1 章 云原生架构总览
【华为云原生入门级认证】第 1 章 云原生架构总览
320 0