zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Codeforces 1105
    Codeforces 1138
    Codeforces 1111
    【Linux远程连接工具】Xshell、Xftp家庭/学生版(免费使用)
    使用ssh localhost命令,发生异常ssh: connect to host localhost port 22: Connection refused
    【终端使用】拷贝和移动文件
    【终端使用】文件、目录的创建和删除
    【终端使用】切换目录
    【终端使用】"ls"命令,查看目录内容
    【终端使用】终端命令的格式
  • 原文地址:https://www.cnblogs.com/luwl/p/7483982.html
Copyright © 2011-2022 走看看