单点登录(OAuth2.0授权码模式进行单点登录接入)

623 阅读2分钟

一: 前期沟通

image.png

1:作为接入方需要提供客户端注册信息

  •  应用名称
  •  应用logo
  •  触发OAuth2地址:用于触发OAuth2流程地址
  •  回调地址:授权通过后回调地址

2:等待平台方进行注册审批后

平台方提供一个客户端凭证(APPID)和客户端密钥(APP_secret)

3:如需要与接入端同步用户则需要平台方提供同步用户的接口,由接入方调用。

二:实际请求

image.png

# 第一步 获取授权码 #

#### 用户打开客户端以后,客户端要求用户给予授权。 用户同意给予客户端授权后 获取授权码
该操作用户在登录页面设置点击按钮等,让用户点击,点击则表示统一平台认证

客户端使用上一步获得的授权,向认证服务器获取授权码。

发送请求

向平台方发送请求,申请授权码
请求url https://{ip}+{port}/oauth2/{uri}?client_id={APPID}&response_type=code&redirect_uri={callbackurl}     
包含的参数 【平台方IP、平台方端口、平台方提供的url、平台方提供的url、以及接入方在接收到授权后返回的url】

认证服务器对客户端进行认证以后,确认无误,同意发放授权码。

接收请求

用户确认授权之后,会被重定向至`redirect_uri`,并追加code参数与state参数,形如:redirect_uri?code={code}&state={state} code 为授权码

# 第二步 获取令牌 #

#### 客户端使用上一步获得的授权码,向认证服务器获取令牌。

发送请求

向平台方发送请求,申请令牌
请求url https://{IP}:{port} {url}?grant_type={授权类型}&client_id={APPID}&client_secret={客户端密钥(APP_secret)}&code={授权码}   

认证服务器对客户端进行认证以后,确认无误,同意发放授权码。

接收请求

认证完成后会返回access_token 授权码

# 第三步 获取资源 #

客户端使用令牌,向资源服务器申请获取资源。

发送请求

向平台方发送请求,申请资源
请求url https://{IP}:{port} {url} 
在hearder 中携带 参数 例如 Authorization: {第二步获取的令牌}

资源服务器确认令牌无误,同意向客户端开放资源。

接收请求

认证完成后会返回用户信息
接入端拿到客户信息后则使用该用户信息进行登录