copy Copy chevron-down
认证 chevron-right 接入 OAuth 2.0 使用 OAuth 授权 Node.JS Demo 源码:https://github.com/Authing/oauth-demo
使用 authorization_code 模式
以下流程图列举了一种使用 OAuth 协议授权码模式的方式。
首先需要请求以下链接来获取 authorization_code
2. 重定向并获取 access_token
经过上一步之后,用户将会跳转到 Authing 提供的认证授权页面:
当授权成功后,用户将会被重定向到以下链接:
链接中带有 GET 请求参数 code 和 state。在 redirect_uri 的请求处理中,你应该检查 state 参数是否与你请求时一致,这样能确保请求不是来自第三方应用。然后,你应该使用 POST 请求https://sso.authing.cn/token 来获取 access_token,需要携带以下参数
同时 Content-Type 为 application/x-www-form-urlencoded。
例如:
返回:
3. 使用 access_token 请求 userInfo
GET https://users.authing.cn/oauth/user/userinfo?access_token=...
或作为 Authoriztion 头:
Authorization: Bearer { access_token }
4. 刷新 access_token
access_token 的有效时间只有 1 小时,refresh_token 的有效时间为 2 周,所以在申请 access_token 一小时以后,可通过 POST 请求https://sso.authing.cn/token 来重新获取 access_token,需要携带以下参数:
返回的数据与第二步一样。
与 authorization_code 不同,implicit 模式 直接返回 access_token,少了验证 authorization_code 的步骤,且不能刷新 access_token。
下面 implicit 模式时序图中红框部分是与授权码模式不同的地方。
https://sso.authing.cn/authorize?app_id=5c7253efe21948de32723725&state=123456lkjljkf3&response_type=token&redirect_uri=https%3A%2F%2Fauthing.cn&scope=user
通过请求以上链接可直接获取 access_token。
参数说明
2. 重定向并返回 access_token
{redirect_uri}#access_token=9a617eb1dddc9fc7a480b0778173fd7f9db33938&state=123456lkjljkf3
当授权成功后,将会重定向到如上的链接,在 hash 中携带 access_token。
3. 使用 access_token 请求 userInfo
与 authorization_code 模式 的第三步一样。
GET https://users.authing.cn/oauth/user/userinfo?access_token=...
或作为 Authoriztion 头:
Authorization: Bearer { access_token }
此模式要求有用户名和密码,且必须使用 POST 请求
向以下这个地址发起 POST 请求:
https://sso.authing.cn/token
参数说明
返回
2. 使用 access_token 请求 userInfo
与 authorization_code 模式 的第三步一样。
GET https://users.authing.cn/oauth/user/userinfo?access_token=...
或作为 Authoriztion 头:
Authorization: Bearer { access_token }
client_credentials 模式
此模式用于获取对应 client 的所有用户信息,请谨慎使用,不支持刷新 token
向以下这个地址发起 POST 请求:
https://sso.authing.cn/token
参数说明
返回
2. 使用 access_token 请求 userInfo
与 authorization_code 模式 的第三步一样。
GET https://users.authing.cn/oauth/user/userinfo?access_token=...
或作为 Authoriztion 头:
Authorization: Bearer { access_token }
验证 access_token 的 URL 地址
验证 access_token
GET https://sso.authing.cn/authenticate?access_token=
Path Parameters
所有模式的 access_token 有效时间都是 1 小时,能够使用 refresh_token 的模式中的 refresh_token 的有效时间为 2 周。
关于这四种模式的应用场景和区别,建议浏览 理解 OAuth2.0arrow-up-right ,一般情况下只需开启 authorization_code 模式。