Code在Oauth2.0和OpenId Connect里面分别叫做不同的名字
OAuth只介绍了如何授权。没有介绍如何身份认证、
OpenId Connect:既规定了怎么授权,也规定了怎么身份认证

OpenlD Connect是在OAuth2.0身份证协议之上做的身份认证协议,它里面规定了三种flow分别是
Authorization Code Flow、Implicit Flow、 Hybird Flow

今天主要讲Authoriztion Code,


OAuth2.0里面的流程图

OpenId Connect

不一定的地方主要是这里,除了会获取access token之外,还会获取 Id token

新建MVC的客户端应用



修改启动的端口为5002


startUp里面。把JWT的Claim类型映射关闭了以便允许有一个WhereNo的Claim。如果不关闭的话它就会修改从授权服务器返回的各种Claim

然后注册身份认证中间件;cookie的名称要保持一致
AddCookie表示使用Cookie来验证的首选方式

授权服务器的地址:

设置不需要Https

表示把获取的token存到cookie里面,因为以后可能会用

先把Scope清空,再去添加Scope

添加身份认证的中间件

然后保护HomeController,只有授权用户才可以访问这个Controller

服务端的设置

这里设置允许两种授权方式


后缀的地址都是默认的,当然也可以修改。这里先用默认的

把授权服务器运行起来

MVC的客户端运行后会自动跳转到授权服务器上

输入用户名和密码进行登陆


然后就跳转会了客户端

相当于走了这一步,把Authorization Code给带回来了


然后授权服务器验证通过后,会把Access Token 和Id Token返回来。如果客户端设置了refresh token的话 还会去访问 refresh token
Authorization code是通过浏览器重定向返回来的,请求Authorization code是浏览器端获得的
Access Token是MVC的后端,相当于是服务器请求了 Identity Server的服务器端,就是服务器对服务器


为了掩饰先把Cookie都清理干净

刷新客户端浏览器会重新登陆
登陆成功后点击 Privacy


idToken也有值了

refresh token没有值

Authorization code 也没有。是因为Authorization code只能用一次,一单请求了Access Token了就会从客户端自动移除

我们在服务端已经设置了 运行Refresh Token了 这里已经设置为True了,为什么没有呢

客户端这里必须加上这个Scope才可以


oidc的常量我们可以F12反编译进去

再次运行,把cookie清理干净。再次运行 这次有值了RefreshToken

通过浏览器来看 请求的过程。F12设置浏览器

然后刷新页面,重新登陆


然后再清楚Cookie 用fiddler来监视请求



第二来回token的请求,走了后端通道,服务器对服务器


把数据放到ViewData展示


再把user的Claims循环输出


修改服务端授权服务器Scope都弄上

再改客户端这几种也都加上

发现客户端输出的 还是那些。
服务端需要设置为True

重新运行,记得清理cookie,这样就都获取到了

使用AccessToken访问api1的资源

代码视频没录,和之前课程的代码是一样的

最终请求的结果

刷新页面这些数据依然存在,会话进行保存了使用cookie

打开授权服务器的地址,也可以看到是登陆的状态

退出登陆的操作

需要两步,首先是客户端退出了。然后认证服务器也退出了
如果登陆了就显示退出的按钮

这里相当于MVC网站的cookie退出了

然后再把IdentityServer的cookie也退出

这里没有返回结果


再次走一遍登陆和退出的效果
点击Privacy需要授权

登陆之后可以访问了

点击退出的按钮后,页面停留在IdentityServer4的页面上

点击这个Here才会回到我们的客户端页面

