SpringBoot整合滑动验证

更新时间:2023-06-15 01:17:30 阅读: 评论:0

SpringBoot整合滑动验证
极验是⼀种利⽤⽣物特征与⼈⼯智能技术解决⼈机交互安全问题的技术,旨在解决安全验证问题,例如:账号登录、短信验证、批量注册等,⽬前极验、⽹易易盾⽐较出众。
在这⾥主要使⽤的极验Geetest和springboot 框架整合。
1.⾸先到极验官⽹注册账号获取ID和KEY,这⾥赘述。
2.到极验官⽹下载,使⽤SDK,,如果你使⽤时Git⼯具,
3.引⼊SDK到Springboot项⽬中
将sdk项⽬⽬录下的GeetestLib.java⽂件拷⼊您的项⽬Untils⽬录中,代码如下:
package com.blog.utils;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;steve young
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.HttpURLConnection;
import java.URL;
import java.curity.MessageDigest;
import java.curity.NoSuchAlgorithmException;
import java.util.HashMap;
/**
* 极验核⼼⽂件
*
*/
public class GeetestLib {
protected final String verName = "4.0";
protected final String sdkLang = "java";
protected final String apiUrl = "";
protected final String registerUrl = "/register.php";
for androidprotected final String validateUrl = "/validate.php";
protected final String json_format = "1";
/**
* 极验验证⼆次验证表单数据 chllenge
*/
public static final String fn_geetest_challenge = "geetest_challenge";
/
**
* 极验验证⼆次验证表单数据 validate
*/
public static final String fn_geetest_validate = "geetest_validate";
/**
* 极验验证⼆次验证表单数据 ccode
*/
public static final String fn_geetest_ccode = "geetest_ccode";
经济学培训班/**
* 公钥
*/
private String captchaId = "";
/**
* 私钥
*/
private String privateKey = "";
/**
* 是否开启新的failback
*/
private boolean newFailback = fal;
/**
* 返回字符串
*/
private String responStr = "";
/**
* 调试开关,是否输出调试⽇志
*/
public boolean debugCode = true;
/**
* 极验验证API服务状态Session Key
*/
public String gtServerStatusSessionKey = "gt_rver_status";
/**
* 带参数构造函数
*
* @param captchaId
* @param privateKey
*/
public GeetestLib(String captchaId, String privateKey, boolean newFailback) { this.captchaId = captchaId;
this.privateKey = privateKey;
一线英语
}
puton
/**
* 获取本次验证初始化返回字符串
*
* @return初始化结果
*/
public String getResponStr() {
return responStr;
}
public String getVersionInfo() {
return verName;
}
/**
* 预处理失败后的返回格式串
*
* @return
wisdom
*/
private String getFailPreProcessRes() {
Long rnd1 = und(Math.random() * 100);
Long rnd2 = und(Math.random() * 100);
String md5Str1 = md5Encode(rnd1 + "");
String md5Str2 = md5Encode(rnd2 + "");
String challenge = md5Str1 + md5Str2.substring(0, 2);
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("success", 0);
jsonObject.put("gt", this.captchaId);
jsonObject.put("challenge", challenge);
jsonObject.put("new_captcha", wFailback);
} catch (JSONException e) {
gtlog("json dumps error");
}
String();
}
/**
* 预处理成功后的标准串
*
*/
private String getSuccessPreProcessRes(String challenge) {
gtlog("challenge:" + challenge);
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("success", 1);
jsonObject.put("challenge", challenge);
} catch (JSONException e) {
gtlog("json dumps error");
}
String();
}
/**
* 验证初始化预处理
*
* @return 1表⽰初始化成功,0表⽰初始化失败
*/
public int preProcess(HashMap<String, String> data) {
if (registerChallenge(data) != 1) {
return 0;
}
return 1;
}
/**
* ⽤captchaID进⾏注册,更新challenge
*
* @return 1表⽰注册成功,0表⽰注册失败
*/
private int registerChallenge(HashMap<String, String>data) {
try {
String urId = ("ur_id");
String clientType = ("client_type");
String ipAddress = ("ip_address");
String getUrl = apiUrl + registerUrl + "?";
String param = "gt=" + this.captchaId + "&json_format=" + this.json_format;
if (urId != null){
param = param + "&ur_id=" + urId;
}
if (clientType != null){
param = param + "&client_type=" + clientType;
}
if (ipAddress != null){
param = param + "&ip_address=" + ipAddress;
}
gtlog("GET_URL:" + getUrl + param);
String result_str = readContentFromGet(getUrl + param);
if (result_str == "fail"){
gtlog("gtServer register challenge failed");
return 0;
}
gtlog("result:" + result_str);
JSONObject jsonObject = new JSONObject(result_str);
String return_challenge = String("challenge");
gtlog("return_challenge:" + return_challenge);
if (return_challenge.length() == 32) {
return 1;
}
el {
gtlog("gtServer register challenge error");
return 0;
} catch (Exception e) {
String());
gtlog("exception:register api");
}
return 0;
}
/**
* 判断⼀个表单对象值是否为空
*
* @param gtObj
* @return
*/
protected boolean objIsEmpty(Object gtObj) {
if (gtObj == null) {
return true;
}
if (String().trim().length() == 0) {
return true;
}
return fal;
}
/**
* 检查客户端的请求是否合法,三个只要有⼀个为空,则判断不合法
*
* @param request
冰河世纪1高清下载
* @return
*/
private boolean resquestIsLegal(String challenge, String validate, String ccode) {
if (objIsEmpty(challenge)) {
return fal;
}
if (objIsEmpty(validate)) {
return fal;
}
if (objIsEmpty(ccode)) {
return fal;
}
return true;
}
/**
* 服务正常的情况下使⽤的验证⽅式,向gt-rver进⾏⼆次验证,获取验证结果
*
* @param challenge
* @param validate
* @param ccode
* @return验证结果,1表⽰验证成功0表⽰验证失败
*/
制定英文public int enhencedValidateRequest(String challenge, String validate, String ccode, HashMap<String, String> data) {    if (!resquestIsLegal(challenge, validate, ccode)) {
return 0;
}
gtlog("request legitimate");
String urId = ("ur_id");
String clientType = ("client_type");
String ipAddress = ("ip_address");
String postUrl = this.apiUrl + this.validateUrl;
String param = String.format("challenge=%s&validate=%s&ccode=%s&json_format=%s",                                      challenge, validate, ccode, this.json_format);
if (urId != null){
param = param + "&ur_id=" + urId;
}
if (clientType != null){
param = param + "&client_type=" + clientType;
}
if (ipAddress != null){
param = param + "&ip_address=" + ipAddress;
}
gtlog("param:" + param);
in the morningString respon = "";
try {
if (validate.length() <= 0) {
return 0;
}
if (!checkResultByPrivate(challenge, validate)) {
return 0;
}
gtlog("checkResultByPrivate");
respon = readContentFromPost(postUrl, param);
gtlog("respon: " + respon);
} catch (Exception e) {
e.printStackTrace();
}
String return_ccode = "";
try {
JSONObject return_map = new JSONObject(respon);
return_ccode = String("ccode");
gtlog("md5: " + md5Encode(return_ccode));
if (return_ccode.equals(md5Encode(ccode))) {
return 1;
} el {
return 0;
}
} catch (JSONException e) {
gtlog("json load error");
return 0;
}
}
/**
* failback使⽤的验证⽅式
*
* @param challenge
* @param validate
* @param ccode
gumdrop
* @return验证结果,1表⽰验证成功0表⽰验证失败
*/
public int failbackValidateRequest(String challenge, String validate, String ccode) {
gtlog("in failback validate");

本文发布于:2023-06-15 01:17:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/145394.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:验证   是否   极验
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图