2.4. 客户端获取令牌¶
客户端获取令牌分为两种情形:需要资源所有者交互(人机模式)和不需要资源所有者交互(机机模式)。
2.4.1. 人机模式¶
如果客户端所访问的目标资源是基于访问令牌确认归属于某个资源所有者的,则需要使用本模式。
例如:https://core.api.neusoft.edu.cn/user/id
资源地址为访问当前登录用户的标识,此时,需要通过携带访问令牌访问资源服务器,资源服务器通过与授权服务器反查令牌所映射的资源所有者信息及令牌权限列表,决定是否继续进行执行查询业务并响应相关资源所有者的用户标识。
流程图¶
flowchart LR
R1["客户端"]
R2["资源所有者"]
R3["授权服务器"]
R4["资源服务器"]
R1 -- "1-申请授权" --> R2
R1 -- "5-授权码" --> R3
R1 -. "7-携带访问令牌获取资源" .-> R4
R2 -. "2-认证并授权" .-> R3 -. "3-授权码" .-> R2
R4 -. "8-访问令牌" .-> R3 -. "9-资源所有者与权限" .-> R4
R4 -. "10-资源所有者授权的资源" .-> R1
R3 -- "6-访问令牌" --> R1
R2 -- "4-授权码" --> R1
linkStyle 0,1 stroke:#004898,color:#004898
linkStyle 8,9 stroke:green,color:green
linkStyle 2,3,4,5,6,7 stroke:#C9CACA,color:#3E3A39
classDef primary fill:#004898,color:white,stroke:#3E3A39
classDef secondary fill:white,color:#3E3A39,stroke:#C9CACA,stroke-width:2,stroke-dasharray:3,3
classDef action fill:#DE6A25,color:white,stroke:#3E3A39
class R1 action
class R3 primary
class R2,R4 secondary
授予方案¶
如果用户操作的终端支持进行凭证输入操作(有网页浏览器),可以使用授权码授予方案;如果用户操作的终端不支持进行凭证输入操作,或设计为不允许用户在操作的终端进行凭证输入操作,则需要使用终端授权授予方案。
2.4.2. 机机模式¶
如果客户端所访问的目标资源是基于访问令牌确认某个客户端是否有权限访问的,则需要使用本模式。
例如:https://zhanglin.api.neusoft.edu.cn/user/query
资源地址为通过传入参数作为条件进行查询相关用户信息,此时,需要通过携带访问令牌访问资源服务器,资源服务器通过与授权服务器反查令牌所映射的客户端信息及令牌权限列表,决定是否继续进行执行查询业务并响应结果。
流程图¶
flowchart LR
R1["客户端"]
R2["授权服务器"]
R3["资源服务器"]
R1 -- "1-客户端凭证" --> R2
R1 -. "3-携带访问令牌获取资源" .-> R3
R3 -. "4-访问令牌" .-> R2 -. "5-客户端与权限" .-> R3
R3 -. "6-资源" .-> R1
R2 -- "2-访问令牌" --> R1
linkStyle 0 stroke:#004898,color:#004898
linkStyle 5 stroke:green,color:green
linkStyle 1,2,3,4 stroke:#C9CACA,color:#3E3A39
classDef primary fill:#004898,color:white,stroke:#3E3A39
classDef secondary fill:white,color:#3E3A39,stroke:#C9CACA,stroke-width:2,stroke-dasharray:3,3
classDef action fill:#DE6A25,color:white,stroke:#3E3A39
class R1 action
class R2 primary
class R3 secondary
授予方案¶
本模式只有客户端凭证授予方案一种方案可供使用。