| 
					
				 | 
			
			
				@ -1,16 +1,20 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.security.oauth2.provider.endpoint; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.login.BaseLoginLogDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.ResultStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.ObjEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.core.userdetails.jdbc.WlyyUserDetailsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.dao.OauthKeypairDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.login.service.BaseLoginLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.model.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.oauth2.core.redis.WlyyRedisVerifyCodeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.oauth2.provider.WlyyTokenGranter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.oauth2.provider.error.WlyyOAuth2ExceptionTranslator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.security.utils.SerializeUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.utils.security.RSAUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.map.HashedMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -45,6 +49,7 @@ import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpSession; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.security.KeyPair; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.security.PrivateKey; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.security.interfaces.RSAPrivateKey; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.security.interfaces.RSAPublicKey; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.SimpleDateFormat; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -52,6 +57,7 @@ import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.UUID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * <p> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -90,6 +96,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private StringRedisTemplate redisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseLoginLogService baseLoginLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private OauthKeypairDao oauthKeypairDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostConstruct 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void init() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -598,4 +606,49 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return response; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "/oauth/getHwlyyPublicKey", method = RequestMethod.GET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop getHwlyyPublicKey(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        KeyPair keyPair = com.yihu.jw.security.utils.RSAUtils.getKey(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        byte[] bytekey = SerializeUtil.ObjTOSerialize(keyPair); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        KeyPair key = (KeyPair)SerializeUtil.unSerialize(bytekey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        OauthKeypairDO keypairDO = new OauthKeypairDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        keypairDO.setCode("hwlyyKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        keypairDO.setKeyPair(bytekey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        oauthKeypairDao.save(keypairDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        OauthKeypairDO keypairDO = oauthKeypairDao.findByCode("hwlyyKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        KeyPair key = (KeyPair)SerializeUtil.unSerialize(keypairDO.getKeyPair()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        PublickeyVO pk = new PublickeyVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        pk.setPublicKey(com.yihu.jw.security.utils.RSAUtils.generateBase64PublicKey(key)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return ObjEnvelop.getSuccess("success", pk); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "/oauth/getHwlyyDecrypt", method = RequestMethod.POST) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop getHwlyyDecrypt(String openid,String idcard,String wechatId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,Object> rs = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OauthKeypairDO keypairDO = oauthKeypairDao.findByCode("hwlyyKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            KeyPair keyPair = (KeyPair)SerializeUtil.unSerialize(keypairDO.getKeyPair()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //解密openid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(org.apache.commons.lang3.StringUtils.isNotBlank(openid)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("openid",com.yihu.jw.security.utils.RSAUtils.decryptBase64(openid, keyPair)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("openid",openid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //解密idcard 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(org.apache.commons.lang3.StringUtils.isNotBlank(idcard)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("idcard",com.yihu.jw.security.utils.RSAUtils.decryptBase64(idcard, keyPair)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("idcard",idcard); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //解密wechatId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(org.apache.commons.lang3.StringUtils.isNotBlank(wechatId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("wechatId",com.yihu.jw.security.utils.RSAUtils.decryptBase64(wechatId, keyPair)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("wechatId",wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return ObjEnvelop.getSuccess("success", rs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |