zoukankan      html  css  js  c++  java
  • Spring oauth大致流程

    Spring oauth大致流程,主要分为以下三步:

     

    <1>登陆并授权,获取oauth_code

    http://localhost:8081/api/oauth/authorize?client_id=1234&redirect_uri=http://localhost:8080/web/oauth/info&response_type=code&scope=read

     

    forward:/oauth/confirm_access  --> /api/oauth/authorize

     

    userApprovalHandler会来判断是否转到授权页面,这个Handler有几种实现:

    ApprovalStoreUserApprovalHandler: 如果已存在有效的oauth_access_token,并且url中的scope是authentication中scope的子集,则无需授权

    DefaultUserApprovalHandler:每次都需要授权

     

    授权成功后会生成oauth_code,如果用的是jdbc方式,会存入数据库。

    oauth_code不会过期

     

    <2> 用oauth_code换取acceess_token

    http://localhost:8081/api/oauth/token?client_id=1234&client_secret=1234&grant_type=authorization_code&code=CbF1Af&redirect_uri=http://localhost:8080/web/oauth/info

     

    如果oauth_access_token有相应用户的记录,则获取原记录的access_token(在没过期的情况下)

    成功换取access_code后,如果用jdbc方式,会存入oauth_access_token,并且删除oauth_code中对应的记录

    如果需要开启refresh_token,需要在oauth_client_detail的authorized_grant_types中加入refresh_token

     

    <3>资源访问

     http://localhost:8081/api/v1/user/identity/aaaa?access_token=8bd008e2-a2bf-4bfd-8cce-6a6ce4ccee0e

    根据配置的voters来决定用户是否有访问资源的权限

    如果有voter投了否决,则不能访问;

    如果没有任何voter否决,且有voter同意,则能访问;

    如果没有任何voter否决或同意,则根据配置的allowIfAllAbstainDecisions来决定是否允许访问

     

    原生RoleVoter要验证authorization中的角色名称是否和资源的access角色相符

    登陆时,如果对应用户在oauth_access_token中已存在有效数据(非过期),就会把authorization取出来,放到框架的context中去

    需要扩展DefaultTokenServices 的createAccessToken方法,增加替换token机制,后续会塞进context,SecurityContextHolder.getContext().setAuthentication(userAuthentication)

  • 相关阅读:
    第四次博客作业结对项目
    centos7 python3 安装paramiko模块
    zabbix启动报错:“No space left on device: AH00023”
    zabbix监控历史数据清理过程
    zabbix:登录页面是显示Database:Error connecting to database: Access denied for user 'zabbix' @ 'localhost'
    解决:Linux漏洞目标主机showmount e信息泄露(CEE19990554)
    关于Sentaurus的日常(二)(Carrier Transport Models)
    SQLITE3
    Dos命令大全完整版
    四级菜单实现(Python)
  • 原文地址:https://www.cnblogs.com/jerryshi1988/p/7249272.html
Copyright © 2011-2022 走看看