| 
					
				 | 
			
			
				@@ -1,99 +1,26 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.auth.core.handler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.common.entity.HttpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.commons.collections.MapUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.http.HttpStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.ServletException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.http.HttpHeaders; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.http.MediaType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.authentication.BadCredentialsException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.security.core.Authentication; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.oauth2.common.OAuth2AccessToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.oauth2.provider.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.web.client.RestTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.ServletException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Base64; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuthenticationSuccessHandler { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private final static Logger logger = LoggerFactory.getLogger(BaseAuthenticationSuccessEventHandler.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private ClientDetailsService clientDetailsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private AuthorizationServerTokenServices defaultAuthorizationServerTokenServices; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private ObjectMapper objectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		logger.info("用户:{} 登录成功", authentication.getPrincipal()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		/*try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			String clientId = request.getParameter("clientId"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			String clientSecret = request.getParameter("clientSecret"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (clientId == null || clientSecret == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				throw new UnapprovedClientAuthenticationException("请求头中client信息为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			String base64ClientCredentials = Base64.getEncoder().encodeToString((clientId + ":" + clientSecret).getBytes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			HttpHeaders headers = new HttpHeaders(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			headers.add("Authorization", "Basic " + base64ClientCredentials); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ClientDetails clientDetails = clientDetailsService.loadClientByClientId(clientId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			TokenRequest tokenRequest = new TokenRequest(MapUtils.EMPTY_MAP, clientId, clientDetails.getScope(), "password"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			OAuth2Request oAuth2Request = tokenRequest.createOAuth2Request(clientDetails); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			OAuth2Authentication oAuth2Authentication = new OAuth2Authentication(oAuth2Request, authentication); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			OAuth2AccessToken oAuth2AccessToken = defaultAuthorizationServerTokenServices.createAccessToken(oAuth2Authentication); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			logger.info("获取token 成功:{}", oAuth2AccessToken.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			response.setContentType("application/json; charset=utf-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			HttpResponseResult result = new HttpResponseResult(true, HttpStatus.SC_OK, oAuth2AccessToken, ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			response.getWriter().write(objectMapper.writeValueAsString(result)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new BadCredentialsException("Failed to decode basic authentication token"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Decodes the header into a username and password. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @throws BadCredentialsException if the Basic header is not present or is not valid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 *                                 Base64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private String[] extractAndDecodeHeader(String header) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		byte[] base64Token = header.substring(6).getBytes("UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		byte[] decoded; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			decoded = Base64.getDecoder().decode(base64Token); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} catch (IllegalArgumentException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new BadCredentialsException("Failed to decode basic authentication token"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String token = new String(decoded, "utf-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		int delim = token.indexOf(":"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (delim == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new BadCredentialsException("Invalid basic authentication token"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return new String[] { token.substring(0, delim), token.substring(delim + 1) }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |