`
rensanning
  • 浏览: 3547384 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38126
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607209
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682199
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89282
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401743
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69672
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91673
社区版块
存档分类
最新评论

Spring Security OAuth2 Provider 之 整合JWT

 
阅读更多
OAuth2 是认证框架、JWT (JSON Web Tokens) 是认证协议。

相关文章:
Spring Security OAuth2 Provider 之 最小实现
Spring Security OAuth2 Provider 之 数据库存储
Spring Security OAuth2 Provider 之 第三方登录简单演示
Spring Security OAuth2 Provider 之 自定义开发
Spring Security OAuth2 Provider 之 整合JWT

(1)Maven依赖

Authorization Server 和 Resource Server都需要添加依赖。

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-jwt</artifactId>
    <optional>true</optional>
</dependency>


(2)生成签名证书

生成证书
引用
# keytool -genkeypair -alias jwt-test -keyalg RSA -dname "CN=jwt,OU=ren,O=ren,L=china,S=china,C=CN" -keypass my_pass -keystore jwt-test.jks -storepass my_pass

把.jks文件放到Authorization Server 的 src/main/resources/jwt-test.jks

导出公钥
引用
# keytool -list -rfc --keystore jwt-test.jks | openssl x509 -inform pem -pubkey

把PUBLIC KEY部分复制到Resource Server 的 src/main/resources/public.txt

(3)认证服务端设置

@Bean
protected JwtAccessTokenConverter jwtTokenEnhancer() {
    KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory(new ClassPathResource("jwt-test.jks"), "my_pass".toCharArray());
    JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
    converter.setKeyPair(keyStoreKeyFactory.getKeyPair("jwt-test"));
    return converter;
}

@Bean
public TokenStore tokenStore() {
    return new JwtTokenStore(accessTokenConverter());
}


(4)资源服务端设置

@Bean
public JwtAccessTokenConverter accessTokenConverter() {
    JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
    Resource resource = new ClassPathResource("public.txt");
    String publicKey = null;
    try {
        publicKey = IOUtils.toString(resource.getInputStream());
    } catch (final IOException e) {
        throw new RuntimeException(e);
    }
    converter.setVerifierKey(publicKey);
    return converter;
}

@Bean
public TokenStore tokenStore() {
    return new JwtTokenStore(accessTokenConverter());
}


(5)确认测试

获取Token:


通过jwt.io确认Token:


通过access_token访问资源API:


(6)算法HS256
把Authorization Server 和 Resource Server的配置改成:
@Bean
protected JwtAccessTokenConverter accessTokenConverter() {
    JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
    converter.setSigningKey("rensanning");
    return converter;
}


获取Token:


通过jwt.io确认Token:


通过access_token访问资源API:


参考:
http://www.baeldung.com/spring-security-oauth-jwt
https://github.com/dynamind/spring-boot-security-oauth2-minimal
  • 大小: 107 KB
  • 大小: 47.2 KB
  • 大小: 94.1 KB
  • 大小: 106.5 KB
  • 大小: 31.9 KB
  • 大小: 67.4 KB
0
0
分享到:
评论
2 楼 bruce_ma 2017-09-07  
给你点个赞。这个系列的文章非常好。唯一的建议可能就是关于JWT的这部分,着实令人迷惑。如果是JWT,第(5)部分获取token那一段(或者说那个获取token的URL),描述得并不清楚。
1 楼 masuweng 2017-07-26  
         

相关推荐

    SpringSecurity+oauth2+jwt.docx

    《Spring Security + OAuth2 + JWT 实现Web安全认证》 在现代Web开发中,安全认证是不可或缺的一部分。Spring Security作为Java领域中强大的安全框架,配合OAuth2和JWT(JSON Web Token),可以构建出高效且安全的...

    springboot与security oauth2整合例子

    总之,"springboot与security oauth2整合例子"是一个实践性的教程,旨在帮助开发者理解如何在Spring Boot应用中集成OAuth2和JWT,以实现安全的、基于令牌的身份验证和授权。这个过程中涵盖了Spring Boot的快速启动...

    springboot+security+cas集成demo

    它提供了全面的安全性解决方案,包括HTTP基本认证、表单登录、OAuth2、JWT等多种认证方式,以及角色权限控制、访问决策管理等功能。Spring Security的核心组件包括过滤器链、安全上下文、访问决策器等。 CAS...

    Spring Security 学习总结1_3

    "springsecurity-namespace"可能指的是Spring Security的XML命名空间配置。在Spring Security的早期版本中,使用XML配置是最常见的实践。例如,你可能会看到以下片段: ```xml **" access="hasRole('ROLE_ADMIN')...

    spring-oauth2-login

    10. **Spring Boot**:Spring Boot简化了Spring应用的创建和配置,使得整合Spring Security和OAuth2变得更加容易。 11. **Filter Chain**:Spring Security通过一系列过滤器(Filter Chain)来处理HTTP请求,包括...

    SPRING SECURITY配置

    Spring Security还支持OAuth2,可以与其他服务进行安全交互,如Google、Facebook登录。 ### 8. 实战案例 - **防止CSRF攻击**:Spring Security默认开启CSRF保护,可通过配置禁用或调整策略。 - **RESTful API安全*...

    spring-security-core-3.1.0.RC1.jar

    随着版本的升级,Spring Security不断优化性能,增加了更多安全特性,如OAuth2支持、CAS集成、JWT支持等,以适应不断变化的安全需求。 总结,`spring-security-core-3.1.0.RC1.jar`作为Spring Security的核心库,是...

    spring-security文档和jar包

    1. **认证**:通过提供不同类型的Authentication Provider,如数据库、LDAP、Remember Me服务等,Spring Security实现了灵活的用户身份验证。 2. **授权**:基于Role的访问控制(RBAC)允许开发者定义角色和权限,...

    596392912-mica-master_java_

    总结,"596392912-mica-master_java_"项目为开发者提供了一个基于Spring Security OAuth的统一账号管理平台实例,它涵盖了OAuth 2.0的授权流程、Spring Security的扩展性、微服务架构下的应用等多个关键知识点。...

    xumumi-system-security:基于 Spring Security 开发的 jwt 安全模块

    【xumumi-system-security】是一个基于Spring Security框架开发的安全模块,专用于实现JWT(JSON Web Token)的身份验证和授权机制。在现代Web应用程序中,安全是至关重要的,Spring Security为开发者提供了一套强大...

    授权服务器:Spring Boot OAuth 2.0和OpenID Connect身份提供者授权服务器

    授权服务器兼容OAuth 2.0和OpenID Connect(OIDC)的授权服务器,仅用于演示目的,可用作OAuth2 / OIDC研讨会的一部分。目标此授权服务器应... 作为开源免费提供支持学习OAuth2 / OpenID Connect的努力(自学或作为...

    spring security 源码案例

    Spring Security 是一个强大的安全框架,用于Java应用的安全管理。它提供了认证、授权和访问控制功能,使得开发者可以轻松地在应用程序中实现复杂的安全需求。在这个源码案例中,你将有机会深入理解Spring Security...

    oauth-provider:具有弹簧启动安全性的OAuth2提供程序

    通过深入研究 `oauth-provider-master` 项目,你可以了解 OAuth2 协议的实际应用,以及如何将它与 Spring Boot 和 Kotlin 结合使用。此外,这将帮助你掌握如何构建安全的 API 并管理第三方访问权限,这对于任何现代 ...

    IPresto:使用Spring框架实现定制的Spring Security,Web服务的项目

    《使用Spring框架实现定制的Spring Security与Web服务》 在IT行业中,安全是任何应用程序的基础,尤其是对于Web服务而言。Spring框架,作为一个广泛使用的Java应用开发框架,提供了强大的安全组件——Spring ...

    spring安全机制文档

    - **API安全**:对于RESTful API,Spring Security提供了JWT令牌、OAuth2等安全策略。 - **Web安全增强**:包括XSS、CSRF、点击劫持等Web漏洞的防护。 总的来说,Spring Security为开发者提供了一整套工具,帮助...

    spring的最新特性介绍

    Spring Security 5.x引入了JWT(JSON Web Token)支持,提高了API安全性和移动应用的安全防护。同时,OAuth2.0和OpenID Connect的增强使得身份验证和授权更为便捷。 6. **Spring Cloud Function** 这是Spring的一...

    spring-framework-5.3.29.zip

    Spring Security是Spring生态中的安全组件,5.3.29版本提升了安全性,提供了更多的认证和授权选项,包括OAuth2、JWT等,同时也加强了CSRF(跨站请求伪造)防护。 七、测试支持 Spring Test模块为Spring应用提供了...

    spring_security_example

    Spring Security 提供了多种认证方式,如基于表单的登录、HTTP 基本身份验证、OAuth2 等。同时,它提供了细粒度的访问控制,允许开发者通过定义访问规则(如 @Secured 或 @PreAuthorize 注解)来限制对特定 URL 或...

    Spring Boot 视频

    3. **安全控制**:集成 Spring Security 实现用户认证与授权,理解 OAuth2、JWT 等安全协议。 4. **消息队列**:使用 RabbitMQ 或 Kafka 进行异步处理和消息通信。 5. **微服务**:构建分布式系统,使用 Spring ...

Global site tag (gtag.js) - Google Analytics