这是点击here回到自己的网站

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例的更多相关文章

  1. Identity Server 4 原理和实战(完结)_汇总贴

    视频地址:https://www.bilibili.com/video/av42364337 语雀地址:https://www.yuque.com/yuejiangliu/dotnet/solenov ...

  2. Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例

    创建项目 dotnet new -i IdentityServer4.Templates 多出来的这些模板 adminUI用来测试,想要用再生产环境,需要交钱 结合core的 Identity来使用 ...

  3. Identity Server 4 原理和实战(完结)_Hybrid Flow 实例, Claims, 角色授权和策略授权

    4分50 建立客户端 不需要身份认证 客户端叫做HybirdClient 配置IdentityServer服务端,先把客户端添加上 把userClaims添加到token里面 然后运行服务端就可以了 ...

  4. Identity Server 4 原理和实战(完结)_Resource Owner Password Credentials 授权实例

    今天要讲的 用fiddler来监听,昨天的客户端的请求 这是一个post的请求 这是响应的数据 Expores_in超时时间, 今天的内容 在服务端再声明一个client端 wpf的应用的效果图 首先 ...

  5. Identity Server 4 原理和实战(完结)_----选看 OpenId Connect 简介

    Identity Procider:身份提供商

  6. Identity Server 4 原理和实战(完结)_----选看 OAuth 2.0 简介(上)

    https://www.yuque.com/yuejiangliu/dotnet/cg95ni 代表资源所有者的凭据 授权 Authorization Grant 授权是一个代表着资源所有者权限的凭据 ...

  7. Identity Server 4 原理和实战(完结)_单点登录实例(添加Flask客户端,Express.js的API)

    idp授权资源的添加 如果下面哪个客户端想访问api2这个资源的话 就把它写上scope里面就可以了 nodeJS的客户端 python的库 MVC客户端分别访问API和API2 python客户端演 ...

  8. Identity Server 4 原理和实战(完结)_Reference Token,撤销Tokens,Google和Github登录

    服务端设置为ReferenceToken accessToken的内容比原来的少了很多 断点继续回来就会发生异常 服务端设置 客户端设置,使用一个封装好的库 撤销Token 我们在点击退出按钮的时候撤 ...

  9. Identity Server 4 原理和实战(完结)_Implicit Flow 实例

    oidc-client.js貌似是IdentityServer4的团队开发的 服务端的设置 在服务端新增一个Client 之后需要在angular客户端页建两个页面,对应这两个url才行 登出之后要跳 ...

随机推荐

  1. Android------Intent.createChooser

    Intent的匹配过程中有三个步骤,包含Action , category与data 的匹配. 假设匹配出了多个结果.系统会显示一个dialog让用户来选    择.例如以下图: 那么今天我们主要是解 ...

  2. caffe搭建--WINDOWS+VS2013下生成caffe并进行cifar10分类测试

    http://blog.csdn.net/naaaa/article/details/52118437 标签: windowsvs2013caffecifar10 2016-08-04 15:33 1 ...

  3. multimap容器和multiset容器中的find操作

    前言 multimap容器是map容器的“ 增强版 ”,它允许一个键对应多个值.对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器.那么对于multimap容器来说,find函数 ...

  4. 百度之星2016资格赛D,水题

    很简单的题,主要是要用字符串哈希,把字符串处理成整数.接下来可以继续用hash,也可以像我一样用个map就搞定了. /* * Author : ben */ #include <cstdio&g ...

  5. 九度OJ 1110:小白鼠排队 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1734 解决:1054 题目描述: N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子.现在称出每只白鼠的 ...

  6. 关于hibernate配置步骤

    1.导入jar包,根据连接数据库不同改变数据库jar包 2.创建hibernate.cfg.xml文件 几个常用的参数作用: connection.url:表示数据库URL,不同数据库有不同写法 a. ...

  7. Unable to start adb server: adb server version (32) doesn't match this client (39); killing...

    关于Android studio 连接不上adb问题,有人说重启机器,有人说重启工具,也有人说adb kill-server.然后我都尝试过依然没有解决.通过各种查询.最终成功的解决!!! adb n ...

  8. Struts多个文件上传

    Struts2多个文件上传 10级学员 韩晓爽课堂笔记 多个文件上传分为List集合和数组,下面我们着重介绍一下list集合的上传.都大同小异. 一 介绍 1. 在struts2文件上传的时候要先导入 ...

  9. NSDate的具体使用(转载)

    NSDate的具体使用 时间与日期处理 主要有以下类: NSDate -- 表示一个绝对的时间点 NSTimeZone -- 时区信息 NSLocale -- 本地化信息 NSDateComponen ...

  10. android4.3 蓝牙BLE编程

    一.蓝牙4.0简介 蓝牙4.0标准包含两个蓝牙标准,准确的说,是一个双模的标准,它包含传统蓝牙部分(也有称之为经典蓝牙Classic Bluetooth)和低功耗蓝牙部分(Bluetooth Low ...