From 0d0840edd7dda707a194e4023c3222035fff5cce Mon Sep 17 00:00:00 2001 From: winLsy <18332763730@163.com> Date: Sun, 21 Jan 2018 19:43:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90jwt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthorizationProviderConfig.java | 6 +++--- .../boot-starter-security-demo/pom.xml | 8 +++++++- .../demo/controller/RestfulController.java | 15 ++++++++++++++- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java index 2b1a00e..d374ac4 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java +++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java @@ -74,7 +74,6 @@ public class AuthorizationProviderConfig extends AuthorizationServerConfigurerAd endpoints.tokenEnhancer(enhancerChain) .accessTokenConverter(jwtAccessTokenConverter); } - super.configure(endpoints); } /** @@ -90,8 +89,9 @@ public class AuthorizationProviderConfig extends AuthorizationServerConfigurerAd builder.withClient(client.getClientId()).secret(client.getClientSecret()) .accessTokenValiditySeconds(client.getAccessTokenValiditySeconds()) .authorizedGrantTypes("refresh_token","password") - .scopes("all","read","write") - .and(); + //refreshToken的过期时间,refreshToken是用来在用户无感知的情况下换取token的 + .refreshTokenValiditySeconds(2592000) + .scopes("all","read","write"); } } } diff --git a/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml b/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml index 0713b3c..345feac 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml +++ b/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml @@ -44,7 +44,13 @@ com.github.tomakehurst wiremock - + + + io.jsonwebtoken + jjwt + 0.7.0 + + diff --git a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java index 509af26..0e89cad 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java +++ b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java @@ -1,12 +1,19 @@ package com.micro.fast.security.demo.controller; import com.fasterxml.jackson.annotation.JsonView; +import com.micro.fast.security.core.master.SecurityProperties; import com.micro.fast.security.demo.pojo.User; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; @@ -14,11 +21,17 @@ import java.util.List; @RestController @RequestMapping("/user") public class RestfulController { + @Autowired + private SecurityProperties securityProperties; @GetMapping("/{id:\\d+}")//使用正则表达式指定传入的参数只能是数字 @JsonView(User.DetailView.class) - public User getInfo(@PathVariable("id") String id){ + public User getInfo(@PathVariable("id") String id, HttpServletRequest request) throws UnsupportedEncodingException { User user = new User("tom"); + String authorization = request.getHeader("Authorization"); + String token = StringUtils.substringAfter(authorization, "bearer "); + //解析jwt + Claims body = Jwts.parser().setSigningKey(securityProperties.getOauth2().getJwtSigningKey().getBytes("UTF-8")).parseClaimsJws(token).getBody(); return user; }