Consent 确认

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

Consent被用来允许终端用户将一些资源(例如identity 和 API)的访问权限授予客户端。这通常适用于一些第三方应用,并且可以在 client settings中对每个客户端进行这方面的设置。

Consent Page 确认页面

为了实现这个功能,必须在宿主程序上面提供一个确认页面, quickstart UI(identityerServer4提供的一个demo)有一个关于确认页面的基本实现。

一个确认页面通常来说会渲染如下信息:

  1. 当前用户的名称(displayname)
  2. 发出请求的客户端的名称(displayname)
  3. 客户端的logo
  4. 关于客户端更多信息的一个链接(link)
  5. 客户端想要请求的资源列表

此外,还有一些比如说允许用户点击“remembered”按钮以便相同应用下次不用重复这个步骤。

一旦用户做完了他该做的事儿(点击了同意),确认页面必须把这个确认消息通知给identityserver,然后浏览器会被跳转回authorization端点。

Authorization Context上下文

IdentityServer会将一个returnUrl参数(可通过user interaction options配置)传递到一个包含请求参数的确认页面中。这些参数为确认页面提供了上下文,并且这些上下文可以通过 interaction service进行读取。GetAuthorizationContextAsync 方法(在interaction service中定义)会返回一个AuthorizationRequest对象。

关于客户端或资源的其他详细信息可以使用IClientStore和IResourceStore接口获得。

Informing IdentityServer of the consent result通知IdentityServer确认结果

interaction service上的GrantConsentAsync API允许同意页面通知IdentitySeerver的同意结果(也可能是拒绝客户机访问)。

身份服务器将暂时保留确认的结果。这种持久性在默认情况下使用cookie,因为它需要持续足够长的时间才能将结果传递回授权端点。这种临时持久性与“记住我的确认”特性的持久性不同(它是授权端点,它为用户保留“记住我的确认”)。如果你希望在确认页面和授权重定向之间使用其他的持久性,那么你可以实现IMessageStore<ConsentResponse>,并注入DI。

Returning the user to the authorization endpoint将用户重定向到authorization端点

一旦确认页面将确认结果通知给IdentityServer,用户就能被重定向到returnUrl指定的页面上。你的确认页面应该通过检查是否有效来避免open redirected。这个工作是通过interaction service上面的IsValidReturnUrl来做的。或者,如果

GetAuthorizationContextAsync 返回一个不为空的结果,那么你也可以确定returnUrl是有效的。

转载于:https://www.cnblogs.com/pangjianxin/p/9278916.html

IdentityServer4【Topic】之确认(Consent)相关推荐

  1. python从入门到实践19章答案

    目录 前言 一.博客 1.建立项目 2.创建应用程序 3.Django管理网站 4.让用户输入数据 二.博客账户 1.应用程序users 2.登录页面 3.注销 4.注册页面 三.重构 四.保护页面n ...

  2. ASP.NET Core分布式项目实战(Consent 确认逻辑实现)--学习笔记

    任务22:Consent 确认逻辑实现 接下来,我们会在上一节的基础上添加两个按钮,同意和不同意,点击之后会把请求 post 到 ConsentController 处理,如果同意会通过 return ...

  3. .NET Core IdentityServer4实战 第六章-Consent授权页

    在identityServer4中登陆页面只要是成功了,就会注册一个Cookie在服务器资源上,像现在大部分的网站第三方授权,都是经过一个页面,然后选需要的功能,IdentityServer4也给我们 ...

  4. IdentityServer4 实现 OpenID Connect 和 OAuth 2.0

    关于 OAuth 2.0 的相关内容,点击查看:ASP.NET WebApi OWIN 实现 OAuth 2.0 OpenID 是一个去中心化的网上身份认证系统.对于支持 OpenID 的网站,用户不 ...

  5. RocketMQ3.2.2生产者发送消息自动创建Topic队列数无法超过4个

    问题现象 RocketMQ3.2.2版本,测试时尝试发送消息时自动创建Topic,设置了队列数量为8: producer.setDefaultTopicQueueNums(8); 同时设置broker ...

  6. RabbitMQ(八):SpringBoot 整合 RabbitMQ(三种消息确认机制以及消费端限流)

    说明 本文 SpringBoot 与 RabbitMQ 进行整合的时候,包含了三种消息的确认模式,如果查询详细的确认模式设置,请阅读:RabbitMQ的三种消息确认模式 同时消费端也采取了限流的措施, ...

  7. 网页提示未认证授权的应用服务器,授权认证(IdentityServer4)

    区别 OpenId: Authentication :认证 Oauth: Aurhorize :授权 输入账号密码,QQ确认输入了正确的账号密码可以登录 --->认证 下面需要勾选的复选框(获取 ...

  8. IdentityServer4 使用OpenID Connect添加用户身份验证

    使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...

  9. IdentityServer4 知多少

    IdentityServer4 知多少 原文:IdentityServer4 知多少 1. 引言 现在的应用开发层出不穷,基于浏览器的网页应用,基于微信的公众号.小程序,基于IOS.Android的A ...

  10. kafka同一个group 消费两个topic吗_MQ: 一张图读懂kafka工作原理

    1.关于kafka Kafka是由Apache软件基金会开发的一个开源消息队列,由Scala和Java编写. 相关文章参考: MQ: 消息队列常见应用场景及主流消息队列ActiveMQ.RabbitM ...

最新文章

  1. Android Studio实用插件使用
  2. postman接口测试系列:接口参数化和参数的传递
  3. ppt矩形里面的图片怎么放大缩小_两年没做PPT,这些功能让我老泪纵横。
  4. mysql从零开始自增id_MySQL从零开始 7-表约束之主键,自增长,唯一键
  5. centos清楚缓存
  6. [转载]LM算法的实现
  7. Aho-Corasick算法
  8. 简单总结.NET中的各% %用法及区别
  9. # bucketSort 箱排序 也称桶排序
  10. 互联网晚报 | 10月22日 星期五 | 火花思维澄清破产传闻;珠海万达商管赴港提交招股书;特斯拉Q3营收净利均创新高...
  11. [代码审计]DuxCMS 2.0审计
  12. 单层石墨烯结构图matlab,CST中如何建立单层石墨烯模型
  13. MATLA矩阵、特征值相关备忘
  14. Playwright之初体验
  15. 手机IMSI码规则更新-通过IMSI判断运营商的方法
  16. c++语言运算符,c++运算符
  17. 什么是json数据?json数据应该怎么设计
  18. (二)CDA 数据分析师Level1考试新版大纲解析(自己整理)PART 2 数据结构
  19. 数字签名(1) 证书下载
  20. 转账到支付宝账户产品介绍

热门文章

  1. 成功解决TypeError: Encoders require their input to be uniformly strings or numbers.
  2. 从修身齐家治国平天下谈分布式系统中的限流与熔断
  3. 【金融基建】证券交易机制(三)(证券估值、拍卖、竞价撮合、做市商交易、市场交易指令、交易时段)
  4. smartbi问题_SAP BO的五大尴尬,Smartbi就是HANA用户的“菜”
  5. 简述no less than和not less than区别
  6. 微信小程序自定义顶部导航栏
  7. 如何将dwt模板移到php,如何制作ECSHOP模板
  8. open-falcon短信报警
  9. MT9255无法使用mm指令编译某个模块的问题
  10. mars java创业_Mars-java