客户端应用向IdentityServer请求AccessToken,IdentityServer验证通过把AccessToken返回给客户端应用,客户端应用拿着AccessToken访问API资源,获得响应;
客户端应用不代表用户,客户端应用本身相当于是资源所有者;Client Credentials通常用于机器对机器的通信;客户端应用也是需要身份认证;
代码实现:把config类中的其余两种方式注释掉,并修改如下地方,运行
创建一个控制台应用程序,需要安装包
也可以使用c#7.1中的async main
首先修改项目文件添加最新语法特性
客户端请求token
断点调试返回成功,调用api测试
返回失败
错误403,资源不存在。
定义API资源:
创建一个API项目端口修改下
新建IdentityController修改如下:
startup中的配置:
依次启动Idp 、ApiResource、ConsoleClient 项目,可以看到ConsoleClient中打印出正确的返回结果:
Client Credentials - Token 请求 :
在ConsoleClient项目中打上断点把并使用Fiddler 进行抓包查看
请求Header中的内容
返回的Response
把返回的access_token复制出来,打开https://jwt.io,把access_token放进去查看