zoukankan      html  css  js  c++  java
  • 【笔记】springSecurity-OAuth2.0-授权模式演示

    SpringSecurityOauth2架构

    介绍


    流程:

    1. 用户访问,此时没有Token。Oauth2RestTemplate会报错,这个报错信息会被Oauth2ClientContextFilter捕获 并重定向到认证服务器
    2. 认证服务器通过Authorization Endpoint进行授权,并通过AuthorizationServerTokenServices生成授权码并返 回给客户端
    3. 客户端拿到授权码去认证服务器通过Token Endpoint调用AuthorizationServerTokenServices生成Token并返 回给客户端
    4. 客户端拿到Token去资源服务器访问资源,一般会通过Oauth2AuthenticationManager调用 ResourceServerTokenServices进行校验。校验通过可以获取资源。

    Spring Security Oauth2授权码模式

    介绍

    1.客户端进行申请第三方登陆信息

    2.申请完毕后得到client_id、Client-Secret、回调(申请时自己填入的)

    3.根据oauth2指定的uri来获取code码(用于获取access_token)

    请求固定地址

    http://localhost:8080/oauth/authorize?response_type=code&client_id=admin&redirect_uri=https://yangbuyi.top&scope=all

    参数介绍

      http://localhost:8080/oauth/authorize --- 固定的请求oauth地址
      response_type=code --- 必须带入的code指定
      client_id=admin --- 申请完毕后的clientID
      redirect_uri=https://yangbuyi.top  --- 成功跳转回调地址
      scope=all   --- 申请的权限范围 
    

    进行访问

    自定义配置的登陆逻辑


    登陆成功

    您是否授权“管理员”访问您的受保护资源?

    我们点击 · APProve · 授权

    进行跳转页成功获取到code

    获取Access_token

    我们进行复制下来刚刚的code参数,进行根据code获取 token

    http://localhost:8080/oauth/token --- 固定的oauth2.0请求地址

    开始组装请求参数

    {"key":"code","value":"4V3FwH","description":"","type":"text","enabled":true}
    {"key":"grant_type","value":"authorization_code","description":"","type":"text","enabled":true},{"key":"client_id","value":"admin","description":"","type":"text","enabled":true},{"key":"redirect_uri","value":"http://www.baidu.com","description":"","type":"text","enabled":true}

    成功获取token

    { "access_token": "96700ce5-dcd9-4994-9d7c-6fc6360ccde9", -- token 根据token访问资源服务器当中暴露的接口 "token_type": "bearer", "expires_in": 43199, "scope": "all" }

    定义暴露接口

    访问接口获取数据

    参数介绍:

    {
    "username": "user", -- 当前登陆授权服务器的用户名称
    "password": "$2a$10$YYUAulOW5xMNj6zDgfR03O9XuOTtNLyH6w3EM1sUGmyd/HxBf5XJi", --- 密码 加密后的
    "authorities": [
    {
    ---- 权限标识
    "authority": "admin"
    }
    ],
    "enabled": true,
    "accountNonLocked": true,
    "accountNonExpired": true,
    "credentialsNonExpired": true
    }

    总结

    从客户端访问指定uri获取code
    在根据code访问指定uri获取授权服务器的token
    在根据token访问指定uri获取资源服务器暴露接口数据

    和第三方QQ。。。等 相似

    完结

  • 相关阅读:
    <<卸甲笔记>>-基础语法对比
    <<卸甲笔记>>-Oracle线下迁移到PPAS
    How to use PEM of PPAS
    PPAS Migration Toolkit document
    PostgreSQL中数据库,表,等对象的oid与对象名的对应关系
    使用pgstatspack分析PostgreSQL数据库性能
    Postgres Plus Advanced Server installation
    Ways to access Oracle Database in PostgreSQL
    Some settings of PostgreSQL
    nginx内置变量
  • 原文地址:https://www.cnblogs.com/Yangbuyi/p/13557421.html
Copyright © 2011-2022 走看看