Home

authorization_code 从 spring-oauth-server获取 'code'


grant_type = 'authorization_code' 模式是Oauth中最常用的, 一般是通过浏览器来完成. 整个流程分3步完成,依次为:

  1. 从 spring-oauth-server获取 'code'
    -- 该步骤将根据从 spring-oauth-server 中获取的client信息(如client_id,client_secret)将用户引导到server的登录页面.
    在实际应用中, 表现为在登录页面中展示的 '通过第三方登录' 或 '通过其他账号登录'

  2. 用 'code' 换取 'access_token'
    -- 在server端当用户登录成功并授权后将返回到spring-oauth-client的回调地址(即redirect_uri),
    当检查通过后(指检查返回是否有code与state值), 将根据server端获取access_token的URL去换取access_token值.
    在实际应用中, 该步骤一般由client后端代码完成,前端不需要表现.

  3. 用 'access_token' 去访问 spring-oauth-server 的API
    -- 在成功获取access_token后,将根据 spring-oauth-server 中提供的API去获取 资源服务器 中的数据.
    在 spring-oauth-server 中当前只有一个API可供调用(即http://andaily.com/spring-oauth-server/unity/user_info), 用于获取当前登录用户的信息.
    在实际应用中, 资源服务器都会提供许多API供调用


步骤1: 从 spring-oauth-server获取 'code'

http://andaily.com/spring-oauth-server/oauth/authorize  测试连接

authorizationUri value from 'spring-oauth-client.properties'

显示请求参数

固定值 'code'

redirect_uri 是在 'AuthorizationCodeController.java' 中定义的一个 URI, 用于检查server端返回的 'code'与'state',并发起对 access_token 的调用

一个随机值, spring-oauth-server 将原样返回,用于检测是否为跨站请求(CSRF)等

最终发给 spring-oauth-server的 URL:
{{userAuthorizationUri}}?response_type={{responseType}}&scope={{scope}}&client_id={{clientId}}&redirect_uri={{redirectUri}}&state={{state}}


将重定向到 'spring-oauth-server' 的登录页面 GET

© 2013 - 2015 sz@monkeyk.com from spring-oauth-server