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,这样就都获取到了api

使用AccessToken访问api1的资源

代码视频没录,和以前课程的代码是同样的

最终请求的结果

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

打开受权服务器的地址,也能够看到是登录的状态浏览器

退出登录的操做

须要两步,首先是客户端退出了。而后认证服务器也退出了
若是登录了就显示退出的按钮

这里至关于MVC网站的cookie退出了

而后再把IdentityServer的cookie也退出

这里没有返回结果



再次走一遍登录和退出的效果
点击Privacy须要受权

登录以后能够访问了

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


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



这是点击here回到本身的网站







 服务器

相关文章
相关标签/搜索