IdentityServer4 中文文档 -10- (快速入门)使用密码保护API
(OAuth 2.0) 规范 建议仅对“受信任”的应用程序使用资源所有者密码授权。一般来说,当你想要验证一个用户并请求访问令牌的时候,使用交互式 OpenID Connect 流通常会更好。
不过,这个授权类型允许我们在 IdentityServer 快速入门中引入 用户 的概念,这是我们要展示它的原因。
就像基于内存存储的资源(即 范围 Scopes)和客户端一样,对于用户也可以这样做。
首先添加以下 using 语句 到 Config.cs 文件中:
然后将测试用户注册到 IdentityServer:
AddTestUsers
扩展方法在背后做了以下几件事:
- 添加对用户相关服务的支持,这服务通常为登录 UI 所使用(我们将在下一个快速入门中用到登录 UI)
你可以通过修改 属性简单地添加对已有客户端授权类型的支持。
客户端看起来跟之前 客户端凭证授权 的客户端是相似的。主要差别在于现在的客户端将会以某种方式收集用户密码,然后在令牌请求期间发送到令牌服务。
IdentityModel 的 TokenClient
在这里再次为我们提了供帮助:
当你发送令牌到身份 API 端点的时候,你会发现与客户端凭证授权
相比,资源所有者密码授权有一个很小但很重要的区别。访问令牌现在将包含一个 信息,该信息是用户的唯一标识。sub
信息可以在调用 API 后通过检查内容变量来被查看,并且也将被控制台应用程序显示到屏幕上。
信息的存在(或缺失)使得 API 能够区分代表客户端的调用和代表用户的调用。