微服务中,服务熔断和服务降级的区别

相同点

  1. 目的很一致,都是从可用性可靠性着想,为防止系统的整体缓慢甚至崩溃,采用的技术手段;
  2. 最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用;
  3. 粒度一般都是服务级别,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改);
  4. 自治性要求很高,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能,开关预置、配置中心都是必要手段
阅读更多   2019/7/31 posted in  SpringCloud

Spring Cloud中如何保证各个微服务之间调用的安全性

2019/7/13 posted in  SpringCloud

Spring Security OAuth2

授权模式

从阮一峰的教程中,可以看到授权模式有四种:

  • authorization_code (授权码)
  • implicit (隐式许可)
  • password (用户名和密码)
  • client_credentials (客户端凭证)

OAuth2服务提供方的实现

OAuth2中,有 Authorization Server和Resource Server。通常情况下,我们可以把这两个Server包含在一个应用中。

spring security中, org.springframework.security.oauth2.provider包下都是OAuth2服务提供方的实现所需要的类。

两个核心类,AuthorizationEndpoint的用途是请求者用来获取授权,TokenEndpoint的用途是请求者用来获取Token的。

服务配置过程

EnableAuthorizationServer

EnableAuthorizationServer注解用来配置Authorization Server。

这个注解引入两个配置类AuthorizationServerEndpointsConfiguration和AuthorizationServerSecurityConfiguration。

AuthorizationServerEndpointsConfiguration中初始化了各种endpoint:

其中包括AuthorizationEndpoint,TokenEndpoint,CheckTokenEndpoint,WhitelabelApprovalEndpoint,WhitelabelErrorEndpoint。

从各种endpoint来看,spring security帮我们定义好了如下几个uri对应的服务。

/oauth/authorize:授权

/oauth/token:令牌

/oauth/confirm_access:用户确认授权提交

/oauth/error:授权服务错误信息

/oauth/check_token:用于资源服务访问的令牌解析

/oauth/token_key:提供公有密匙的端点,如果你使用JWT令牌的话

AuthorizationServerSecurityConfiguration引入了配置类ClientDetailsServiceConfiguration和AuthorizationServerEndpointsConfiguration。并且
ClientDetailsServiceConfiguration

EnableResourceServer

EnableResourceServer引入了ResourceServerConfiguration配置

2019/5/9 posted in  SpringCloud