Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Code在Oauth2.0和OpenId Connect里面分别叫做不同的名字
OAuth只介绍了如何授权。没有介绍如何身份认证、
OpenId Connect:既规定了怎么授权,也规定了怎么身份认证
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
OpenlD Connect是在OAuth2.0身份证协议之上做的身份认证协议,它里面规定了三种flow分别是
Authorization Code Flow、Implicit Flow、 Hybird Flow
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
今天主要讲Authoriztion Code,
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
OAuth2.0里面的流程图
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
OpenId Connect
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
不一定的地方主要是这里,除了会获取access token之外,还会获取 Id token
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
新建MVC的客户端应用
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
修改启动的端口为5002
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
startUp里面。把JWT的Claim类型映射关闭了以便允许有一个WhereNo的Claim。如果不关闭的话它就会修改从授权服务器返回的各种Claim
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
然后注册身份认证中间件;cookie的名称要保持一致
AddCookie表示使用Cookie来验证的首选方式
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
授权服务器的地址:
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
设置不需要Https
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
表示把获取的token存到cookie里面,因为以后可能会用
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
先把Scope清空,再去添加Scope
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
添加身份认证的中间件
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
然后保护HomeController,只有授权用户才可以访问这个ControllerIdentity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

服务端的设置

这里设置允许两种授权方式
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
后缀的地址都是默认的,当然也可以修改。这里先用默认的
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
把授权服务器运行起来

MVC的客户端运行后会自动跳转到授权服务器上
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
输入用户名和密码进行登陆
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

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

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
然后就跳转会了客户端
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
相当于走了这一步,把Authorization Code给带回来了
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
然后授权服务器验证通过后,会把Access Token 和Id Token返回来。如果客户端设置了refresh token的话 还会去访问 refresh token
Authorization code是通过浏览器重定向返回来的,请求Authorization code是浏览器端获得的
Access Token是MVC的后端,相当于是服务器请求了 Identity Server的服务器端,就是服务器对服务器

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
为了掩饰先把Cookie都清理干净
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
刷新客户端浏览器会重新登陆
登陆成功后点击 Privacy
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
idToken也有值了
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
refresh token没有值
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Authorization code 也没有。是因为Authorization code只能用一次,一单请求了Access Token了就会从客户端自动移除
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
我们在服务端已经设置了 运行Refresh Token了 这里已经设置为True了,为什么没有呢
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
客户端这里必须加上这个Scope才可以
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
oidc的常量我们可以F12反编译进去
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

再次运行,把cookie清理干净。再次运行 这次有值了RefreshToken
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

通过浏览器来看 请求的过程。F12设置浏览器
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
然后刷新页面,重新登陆
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
然后再清楚Cookie 用fiddler来监视请求
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

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

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
第二来回token的请求,走了后端通道,服务器对服务器
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
把数据放到ViewData展示
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
再把user的Claims循环输出
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
修改服务端授权服务器Scope都弄上
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
再改客户端这几种也都加上
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
发现客户端输出的 还是那些。
服务端需要设置为True
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
重新运行,记得清理cookie,这样就都获取到了Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

使用AccessToken访问api1的资源

代码视频没录,和之前课程的代码是一样的
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
最终请求的结果
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
刷新页面这些数据依然存在,会话进行保存了使用cookie
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
打开授权服务器的地址,也可以看到是登陆的状态Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

退出登陆的操作

需要两步,首先是客户端退出了。然后认证服务器也退出了
如果登陆了就显示退出的按钮
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
这里相当于MVC网站的cookie退出了
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
然后再把IdentityServer的cookie也退出
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
这里没有返回结果
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
再次走一遍登陆和退出的效果
点击Privacy需要授权
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
登陆之后可以访问了
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
点击退出的按钮后,页面停留在IdentityServer4的页面上
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

点击这个Here才会回到我们的客户端页面
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

这是点击here回到自己的网站
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP
Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例-LMLPHP

05-11 20:14