第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( ...
随机推荐
- Anaconda虚拟环境
创建虚拟环境:conda create -n env_name packages 例:创建名为env1的虚拟环境,并在其中安装numpy,conda create -n env1 numpy. 指定特 ...
- git如何避免push/pull时输入密码
今天在搭建git服务器的时候,一切顺利,但是就是在git push的时候老是要输入密码,太烦了,然后百度搜索了一下,总结了主要有如下三种方法: 方法1 git config --global cred ...
- RSA算法加解密
package org.thcic.ejw.util.encrypt; import java.io.ByteArrayOutputStream; import java.security.Key; ...
- mysql 零碎笔记
聚合函数的用法: concat 连接单行记录的不同字段, group_concat 连接多行记录的相同字段, concat_ws count 按条件统计: SELECT COUNT(*) AS `nu ...
- aarch64的架构:unrecognized command line option '-mfpu=neon'
不用添加这个'-mfpu=neon'的编译器选项了,因为这个架构下neon是默认启动的. 参考: https://lists.linaro.org/pipermail/linaro-toolchain ...
- JS加密对应的c#解码
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,? ...
- php 将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序
最近再写项目的时候,碰到一个问题:如何将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序:实在是想不到哪个php库中有哪个函数能实现,只能自己写一个了,将代码写出来后,发现自己的代码繁琐,并 ...
- WPF:How to display a Bitmap on Image control
一个Bitmap文件,叫做screenShotFile, 你可以这样显示到Image控件上. BitmapImage bi = new BitmapImage(); bi.Beg ...
- Spring Cloud 微服务架构全链路实践
阅读目录: 1. 网关请求流程 2. Eureka 服务治理 3. Config 配置中心 4. Hystrix 监控 5. 服务调用链路 6. ELK 日志链路 7. 统一格式返回 Java 微服务 ...
- 255.Spring Boot+Spring Security:使用md5加密
说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...