|
@ -1,16 +1,17 @@
|
|
|
package com.yihu.jw.security.oauth2.provider.endpoint;
|
|
|
|
|
|
import com.yihu.jw.restmodel.base.wx.WxTemplateConfigVO;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
|
import com.yihu.jw.restmodel.web.ObjEnvelop;
|
|
|
import com.yihu.jw.security.core.userdetails.jdbc.WlyyUserDetailsService;
|
|
|
import com.yihu.jw.security.model.Captcha;
|
|
|
import com.yihu.jw.security.model.Oauth2Envelop;
|
|
|
import com.yihu.jw.security.model.PublicKey;
|
|
|
import com.yihu.jw.security.model.WlyyUserSimple;
|
|
|
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.utils.security.RSAUtils;
|
|
|
import org.apache.commons.codec.binary.Base64;
|
|
|
import org.apache.commons.codec.binary.Hex;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@ -45,6 +46,7 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
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;
|
|
@ -121,12 +123,14 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
|
if (StringUtils.isEmpty(parameters.get("captcha"))) {
|
|
|
parameters.put("grant_type", "password");
|
|
|
//解密密码
|
|
|
// if (parameters.get("password") != null) {
|
|
|
if (parameters.get("password") != null) {
|
|
|
// RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)httpSession.getAttribute("privateKey");
|
|
|
//// byte[] en_data = Hex.decodeHex(parameters.get("password").toCharArray());
|
|
|
//// parameters.put("password", RSAUtils.decryptByPrivateKey(new String(en_data), rsaPrivateKey));
|
|
|
// parameters.put("password", RSAUtils.decryptByPrivateKey(new String(Base64.decodeBase64(parameters.get("password"))), rsaPrivateKey));
|
|
|
// }
|
|
|
KeyPair keyPair = (KeyPair)httpSession.getAttribute("privateKey");
|
|
|
// parameters.put("password", RSAUtils.decryptByPrivateKey(parameters.get("password"), rsaPrivateKey));
|
|
|
String password = com.yihu.jw.security.utils.RSAUtils.decryptBase64(parameters.get("password"),keyPair);
|
|
|
parameters.put("password",password);
|
|
|
// parameters.put("password", RSAUtils.decryptByPrivateKey(parameters.get("password"), rsaPrivateKey));
|
|
|
}
|
|
|
} else {
|
|
|
parameters.put("grant_type", "captcha");
|
|
|
}
|
|
@ -249,8 +253,12 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
|
RSAPublicKey rsaPublicKey = (RSAPublicKey) map.get("public");
|
|
|
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) map.get("private");
|
|
|
PublicKey publicKey = new PublicKey();
|
|
|
publicKey.setModulus(Base64.encodeBase64String(rsaPublicKey.getModulus().toByteArray()));
|
|
|
publicKey.setExponent(Base64.encodeBase64String(rsaPublicKey.getPublicExponent().toByteArray()));
|
|
|
|
|
|
publicKey.setModulus(rsaPublicKey.getModulus().toString(16));
|
|
|
publicKey.setExponent(rsaPublicKey.getPublicExponent().toString(16));
|
|
|
|
|
|
// publicKey.setModulus(Base64.encodeBase64String(rsaPublicKey.getModulus().toByteArray()));
|
|
|
// publicKey.setExponent(Base64.encodeBase64String(rsaPublicKey.getPublicExponent().toByteArray()));
|
|
|
// publicKey.setModulus(new String(Hex.encodeHex(rsaPublicKey.getModulus().toByteArray())));
|
|
|
// publicKey.setExponent(new String(Hex.encodeHex(rsaPublicKey.getPublicExponent().toByteArray())));
|
|
|
httpSession.setAttribute("privateKey", rsaPrivateKey);
|
|
@ -266,6 +274,15 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
|
|
|
return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK);
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/oauth/getPublicKey", method = RequestMethod.GET)
|
|
|
public ObjEnvelop<PublickeyVO> getPublicKey(HttpSession httpSession, HttpServletResponse httpServletResponse){
|
|
|
KeyPair keyPair = com.yihu.jw.security.utils.RSAUtils.getKey();
|
|
|
httpSession.setAttribute("privateKey", keyPair);
|
|
|
PublickeyVO pk = new PublickeyVO();
|
|
|
pk.setPublicKey(com.yihu.jw.security.utils.RSAUtils.generateBase64PublicKey(keyPair));
|
|
|
return ObjEnvelop.getSuccess("success",pk);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取验证码
|
|
|
* @param parameters
|