Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例

Posted wangjunwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例相关的知识,希望对你有一定的参考价值。


技术图片
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 实例的主要内容,如果未能解决你的问题,请参考以下文章

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

sql server性能调优实战,完整版下载

ASP.NET Core分布式项目实战IdentityServer4登录中心oauth密码模式identity server4实现

使用 Identity Server 4 和 ASP.NET Identity 添加外部登录

Identity Server 4 Admin 开源项目

Identity Server4学习系列三