# spring-security-jwt **Repository Path**: felord/spring-security-jwt ## Basic Information - **Project Name**: spring-security-jwt - **Description**: jwt 实现 ,兼容 最新的Spring Security OAuth2 Client 和 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2021-03-27 - **Last Updated**: 2022-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Security JWT 增强 兼容最新的Spring Security OAuth2 Client 和 Spring Authorization Server > 请注意:这里仅仅是JWT的实现和兼容性改进,别怪我没告诉你。 ## 使用方法 将[Spring Security](https://gitee.com/felord/security-learning)中的JWT部分替换即可。 ## 如何学习 参见本项目单元测试。 ## Keytool keytool证书生成命令 注意修改路径 参数自己根据需要定义 ``` keytool -genkey -alias felordcn -keyalg RSA -storetype PKCS12 -keysize 2048 -validity 365 -keystore /yourpath/keystores/felordcn.jks -storepass 123456 -dname "CN=(cn.felord), OU=(cn.felord), O=(cn.felord), L=(zz), ST=(hn), C=(cn)" ``` ## JWT ``` eyJraWQiOiJmZWxvcmRjbiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJhbGwiLCJhdWQiOiJ1c2VyaWQiLCJpc3MiOiJodHRwczpcL1wvZmVsb3JkLmNuIiwic2NvcGVzIjpbIlJPTEVfQURNSU4iLCJST0xFX0FQUCJdLCJleHAiOjE2MTc0Mzk3MzUsImlhdCI6MTYxNjgzNDkzNSwianRpIjoiYmZmMjk0NTItZWQzMi00MTJkLTkwODUtMDA5MWUxMDIxOThlIn0.HUP651zy3yCIHbKsfAVDC6IbIa2MeNUx9EgZ9rUQQQ9q88-iyqzB5hTMIjCmKbhei8jyxKoYtu_dI4_-lXqjG5OHUVMeCPdEqB1VN4aTVbe9lM9WcH7rA8Pm2_kCnlbZrVuc95SBOhCExfxkETk1CbTx03B4sdxN_E_GaCEOwYgc9sDf1uz0vs6PscjDxqKlE19yhC5MyraTmoeIfgpJUPEhdI-7-8XK4nc0JkeJ2FOsmVNEcX0kcCuhb_wT3qYCX_ZUp2mGLYROk1N6jOFl5Rusd8H1Zaeif27Ipqeoh2x8NbSh8gqs6rx44mQBQCcy_YBeyWISZbhDcwt1aewYxg ``` ## 最终成品 `OAuth2AccessTokenResponse` 对象: ```json { "accessToken": { "tokenValue": "eyJraWQiOiJmZWxvcmRjbiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJhbGwiLCJhdWQiOiJyb290IiwiaXNzIjoiaHR0cHM6XC9cL2ZlbG9yZC5jbiIsInNjb3BlcyI6WyJST0xFX0FETUlOIiwiUk9MRV9BUFAiXSwiZXhwIjoxNjE2ODM4NTg4LCJpYXQiOjE2MTY4MzQ5ODgsImp0aSI6IjBiYTUwZjFhLTI0N2YtNDJlYi05NzZiLTkyZWM5NDg2YjA2MCJ9.dwUK4ZgqhalKWu5AA8ZqaHjD2WPerhiF8lmybZGAorbncWdfVk7iAKUdRZunUekZmab_FsVpwprWIQpqSLtp6tz28sI71gO2StEeye5Vv4JRZKys68q2LGOAqMVJnBisEl211b5ASHSlP1qleU_TDxO_rgems76ZFD-kc1KmyelsoiBhmT3aD2_A_3fUmH7mV0jnC0rHauzOpS0AWnuPJaXbGPqrWotkQ_oqly47jipfNsPl_PUY1urng1wSx4QyblS8UgK-n5wJABhSN550WlwNLuC10ZckbhE5gazM0mD86mA_Xepe7LY5rjGNvO-Cz9k44TaURnTdSBdyy_EOiQ", "issuedAt": { "epochSecond": 1616834988, "nano": 891000000 }, "expiresAt": { "epochSecond": 1616838588, "nano": 891000000 }, "tokenType": { "value": "Bearer" }, "scopes": [ "ROLE_ADMIN", "ROLE_APP" ] }, "refreshToken": { "tokenValue": "eyJraWQiOiJmZWxvcmRjbiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJhbGwiLCJhdWQiOiJyb290IiwiaXNzIjoiaHR0cHM6XC9cL2ZlbG9yZC5jbiIsInNjb3BlcyI6WyJST0xFX0FETUlOIiwiUk9MRV9BUFAiXSwiaWF0IjoxNjE2ODM0OTg4LCJqdGkiOiI3N2RhODk3NC0xMjM0LTQ5NzctOWU1MS1hOGY2NTdjMzA2NjAifQ.O9YYxkevkrTke7GbK2R5LGphnJ9vd07yFSwPs2gEZ94ObPkIs1wJ5gvlNOIlni_BYMNO-nMB8TiX0w-RQSwo-sbVLqeUHqv6NEXXmPJiWVmXTFVJf2b6lqW5Re7clXGvkFMw14ptAF6cpThDEE5XF4eCI8CDKKPWqNxY-8NvokwIY3NMXB1ofuHHRqjMyVUwNjOv6eaTJFTwebPy6Saem9kvaL_X1v9Drok6azbg5DSP1zKnbVazTaOs4aBZd5Firib3r_BGXdaJWAgJKfpP61__muVdujgkppMVU8fC9pqfnb6IqEaAOIZ69lrezA1K0QFinOhgcC2YZFxFoLL-IQ", "issuedAt": { "epochSecond": 1616834988, "nano": 891000000 }, "expiresAt": null }, "additionalParameters": {} } ```