ClientCredentials客户端类型实现

 IdentityServer4 学习三_身份认证

客户端应用向IdentityServer请求AccessToken,IdentityServer验证通过把AccessToken返回给客户端应用,客户端应用拿着AccessToken访问API资源,获得响应;

 客户端应用不代表用户,客户端应用本身相当于是资源所有者;Client Credentials通常用于机器对机器的通信;客户端应用也是需要身份认证;

代码实现:把config类中的其余两种方式注释掉,并修改如下地方,运行

 IdentityServer4 学习三_客户端_02

 

创建一个控制台应用程序,需要安装包

IdentityServer4 学习三_ide_03

IdentityServer4 学习三_身份认证_04

 

 

IdentityServer4 学习三_客户端_05

也可以使用c#7.1中的async main

首先修改项目文件添加最新语法特性IdentityServer4 学习三_客户端_06

 IdentityServer4 学习三_ide_07

客户端请求token

IdentityServer4 学习三_ide_08

断点调试返回成功,调用api测试

IdentityServer4 学习三_身份认证_09

返回失败

IdentityServer4 学习三_客户端_10

错误403,资源不存在。

定义API资源:

创建一个API项目端口修改下

IdentityServer4 学习三_身份认证_11

新建IdentityController修改如下:

IdentityServer4 学习三_安装包_12

startup中的配置:

IdentityServer4 学习三_ide_13

依次启动Idp 、ApiResource、ConsoleClient 项目,可以看到ConsoleClient中打印出正确的返回结果:

IdentityServer4 学习三_安装包_14

 Client Credentials - Token 请求 :

在ConsoleClient项目中打上断点把并使用Fiddler 进行抓包查看

 IdentityServer4 学习三_身份认证_15

请求Header中的内容

IdentityServer4 学习三_身份认证_16

IdentityServer4 学习三_安装包_17

IdentityServer4 学习三_客户端_18

返回的Response

IdentityServer4 学习三_安装包_19

把返回的access_token复制出来,打开https://jwt.io,把access_token放进去查看

IdentityServer4 学习三_身份认证_20