Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Cloud Security OAuth2 中实现简化模式(一)

Spring Cloud Security OAuth2 中实现简化模式(一)

原创
作者头像
堕落飞鸟
发布于 2023-04-13 11:40:51
发布于 2023-04-13 11:40:51
75300
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

OAuth2 简化模式(Implicit Grant Type)是一种较为简单的授权模式,适用于移动设备和 Web 应用等场景。在简化模式下,客户端通过跳转认证服务器的授权页面,获取用户授权,然后直接获得访问令牌,省略了授权码的环节。本文将详细介绍在 Spring Cloud Security OAuth2 中如何实现简化模式,并给出相应的示例代码。

简化模式流程

简化模式的流程如下:

  1. 客户端将用户导向认证服务器的授权页面。
  2. 用户在认证服务器上进行身份验证,并授权客户端访问受保护的资源。
  3. 认证服务器将访问令牌直接返回给客户端。
  4. 客户端使用访问令牌访问受保护的资源。

简化模式与授权码模式的区别在于,简化模式省略了步骤 2 中的授权码获取环节,直接将访问令牌返回给客户端。

简化模式的安全性

简化模式的安全性较授权码模式低,主要有以下两个原因:

  1. 访问令牌直接暴露在 URL 中,容易被窃取。
  2. 简化模式省略了授权码环节,无法校验客户端的身份。

为了提高简化模式的安全性,可以采取以下措施:

  1. 将访问令牌存储在客户端的 Session 中,而非 URL 中。
  2. 使用 HTTPS 协议加密通信,防止中间人攻击。

Spring Cloud Security OAuth2 实现简化模式

在 Spring Cloud Security OAuth2 中实现简化模式,需要进行以下几个步骤:

配置客户端

在客户端配置中,需要配置客户端 ID、回调地址和授权范围:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  security:
    oauth2:
      client:
        registration:
          my-client:
            client-id: my-client-id
            client-secret: my-client-secret
            authorization-grant-type: implicit
            redirect-uri: http://localhost:8080/callback
            scope: read

配置认证服务器

在认证服务器配置中,需要配置 AuthorizationEndpointTokenEndpointResourceServerTokenServices

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    private DataSource dataSource;

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.jdbc(dataSource);
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager)
                .userDetailsService(userDetailsService)
                .authorizationEndpoint()
                .authorizationRequestRepository(new HttpSessionOAuth2AuthorizationRequestRepository())
                .and()
                .tokenServices(tokenServices())
                .pathMapping("/oauth/token", "/login")
                .pathMapping("/oauth/authorize", "/oauth/authorize");
    }

    @Bean
    public AuthorizationServerTokenServices tokenServices() {
        DefaultTokenServices tokenServices = new DefaultTokenServices();
        tokenServices.setTokenStore(tokenStore());
        tokenServices.setSupportRefreshToken(true);
        tokenServices.setAccessTokenValiditySeconds(60 * 60 * 24);
        tokenServices.setRefreshTokenValiditySeconds(60 * 60 * 24 * 30);
        return tokenServices;
    }

    @Bean
    public TokenStore tokenStore() {
        return new JdbcTokenStore(dataSource);
    }

    @Override
    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
        security.tokenKeyAccess("permitAll()")
                .checkTokenAccess("isAuthenticated()")
                .allowFormAuthenticationForClients();
    }

}

