解析jwt

This commit is contained in:
winLsy
2018-01-21 19:43:28 +08:00
parent f21a6a156f
commit 0d0840edd7
3 changed files with 24 additions and 5 deletions
@@ -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");
}
}
}
@@ -44,7 +44,13 @@
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
</dependency>
</dependencies>
<!--jwt令牌解析-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
@@ -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;
}