Conset这个概念在Identityserver4中是表示要当前用户对第三方应用对资源请求的一个确认,它会被做成一个页面。

术语映射:

Consent page--确认页面,我喜欢叫做Consent页面。

outcome of the consent/outcome--确认结果/结果

Consent

确认

在请求授权期间,如果IdentityServer 要求当前用户确认一些信息,浏览器会被重定向到Consent页面。

Consent用来让一个终端用户为一个第三方应用获取受保护的资源进行授权,这个受保护的资源可能是Identity Resource,或者是API Resource。Consent对于第三方应用来说是一个典型的应用,当然,也可以在Client中设置。

Consent Page

确认页面

如果想让用户进行授权确认,就必须提供一个Consent页面。在这里由详细的说明。

一个Consent页面通常会渲染一些名字,包括用户的名字(在Identityserver的登陆中已经获取了)、第三方应用的名字、第三方应用的logo、第三方应用的其他信息、第三方应用请求的资源列表(用Scope来表示)。此外,Consent 页面也允许用户使用“记住”这个选项来配置下次同样的客户端访问时不用继续重定向到Consent页面。

一旦用户提供了确认信息,Consent页面必须通知Identityserver,并且浏览器随后会被重定向到授权端点。

Authorization Context

授权上下文

Identityserver会传递一个returnUrl参数给Consent页面,这个参数包含了授权请求的一些参数。这些参数为Consent页面提供了上下文的信息,并且这些信息能够被IIdentityServerInteractionService 读取。GetAuthorizationContextAsync方法会返回一个AuthorizationRequest实例。

关于客户端和资源的更多的信息可以从IClientStore和IResourceStore这两个接口中获取。

Informing IdentityServer of the consent result

将确认结果通知到IdentityServer

IIdentityServerInteractionService 的GrantConsentAsync方法让Consent页面通知Identityserver,这个方法将Conset的结果传入,Consent的结果可能是用户点击了同意,或者点击了取消/拒绝。

Identityserver会临时的存储Consent的结果。默认情况下会使用Cookie来存储。因为它只需要将这个Consent的结果传递到授权端点这么点儿时间,所以用Cookie来暂时的存储就足够了。

这个临时的存储不同于用户点击了“记住”选项,后者会被持久化。如果希望在Consent页面和授权重定向之间使用其他持久性,那么可以实现IMessageStore<ConsentResponse>并在DI中注册实现

Returning the user to the authorization endpoint

将用户返回到授权端点

一旦Consent页面通知了IdentityServer确认结果,用户将会被重定向到returnUrl(里面由一个redirect_url参数)。你的Consent页面应该通过验证returnUrl是有效的来防止打开重定向。这个功能可以用IIdentityInteractionService提供的IsValidReturnUrl 来解决。再或者,如果GetAuthorizationContextAsync 返回一个不为空的对象,你同样可以认为returnUrl是有效的。