其中,tokenServices() 方法用于配置 AuthorizationServerTokenServicestokenStore() 方法用于配置 TokenStoreconfigure(AuthorizationServerSecurityConfigurer security) 方法用于配置认证服务器的安全性,其中 allowFormAuthenticationForClients() 方法用于允许表单认证,即用户在认证服务器页面输入用户名和密码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Security OAuth2.0实现
OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。
兜兜转转
2023/03/29
3K0
Spring Security OAuth2.0实现
基于Spring Cloud Oauth2 JWT搭建微服务的安全认证中心
Oauth协议为用户资源的授权提供了一个安全的、开放而又建议的标准。oauth的授权不会是第三方初级到用户的账号信息(如用户名与密码),及第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此oauth是安全的。oauth是Open Authorization的简写
小东啊
2019/06/26
15.8K1
基于Spring Cloud Oauth2 JWT搭建微服务的安全认证中心
从零开始的Spring Security Oauth2(二)
本文开始从源码的层面,讲解一些spring Security Oauth2的认证流程。本文较长,适合在空余时间段观看。且涉及了较多的源码,非关键性代码以…代替。 获取token 上一篇博客中我们尝试使用了password模式和client模式,有一个比较关键的endpoint:/oauth/token。从这个入口开始分析,spring security oauth2内部是如何生成token的。 首先开启debug信息: logging: level: org.springframework: DEB
程序猿DD
2018/02/01
1.2K0
从零开始的Spring Security Oauth2(二)
Spring Security---Oauth2详解
在说明OAuth2需求及使用场景之前,需要先介绍一下OAuth2授权流程中的各种角色:
大忽悠爱学习
2021/12/07
4.8K0
Spring Security---Oauth2详解
实战:画了几张图,终于把OAuth2搞清楚了
对于身份认证和用户授权,之前写过几篇关于Shiro和Security的文章。从发送口令获取源码的反馈来看,大家还是比较认可的。今天给大家带来一种新的授权方式:oauth2。
阿Q说代码
2023/01/09
1.8K0
实战:画了几张图,终于把OAuth2搞清楚了
Spring Boot Security 整合 OAuth2 设计安全API接口服务
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文重点讲解Spring Boot项目对OAuth2进行的实现,如果你对OAuth2不是很了解,你可以先理解 OAuth 2.0 - 阮一峰,这是一篇对于oauth2很好的科普文章。
jwangkun
2021/12/23
1.1K0
Spring Boot Security 整合 OAuth2 设计安全API接口服务
零基础学习SpringSecurity OAuth2 四种授权模式(理论+实战)
前段时间有同学私信我,让我讲下Oauth2授权模式,并且还强调是零基础的那种,我也不太理解这个零基础到底是什么程度,但是我觉得任何阶段的同学看完我这个视频,对OAuth2的理解将会有很大的提升,并且也会熟练的使用SpringSecurity OAuth2,轻松搭建认证服务和资源服务。
AI码师
2022/09/19
1K0
零基础学习SpringSecurity OAuth2 四种授权模式(理论+实战)
Spring Cloud Security的核心组件-OAuth2示例
下面我们通过一个基于 Spring Cloud Security 的 OAuth2 示例来演示 OAuth2 的工作流程。
堕落飞鸟
2023/04/13
4660
Spring Cloud OAuth2 实现用户认证及单点登录
OAuth 2 有四种授权模式,分别是授权码模式(authorization code)、简化模式(implicit)、密码模式(resource owner password credentials)、客户端模式(client credentials),具体 OAuth2 是什么,可以参考这篇文章。(http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html)
古时的风筝
2019/10/24
2.1K0
Spring Cloud OAuth2 实现用户认证及单点登录
OAuth2.0实战案例(二)搭建认证服务,就是这个服务里面就是来颁发token
我们的整个项目就是B系统,之前已经创建了资源服务,意思是以后想要访问资源服务里面的东西,要被OAuth2.0管理。
一写代码就开心
2020/11/20
1.2K0
OAuth2.0实战案例(二)搭建认证服务,就是这个服务里面就是来颁发token
Spring Cloud Security OAuth2 中实现客户端模式
OAuth2客户端模式是OAuth2的一种授权模式,它适用于客户端与服务端之间的授权场景,例如第三方应用程序需要访问受保护的资源时。客户端模式不需要用户的参与,客户端通过自身的身份认证向授权服务器申请访问令牌,然后使用访问令牌来访问受保护的资源。
堕落飞鸟
2023/04/14
6.6K0
Spring Security OAuth2 Demo
Spring Security OAuth2 Demo 项目使用的是MySql存储, 需要先创建以下表结构: CREATE SCHEMA IF NOT EXISTS `alan-oauth` DEFAULT CHARACTER SET utf8 ; USE `alan-oauth` ; -- ----------------------------------------------------- -- Table `alan-oauth`.`clientdetails` -- -------------
庞小明
2018/03/08
2.5K0
Spring Security OAuth2 Demo
Spring Security 系列(2) —— Spring Security OAuth2
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
求和小熊猫
2022/06/30
6.4K0
SpringBoot2 整合OAuth2组件,模拟第三方授权访问
验证第三方服务的身份,验证邮箱用户的身份,记录和管理认证Token,为资源服务器提供Token校验。场景:第三方网站借助用户的邮箱登录,并访问邮箱账户的基础信息,头像、名称等。
知了一笑
2020/12/28
9110
SpringBoot2 整合OAuth2组件,模拟第三方授权访问
SpringCloud Alibaba微服务实战十八 - Oauth2.0 自定义授权模式
那么如何新增一个自定义的授权模式,比如像下面这样根据手机号和短信验证码进行登录呢?
JAVA日知录
2020/07/31
2.6K0
SpringCloud Alibaba微服务实战十八 - Oauth2.0 自定义授权模式
聊聊spring security oauth2的password方式的认证
本文主要来聊聊spring security oauth2的password方式的认证
code4it
2018/09/17
2.5K0
SpringBoot的Security和OAuth2的使用
然后编写pom文件如下,引入spring-boot-starter-security,我这里使用的spring boot是2.4.2,这里使用使用spring-boot-dependencies,在这里就能找到对应的security的包。
Kiba518
2024/06/18
3510
SpringBoot的Security和OAuth2的使用
Oauth 2.0 详解
1. Oauth2简介 简介 第三方认证技术方案最主要是解决认证协议的通用标准问题,因为要实现跨系统认证,各系统之间要 遵循一定的接口协议。 OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以 使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。 业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的 时间,因而OAUTH是简易的。 互联网很多服务如Open A
BUG弄潮儿
2023/02/24
2.1K0
Oauth 2.0 详解
整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点:
庞小明
2018/07/30
1.9K1
Spring Security 在 Spring Boot 中使用 OAuth2【分布式】
  OAuth(开放授权,Open Authorization)是一个开放标准,为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的。OAuth 2.0 是 OAuth 协议的延续版本,但不向后兼容 OAuth 1.0 即完全废止了 OAuth 1.0。很多大公司如 Google,Yahoo,Microsoft 等都提供了 OAuth 认证服务,这些都足以说明 OAuth 标准逐渐成为开放资源授权的标准。Oauth 协议目前发展到 2.0 版本,1.0 版本过于复杂,2.0 版本已得到广泛应用。Spring-Security-OAuth2 是对 OAuth2 的一种实现,并且跟 Spring Security 相辅相成,与 Spring Cloud 体系的集成也非常便利,最终使用它实现分布式认证授权解决方案。
Demo_Null
2020/10/30
7.2K0
Spring Security 在 Spring Boot 中使用 OAuth2【分布式】
推荐阅读
相关推荐
Spring Security OAuth2.0实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验