公网API安全--OAuth认证

以前写过一个基于签名的公网API访问安全控制,另外一种方式是基于OAuth认证协议作安全控制。api

说明

用户访问A客户端,使用B的服务及资源。B只有征得用户的受权,才容许A客户端使用B上用户的资源和服务。浏览器

名词

  • 第三方客户端,A客户端。安全

  • 服务提供商,B服务。服务器

  • 资源全部者,用户。app

  • 用户代理,好比浏览器。url

  • 认证服务器,B服务上用来提供认证的服务器。.net

  • 资源服务器,B服务上用来存储用户的资源的服务器。代理

经过一个权限配置管理界面,业务方配置以后,获取appid,secret,redirect_url。code

  • 经过受权获取受权码。blog

  • 经过受权码+appid+secret获取access_token。

  • 经过access_token操做api。

OAuth在客户端与服务提供商之间,设置一个受权层。

客户端不直接登录服务提供商,只登录受权层,以此将用户与客户端区分开。

客户端登录受权层所用的令牌,与用户的密码不一样。用户能够在登录的时候,指定受权层令牌的受权范围和有效期。

客户端登录受权层,服务提供商根据令牌的权限范围和有效期,向客户端开发对应服务。

  • 用户打开客户端,客户端要求用户给予受权。

  • 用户赞成给予客户端受权。

  • 客户端使用上一步获取的受权,向认证服务器申请令牌。

  • 认证服务器对客户端进行认证后,确认无误,赞成发放令牌。

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

  • 资源服务器确认令牌无误,赞成向客户端开发资源。

核心:用户给客户端受权,有了受权以后,客户端能够获取令牌,凭令牌获取资源。

输入图片说明]

参照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,更新成功

相关文章
相关标签/搜索