第二十四章 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月前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB与微服务架构的融合:灵活扩展与高效管理
【5月更文挑战第23天】阿里云PolarDB是适用于微服务的高性能分布式数据库,提供数据分片、水平扩展及高可用性解决方案。通过SQL或API实现弹性扩展,内置故障转移保障服务连续性,且兼容MySQL协议,易于集成微服务生态。通过Spring Boot示例展示了PolarDB的配置与集成过程,强调其在现代云原生应用中的重要角色。
117 1
|
26天前
|
中间件 API 网络架构
Django后端架构开发:从匿名用户API节流到REST自定义认证
Django后端架构开发:从匿名用户API节流到REST自定义认证
13 0
|
2月前
|
Cloud Native Devops 数据库
云原生架构:未来软件开发的引擎深入理解操作系统的虚拟内存管理
【7月更文挑战第30天】在这篇文章中,我们将深入探讨云原生架构的概念,以及它如何改变软件开发的世界。我们将从云原生的基本概念开始,然后深入到它的关键技术和实践,最后讨论它对软件开发的未来影响。无论你是软件开发者,还是IT专业人士,这篇文章都将为你提供深入理解和掌握云原生架构的重要信息。 【7月更文挑战第30天】在数字世界的构建中,虚拟内存是操作系统不可或缺的一环。本文将探索虚拟内存的核心概念、工作机制及其对现代计算环境的重要性,同时揭示其背后的技术细节和面临的挑战。
27 3
|
4月前
|
存储 Cloud Native 数据处理
Flink 2.0 状态管理存算分离架构演进
本文整理自阿里云智能 Flink 存储引擎团队负责人梅源在 Flink Forward Asia 2023 的分享,梅源结合阿里内部的实践,分享了状态管理的演进和 Flink 2.0 存算分离架构的选型。
1111 1
Flink 2.0 状态管理存算分离架构演进
|
3月前
|
存储 缓存 监控
深入解析Elasticsearch的内存架构与管理
深入解析Elasticsearch的内存架构与管理
深入解析Elasticsearch的内存架构与管理
|
2月前
|
消息中间件 监控 Java
Java中的微服务架构:设计、部署与管理
Java中的微服务架构:设计、部署与管理
|
4月前
|
存储 前端开发
Flutter Provider状态管理---MVVM架构实战
Flutter Provider状态管理—MVVM架构实战 在Flutter中,状态管理是一个非常重要的概念。Flutter Provider是一种状态管理的解决方案,它提供了一种简单,灵活和高效的方法来管理Flutter应用程序中的状态。本文将详细介绍Flutter Provider的使用,以及如何在MVVM架构中使用它。
314 0
|
4月前
|
Java 关系型数据库 MySQL
java+B/S架构医院绩效考核管理系统源码 医院绩效管理系统4大特点
医院绩效考核管理系统,采用多维度综合绩效考核的形式,针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求,对考核方案中各维度进行灵活配置,对各维度的权重、衡量标准、数据统计方式进行自定义维护。
55 0
|
4月前
|
缓存 小程序
Java+saas模式 智慧校园系统源码MySQL5.7+ elmentui前后端分离架构 让校园管理更高效的数字化平台系统源码
智慧校园是在数字通增强版基础上,研发的一套面向教育行业的数字化校园软件,其显著特点是集学校网站、协同办公、即时通讯、网络空间、移动办公于一体。在满足教职工日常办公需要的同时,拥有诸多教育行业功能,并提供便捷易用的“家校通”平台以满足老师、学生、家长的日常交流。数字通智慧校园教育版中的协同办公、即时通讯、移动办公等功能模块随通用版一同改进,将网络办公最新技术应用到教育行业。
82 1
|
4月前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
160 0
RabbitMQ入门指南(二):架构和管理控制台的使用