在前两篇文章中,我们介绍了 OIDC 授权码以及授权码增强的 PKCE 模式,本次我们将重点围绕 (Client Credentials) 模式进行讲解 ,Client Credentials 模式是 OIDC 授权模式之一,它是一种用于客户端(应用程序)以自己的名义向 OIDC 服务端获取访问令牌(access token)的认证授权模式,常用于保护 API 或物联网场景。
【Authing是国内唯一以开发者为中心的全场景身份云产品,提供 1000+ API 和所有主流语言 SDK,拥有数十万开发者的社区生态。】
01.客户端凭证模式(Client Credentials)
Client Credentials 模式用于进行服务器对服务器间的授权(M2M 授权),期间没有用户的参与。你需要提前创建编程访问账号,并将 AK、SK 密钥对交给你的资源调用方,需要注意的是,各厂商对此实现有所不同,例如 Okta 和 Auth0 对于 Client Credentials 的实现是将 Client ID 和 Client Secret 交给调用方,Authing 则是在应用下创建编程访问账号后将 AK/SK 交给调用方,调用方使用起来并没有什么不同,Authing 的方式更加适合在一个应用下有多个调用方进行管理。
⚠️ Client Credentials 模式不支持 Refresh Token。
整体上,有以下流程:
1.资源调用方将他的凭证 AK、SK 以及需要请求的权限 scope 发送到 Authing 授权端点。
2.如果凭证正确,并且调用方具备资源权限,Authing 为其颁发 AccessToken。
3.调用方携带 access_token 请求资源服务器。
4.资源服务器验证 Token 通过后,返回相关资源。
流程图如下:
1.1 准备接入
1.1.1 在 Authing 创建应用及配置
老样子,需要先在 Authing 创建应用。
配置授权模式
创建编程访问账号 ,交给你 API 的调用方
1.1.2 在 Auhing 定义权限,并对 AK SK 账号进行授权
注:在用户认证时 scope 所对应的是用户信息,在 AK/SK 获取 Token 时,scope 应该对应的是被授权的 API 权限。
1.1.2.1 Scope 权限规范
Authing 的 scope 权限项目以空格分隔,每一项的格式是
资源:资源标识符:资源操作
资源:资源标识符:资源操作。
以下是 Authing 支持的所有 scope 格式:
1、含义为编号为 1 的书籍资源的读取权限
book:1:read
2、含义为所有书籍资源的读取权限
book:*:read