之前写过一个基于签名的公网API访问安全控制,另一种方式是基于OAuth认证协议做安全控制。
用户访问A客户端,使用B的服务及资源。B只有征得用户的授权,才允许A客户端使用B上用户的资源和服务。
通过一个权限配置管理界面,业务方配置之后,获取appid,secret,redirect_url。
客户端不直接登陆服务提供商,只登陆授权层,以此将用户与客户端区分开。
客户端登陆授权层所用的令牌,与用户的密码不同。用户可以在登陆的时候,指定授权层令牌的授权范围和有效期。
客户端登陆授权层,服务提供商根据令牌的权限范围和有效期,向客户端开发对应服务。
客户端授权:
/authorize/app-connect?appid=APPID&redirect_url=xxx&response_type=code&state=xxx
验证通过,授权服务器重定向到配置的REDIRECT_URL&code=xxx 授权码
通过授权码获取access_token:
/authorize/access-token?appid=APPID&secret=SECRET&code=授权码&grant_type=authorization_code
验证通过,返回access_token,refresh_token,expires_in(过期时间戳)
通过refresh_token更新access_token:
/authorize/refresh-token?appid=APPID&grant_type=refresh_token&refresh_token=xxx
验证通过,返回新的access_token,refresh_token,更新成功