spring-cloud-stream-binder-memory

Memory queue implement for spring cloud stream application

License

License

GroupId

GroupId

com.labijie
ArtifactId

ArtifactId

spring-cloud-stream-binder-memory
Last Version

Last Version

1.1.0
Release Date

Release Date

Type

Type

jar
Description

Description

spring-cloud-stream-binder-memory
Memory queue implement for spring cloud stream application
Project URL

Project URL

https://github.com/endink/spring-cloud-stream-binder-memory
Source Code Management

Source Code Management

https://github.com/hongque-pro/infra-oauth2

Download spring-cloud-stream-binder-memory

How to add to project

<!-- https://jarcasting.com/artifacts/com.labijie/spring-cloud-stream-binder-memory/ -->
<dependency>
    <groupId>com.labijie</groupId>
    <artifactId>spring-cloud-stream-binder-memory</artifactId>
    <version>1.1.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.labijie/spring-cloud-stream-binder-memory/
implementation 'com.labijie:spring-cloud-stream-binder-memory:1.1.0'
// https://jarcasting.com/artifacts/com.labijie/spring-cloud-stream-binder-memory/
implementation ("com.labijie:spring-cloud-stream-binder-memory:1.1.0")
'com.labijie:spring-cloud-stream-binder-memory:jar:1.1.0'
<dependency org="com.labijie" name="spring-cloud-stream-binder-memory" rev="1.1.0">
  <artifact name="spring-cloud-stream-binder-memory" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.labijie', module='spring-cloud-stream-binder-memory', version='1.1.0')
)
libraryDependencies += "com.labijie" % "spring-cloud-stream-binder-memory" % "1.1.0"
[com.labijie/spring-cloud-stream-binder-memory "1.1.0"]

Dependencies

runtime (4)

Group / Artifact Type Version
org.jetbrains.kotlin : kotlin-stdlib jar 1.4.10
org.jetbrains.kotlin : kotlin-reflect jar 1.4.10
org.springframework.cloud : spring-cloud-stream jar
org.slf4j : slf4j-api jar 1.7.30

Project Modules

There are no modules declared in this project.

基础组件包

maven central version workflow status license

引入依赖(Gradle)

    compile "com.labijie.infra:oauth2-starter:$infra_oauth2_version"

扩展 Spring Cloud OAuth2 能力,极大的简化 Spring Security 使用。

如何实现一个 OAuth2 授权服务器?

屏蔽所有复杂的细节,当你需要一个OAuth2 服务器时,你只需要三个步骤:

  1. 实现 IIdentityService 接口作为一个 Bean 注册给 Spring
  2. 实现 IClientDetailsServiceFactory 接口作为一个 Bean 注册给 Spring
  3. 在你的启动程序注解 @EnableOAuth2Server, 如下:
@EnableOAuth2Server(OAuth2ServerType.Authorization)
@SpringBootApplication
class DummyAuthServer

如何实现一个使用上面的 OAuth2 授权服务器授权的资源服务器?

在你的启动程序注解 @EnableOAuth2Server, 如下:

@EnableOAuth2Server(OAuth2ServerType.Resource)
@SpringBootApplication
class DummyResourceServer

如何是一个OAuth2 服务器同时本身又包含需要授权的资源?

参见 OAuth2 授权服务器实现步骤 1、 2 , 在第 3 步时稍微改一下注解:

@EnableOAuth2Server(OAuth2ServerType.Authorization, OAuth2ServerType.Resource)
@SpringBootApplication
class DummyAuthServer

灵活切换 JWT, Memory, Redis 的 OAuth2 Token 存储实现:

  • Jwt:
@EnableOAuth2Server(OAuth2ServerType.Authorization, tokeStore = TokenStoreType.Jwt)
class DummyAuthServer

Jwt 是默认实现,可以省略 tokeStore 参数

  • InMemory:
@EnableOAuth2Server(OAuth2ServerType.Authorization, tokeStore = TokenStoreType.InMemory)
class DummyAuthServer
  • Redis:
@EnableOAuth2Server(OAuth2ServerType.Authorization, tokeStore = TokenStoreType.Redis)
class DummyAuthServer

如何实现真正的两段身份验证?

2FAC 逻辑:可以强制用户必须两端认证登录,先输入用户名、密码,获得一般权限 token (1段 Token); 验证通过可以有限的访问资源,一些敏感资源,如取现接口、删除数据接口要求用户使用1段 token 以短信、邮件等方式来交换2段 token 以获得无限制的访问权限。

扩展 Spring 加入 twoFactorRequired 方法:

class ResourceServerConfigurer : ResourceServerConfigurerAdapter() {
    override fun configure(resources: ResourceServerSecurityConfigurer) {
        resources.resourceId("test")
    }

    @Throws(Exception::class)
    override fun configure(http: HttpSecurity) {
        http.requestMatchers().anyRequest()
                .and()
                .anonymous()
                .and()
                .authorizeRequests()
                .antMatchers("/2f").twoFactorRequired()
                .antMatchers("/**").authenticated()
    }
}

更多能力

  • 同一个接口即可实现 Token 中插入自定义字段,直接通过 token 访问该字段以减少数据库查询
  • Resource Token 缓存,减少和 OAuth 服务器的交互(oauth2-resource-token-starter)

开发环境兼容性:

组件 版本 说明
kotlin 1.4.10
jdk 1.8
spring boot 2.3.4.RELEASE
spring cloud Hoxton.SR8 通过 BOM 控制版本,因为 cloud 组件版本混乱,无法统一指定
spring framework 5.2.9.RELEASE
spring dpendency management 1.0.10.RELEASE

发布到自己的 Nexus

在项目根目录下新建 gradle.properties 文件,添加如下内容

PUB_USER=[nexus user name]
PUB_PWD=[nexus password]
PUB_URL=http://XXXXXXX/repository/maven-releases/

运行 gradle publish

com.labijie

Red Sparrow

红雀小队

Versions

Version
1.1.0
1.0.1
1.0.0