JSD-7814 开源任务材料
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
3.1 KiB

/**
* Copyright (C), 2015-2019
* FileName: HttpAuthorizeBridge
* Author: Louis
* Date: 2019/8/9 9:24
* Description: HttpAuthorizeBridge
* History:
* <author> <time> <version> <desc>
*/
package com.fr.plugin.j7814.request;
import com.fanruan.api.json.JSONKit;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.net.http.HttpKit;
import com.fanruan.api.util.StringKit;
import com.fr.decision.fun.impl.AbstractHttpAuthorizeProvider;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.j7814.config.SsoConfig;
import com.fr.third.org.apache.http.entity.StringEntity;
import java.util.HashMap;
import java.util.Map;
/**
* 〈Function Description〉<br>
* 〈HttpAuthorizeBridge http认证〉
*
* @author Louis
* @since 1.0.0
*/
public class HttpAuthorizeBridge extends AbstractHttpAuthorizeProvider {
@Override
public Scope scope() {
return Scope.REPLACE;
}
@Override
public boolean authorize(String inputUsername, String inputPassword, String savedPassword, String hashPassword) {
SsoConfig config = SsoConfig.getInstance();
String httpUrl = config.getIpgUrl();
if (StringKit.isEmpty(httpUrl)) {
return false;
}
try {
JSONObject bodyParams = JSONKit.create();
bodyParams.put("username", inputUsername);
bodyParams.put("password", inputPassword);
bodyParams.put("clientId", config.getClientId());
bodyParams.put("clientSecret", config.getClientSecret());
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
StringEntity stringEntity = new StringEntity(bodyParams.encode(), "UTF-8");
String result = HttpKit.executeAndParse(com.fanruan.api.net.http.rs.HttpRequest.custom()
.url(httpUrl).post(stringEntity).headers(headers).build());
LogKit.error("sso-HttpAuthorizeBridge-authorize-result:{}", result);
return validateResult(result, inputUsername);
} catch (Exception e) {
LogKit.error(e.getMessage(), e);
}
return false;
}
/**
* 判断验证结果
*
* @param result
* @param inputUsername
* @return
*/
private Boolean validateResult(String result, String inputUsername){
if (StringKit.isEmpty(result)){
return false;
}
final JSONObject jsonObject = JSONKit.create(result);
int errorNumber = jsonObject.getInt("errorNumber");
if (!ComparatorUtils.equals(errorNumber, 0)) {
return false;
}
final JSONObject applicationObject = jsonObject.getJSONObject("applicationAPIDto");
JSONArray applicationUsername = applicationObject.getJSONArray("applicationUsernames");
if (applicationUsername == null || applicationUsername.isEmpty()) {
LogKit.error("sso-HttpAuthorizeBridge-validateResult-applicationUsername is null.");
return false;
}
return applicationUsername.contains(inputUsername);
}
}