java动态口令登录实现过程详解动态口令登录实现过程详解
主要介绍了java动态口令登录实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
定的参考学习价值,需要的朋友可以参考下
1.实现一个实现一个ItsClient 客户端用来实例化调用验证功能客户端用来实例化调用验证功能
public class ItsClient {
private static final String routing = "/v1.0/sectoken/otp_validation";
// ! HTTPS消息验证地址
private String httpsVerifyUrl = "";
// ! otp ipAddr
private String ipAddr = "";
// ! otp port
private String port = "";
// ! otp appID
private String appID = "";
// ! otp appKey
private String appKey = "";
// ! 错误码
private int errorCode = 0;
// ! 错误消息
private String errorMessage = "";
TreeMap<Integer, String> errorCodeTable = new TreeMap<Integer, String>() {
{
put(200, "请求成功");
put(400, "输入不合法,比如请求数据不是json");
put(401, "AppID不合法");
put(402, "指纹不合法");
put(410, "非法用户,验证otp时,传入的uid有误,找不到用户");
put(411, "错误的otp");
put(412, "一个周期内动态口令只能使用一次");
put(413, "已达一个周期内最大尝试次数");
put(500, "ITS服务器内部错误");
put(601, "参数错误");
put(602, "sha1签名失败");
put(603, "操作json失败");
put(604, "url访问错误:");
put(605, "较验返回指纹失败");
}
};
public ItsClient() {
this.ipAddr = ItsConf.GetIpAddr();
this.port = ItsConf.GetPort();
this.appID = ItsConf.GetOtpAppID();
this.appKey = ItsConf.GetOtpAppKey();
httpsVerifyUrl = "https://" + this.ipAddr + ':' + this.port + routing;
}
//获取错误信息
public St ring GetErrorMessage() {
return this.errorMessage;
}
//获取错误码
public int GetErrorCode() {
return this.errorCode;
}
public void SetError(int errorCode, String extMessage) {
this.errorCode = errorCode;
this.errorMessage = this.errorCodeTable.get(this.errorCode).toString() + extMessage;
}
public static String SHA1(String decript) throws NoSuchAlgorithmException {
String ret = "";
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] sha1bytes = sha1.digest(decript.getBytes());
if (sha1bytes != null) {
ret = new BASE64Encoder().encode(sha1bytes);
}
return ret;
}
public String EncodeJson(TreeMap<String, String> map) {
JSONObject jmap = new JSONObject(map);
return jmap.toString();
}
public TreeMap<String, Object> DecodeJson(String jsonStr) throws ParseException {
评论0