第24章 退出 - Identity Server 4 中文文档(v1.0.0)
注销IdentityServer就像删除身份验证cookie一样简单,但是为了完成联合注销,我们必须考虑将用户从客户端应用程序(甚至可能是上游身份提供者)中签名。
24.1 删除认证
要删除身份验证cookie,只需使用HttpContext扩展方法SignOutAsync即可。您需要传递使用的方案(IdentityServerConstants.DefaultCookieAuthenticationScheme除非您已更改,否则提供此方案):
await HttpContext.SignOutAsync(IdentityServerConstants.DefaultCookieAuthenticationScheme);
或者您可以使用IdentityServer提供的便捷扩展方法:
await HttpContext.SignOutAsync();
注意
通常,您应该提示用户注销(需要POST),否则攻击者可能会链接到您的注销页面,导致用户自动注销。
24.2 通知客户端用户已注销
作为退出流程的一部分,您需要确保客户端应用程序被告知用户已退出。IdentityServer支持服务器端客户端的前端通道规范(例如MVC),服务器端客户端的反向通道 规范(例如MVC),以及基于浏览器的JavaScript客户端的会话管理规范(例如SPA,React,Angular)等)。
24.2.1 前端服务器端客户端
要通过前端通道规范从服务器端注销客户端应用程序用户,IdentityServer中的“已注销”页面必须呈现<iframe>以通知客户端用户已注销。希望收到通知的客户端必须设置FrontChannelLogoutUri配置值。IdentityServer跟踪用户已登录的客户端,并提供在IIdentityServerInteractionService上(详细信息)调用GetLogoutContextAsync的API 。此API返回一个LogoutRequest对象,该对象具有SignOutIFrameUrl注销您的页面必须呈现为的<iframe>属性。
24.2.2 反向通道服务器端客户端
要通过反向通道规范从服务器端注销客户端应用程序用户,IdentityServer中的SignOutIFrameUrl端点将自动触发服务器到服务器调用,将签名的注销请求传递给客户端。这意味着即使如果没有前面通道的客户端中,“退出”,在IdentityServer页仍必须渲染<iframe>到SignOutIFrameUrl如上所述。希望收到通知的客户端必须设置BackChannelLogoutUri配置值。
24.2.3 基于浏览器的JavaScript客户端
鉴于会话管理规范的设计方式,IdentityServer中没有什么特别的,您需要做的是通知这些客户端用户已注销。但是,客户端必须对check_session_iframe执行监视,这是由oidc-client JavaScript库实现的。
24.3 由客户端应用程序启动的注销
如果客户端应用程序启动了注销,则客户端首先将用户重定向到结束会话端点。在结束会话端点处的处理可能需要通过重定向到注销页面来维护一些临时状态(例如,客户端的注销后重定向uri)。此状态可能对注销页面有用,并且状态的标识符通过logoutId参数传递到注销页面。
在GetLogoutContextAsync上的API 交互服务可以用来加载状态。感兴趣的ShowSignoutPrompt是ShowSignoutPrompt指示注销请求是否已经过身份验证,因此不会提示用户注销是安全的。
默认情况下,此状态作为通过logoutId值传递的受保护数据结构进行管理。如果您希望在结束会话端点和注销页面之间使用其他一些持久性,那么您可以IMessageStore<LogoutMessage>在DI中实现并注册实现。
github地址
第24章 退出 - Identity Server 4 中文文档(v1.0.0)的更多相关文章
- 第18章 启动 - Identity Server 4 中文文档(v1.0.0)
IdentityServer是中间件和服务的组合.所有配置都在您的启动类中完成. 18.1 配置服务 您可以通过调用以下方法将IdentityServer服务添加到DI系统: public void ...
- 第66章 视频 - Identity Server 4 中文文档(v1.0.0)
第66章 视频 66.1 2019 January [NDC] - 使用ASP.NET Core 2.2和3.0保护Web应用程序和API 1月[NDC] - 为基于OpenID Connect / ...
- 第41章 CORS - Identity Server 4 中文文档(v1.0.0)
第41章 CORS IdentityServer中的许多端点将通过基于JavaScript的客户端的Ajax调用进行访问.鉴于IdentityServer最有可能托管在与这些客户端不同的源上,这意味着 ...
- 第21章 登录 - Identity Server 4 中文文档(v1.0.0)
为了使IdentityServer能够代表用户发出令牌,该用户必须登录IdentityServer. 21.1 Cookie身份验证 使用由ASP.NET Core中的cookie身份验证处理程序管理 ...
- 第2章 术语 - Identity Server 4 中文文档(v1.0.0)
规范.文档和对象模型等都使用特定的术语来表述. 2.1 IdentityServer IdentityServer是OpenID Connect提供程序 - 它实现OpenID Connect和OAu ...
- 第64章 学习 - Identity Server 4 中文文档(v1.0.0)
以下是一些在线,远程和课堂培训选项,以了解有关ASP.NET Core Identity和IdentityServer4的更多信息. 64.1 现代应用程序的身份和访问控制(使用ASP.NET Cor ...
- 第56章 Client - Identity Server 4 中文文档(v1.0.0)
该Client模型的OpenID Connect或OAuth 2.0 客户端-例如,本地应用,Web应用程序或基于JS的应用程序. 56.1 Basics Enabled 指定是否启用客户端.默认为t ...
- 第57章 GrantValidationResult - Identity Server 4 中文文档(v1.0.0)
该GrantValidationResult类模型补助确认为扩展授权和资源所有者密码授权的结果. 最常见的用法是使用身份验证(成功用例): context.Result = new GrantVali ...
- 第45章 工具 - Identity Server 4 中文文档(v1.0.0)
该IdentityServerTools是为IdentityServer编写扩展代码时,你可能需要有效的内部工具的集合.要使用它,请将其注入代码,例如控制器: public MyController( ...
随机推荐
- Java for Android 第二周课上实验一
(一)命令行下程序开发 (二)IDEA下程序开发调试 Mac OS系统下使用的IDEA为 Netbeans (三)测试题我的学号后两位为10 使用简单的PHP小程序得我的题目为2:实现简单四则运算(能 ...
- 多选ui实现单选效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 基于 TensorFlow 在手机端实现文档检测
作者:冯牮 前言 本文不是神经网络或机器学习的入门教学,而是通过一个真实的产品案例,展示了在手机客户端上运行一个神经网络的关键技术点 在卷积神经网络适用的领域里,已经出现了一些很经典的图像分类网络,比 ...
- JavaScript 异步编程的前世今生(上)
前言 提到 JavaScript 异步编程,很多小伙伴都很迷茫,本人花费大约一周的业余时间来对 JS 异步做一个完整的总结,和各位同学共勉共进步! 目录 part1 基础部分 什么是异步 part2 ...
- 【安富莱二代示波器教程】第19章 附件E---参考资料
第19章 附件E---参考资料 DSP教程 http://forum.armfly.com/forum.php?mod=viewthread&tid=3886 . FreeRTOS教 ...
- 【计算机篇】Office 2016 for Mac 安装和破解教程
免责声明 请亲们支持正版.这教程旨在分享,供参考. 为啥写这篇文章 对于大多数使用 Mac 的用户而言,虽然有苹果自家的办公软件,但功能少,用起来不舒服.而 Offer 2016 版的需要登录激活购买 ...
- FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg
一.简述 ffmpeg是一个非常强大的工具,它可以转换任何格式的媒体文件,并且还可以用自己的AudioFilter以及VideoFilter进行处理和编辑.有了它,我们就可以对媒体文件做很多我们想做的 ...
- 导出excel表格,前端和后台导出
问题:项目框架中导出不知道有什么限制,数据稍微大点导出不了,向上面请求解决,结果一圈推下来又推回来了,所以决定自己写,参考了网上很多大神的博客,开始试了前端导出,想着比较简单,但是乱码问题始终解决不了 ...
- [SQL]LeetCode180. 连续出现的数字 | Consecutive Numbers
SQL架构: Create table If Not Exists Logs (Id int, Num int) Truncate table Logs insert into Logs (Id, N ...
- [Swift]LeetCode212. 单词搜索 II | Word Search II
Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...