• OAuth2学习笔记


    参考:https://aaronparecki.com/oauth-2-simplified/

    1、角色定义

    应用程序(客户)

           需要获取用户的账号信息,获得相关权限。

    API服务器

           资源服务器就是API服务器,用于获得用户的信息。

    授权服务器

           为用户提供交互界面,确认授权请求。一般来说,和API 服务器是同一台服务器。

    用户

           可对外提供部分账户信息的人。

    2、创建APP

    注册APP信息,一般包括名称,网站和重定向地址。

    任何Http重定向地址都必须是使用TLS安全协议的,意味着地址以https开头。原生应用的重定向地址可以使用一个自定义的URL方案,例如demoapp://redirect。

    3、Authorization Code授权方式

    3.1、Web服务器应用

    逻辑代码运行在服务器上。

    创建一个登陆的连接:

    https://oauth2server.com/auth?response_type=code&

      client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=photos&state=1234zyx

    code:代表Web服务器希望能获得一个authorization code。

    scope: 一个或多个希望获取的账号部分信息。

    state: 一个随机生成的,用于验证的字符串。

    如果用户同意授权,则返回以下链接:

    https://oauth2client.com/cb?code=AUTH_CODE_HERE&state=1234zyx

    code: 代表返回的authorization code。

    state: 返回和请求相同的验证字符串。

    Web服务器通过authorization code获得访问令牌。

    POST https://api.oauth2server.com/token
      grant_type=authorization_code&
      code=AUTH_CODE_HERE&
      redirect_uri=REDIRECT_URI&
      client_id=CLIENT_ID&
      client_secret=CLIENT_SECRET

    正常的话,授权服务器会返回令牌和超时时间。

    {
      "access_token":"RsT5OjbzRn430zqMLgV3Ia",
      "expires_in":3600
    }

    3.2、单页面应用程序

    和WebServer应用过程一致,唯一区别在于最后获取令牌时,不提供client secret。

    3.3、移动应用

    创建一个登陆的链接,链接到授权服务器的原生应用或者授权Web页面。

    3.3.1 、原生应用

    重定向地址方案需要在移动操作系统中注册,绑定到新建的移动应用。

    fbauth2://authorize?response_type=code&client_id=CLIENT_ID
      &redirect_uri=REDIRECT_URI&scope=email&state=1234zyx

    假如授权服务器支持PKCE扩展,还需要提供以下两个参数。

    code_chanllenge

    code_chanllenge_method

    3.3.2、授权Web页面

    使用移动操作系统的标准浏览器。

    获取令牌时,如果用到了PKCE扩展,则必须提供code_verifier,即code_chanllenge的未哈希前的原文。

    4、Password授权方式

    直接通过用户名和密码获取令牌。一般用于由授权方创建的应用。

    POST https://api.oauth2server.com/token
      grant_type=password&
      username=USERNAME&
      password=PASSWORD&
      client_id=CLIENT_ID

    5、Application access授权方式

    应用使用自身的注册信息登录。

    POST https://api.oauth2server.com/token
        grant_type=client_credentials&
        client_id=CLIENT_ID&
        client_secret=CLIENT_SECRET
  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/luwl/p/7483982.html
Copyright © 2020-2023  润新知