IdentityServer4【Topic】Consent的更多相关文章

  1. IdentityServer4【Topic】之确认(Consent)

    Consent 确认 在授权请求期间,如果身份服务器需要用户同意,浏览器将被重定向到同意页面.也就是说,确认也算是IdentityServer中的一个动作.确认这个词直接翻译过来有一些古怪,既然大家都 ...

  2. IdentityServer4【Topic】之保护APIs

    Protecting APIs 保护api 默认情况下IdentityServer将access token发布成JWT(json web token)格式的. 现在,每个相关的平台都支持验证JWT令 ...

  3. IdentityServer4【Topic】之定义资源

    Defining Resources 定义资源 你在系统中通常定义的第一件事是你想要保护的资源.这可能是你的用户的身份信息,比如个人资料数据或电子邮件地址,或者访问api. 你可以通过C#对象模型(内 ...

  4. IdentityServer4【Topic】之StartUp中的配置

    Startup 身份服务器是中间件和服务的组合.所有的配置都是在启动类中完成的. Configuring services 通过调用如下代码在DI(dependency inject,依赖注入)中添加 ...

  5. IdentityServer4【Topic】之授权类型

    Grant Types 授权类型 授权类型指出了一个客户端如何与IdentityServer进行交互.OpenID Conect和OAuth2.0定义了如下的授权类型: Implicit Author ...

  6. IdentityServer4【Topic】之登出

    Sign-out 登出 IdentityServer的登出就像删除认证cookie一样简单,但是为了完成一个完整的联合签名,我们必须考虑将用户从客户端应用程序中(甚至可能是上游的Identity提供者 ...

  7. IdentityServer4【Topic】之登陆注册

    Sign-in 登陆注册 为了让标识服务器(identity server)代表用户发出令牌,该用户必须登录到标识服务器. Cookie authentication Cookie认证 身份验证是由来 ...

  8. IdentityServer4【Topic】之定义客户端

    Defining Clients 定义客户端 客户端表示哪些可以从你的IdentityServer拿到token的应用. 除了一些可能会变化的细节之外,通常情况下你需要为一个客户端定义如下通用的设置: ...

  9. IdentityServer4【QuickStart】之使用asp.net core Identity

    使用asp.net core Identity IdentityServer灵活的设计中有一部分是可以将你的用户和他们的数据保存到数据库中的.如果你以一个新的用户数据库开始,那么,asp.net co ...

随机推荐

  1. IIS配置HTTPS

    1,新建网站,选中类型为 https,然后更改SSL证书为你配置的SSL证书, 对于SSL证书的配置是这样的 点开第二步,然后点击 创建自签名证书 确定以后点开网站看到有个SSL, 双击进去,再选中 ...

  2. web中的——作者也不知道这里面写的啥

    1.使用超链接<a href="/Default/Index">添加</a><a href="#">返回显示信息</a ...

  3. C#/VB.NET 操作Word批注(二)——如何插入图片、读取、回复Word批注内容

    序 在前面的文章C# 如何插入.修改.删除Word批注一文中介绍了如何操作Word批注的一些方法,在本篇文章中继续介绍操作Word批注的方法.分以下三种情况来介绍: 1. 插入图片到Word批注 2. ...

  4. Oracle day03 连表查询

    为什么要表连接进行查询? 查询部门名称为SALES的员工信息 如何进行表的连接查询? 两种方式:Sql 1992 和sql1999 sql1992sql分类    1.笛卡尔积 (表乘表)    2. ...

  5. Spring笔记01_下载_概述_监听器

    目录 Spring笔记01 1.Spring介绍 1.1 Spring概述 1.2 Spring好处 1.3 Spring结构体系 1.4 在项目中的架构 1.5 程序的耦合和解耦 2. Spring ...

  6. 小tips:node起一个简单服务,打开本地项目或文件浏览

    1.安装nodejs 2.在项目文件夹目录下创建一个js文件,命名server.js(自定义名称),内容如下 var http = require('http'); var fs = require( ...

  7. Rxjs常用operators

    本文使用的是angular6内置的rxjs,版本号为6.3.3 concat 通过顺序地发出多个 Observables 的值将它们连接起来,一个接一个的. 参数: 名称 类型 属性 描述 other ...

  8. Android远程桌面助手之系统兼容篇

    Android远程桌面助手理论上兼容Android4.4至Android8.1之间所有的原生安卓系统,其他第三方ROM,如MIUI.Flyme.EMUI和Smartisan OS等也都陆续测试过,目前 ...

  9. js 数组去重小技巧

    js 数组去重小技巧 Intro 今天遇到一个问题,需要对数据进行去重,想看一下有没有什么比较方便的方法,果然有些收获. Question 问题描述: 我有一个这样的数据: [ { "Pro ...

  10. Spring 事务与脏读、不可重复读、幻读

    索引: 目录索引 参看代码 GitHub: 1.Spring 事务 2.事务行为 一.Spring 事务: Spring 的事务机制是用统一的机制来处理不同数据访问技术的事务处理. Spring 的事 ...