帆软帮助文档代码合集。
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.

140 lines
5.6 KiB

package com.fr;
import com.fr.decision.webservice.v10.login.LoginService;
import com.fr.json.JSONException;
import net.sf.json.JSONObject;
import com.fr.stable.StringUtils;
import com.fr.web.utils.WebUtils;
import java.io.IOException;
import java.util.Set;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.oltu.oauth2.client.response.OAuthAuthzResponse;
import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
public class myfilter implements Filter {
public myfilter() {
}
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
OAuthAuthzResponse oAuthResponse = null;
HttpSession session = req.getSession(true);
String tokenLocation = "https:/www.example.com/oauth/token";
String redirectURI = "http://localhost:8075/webroot/decision";
String clientId = "dzs.hotelbi.local";
String clientSecret = "da3e9b941b6dc724847c8426a323ddc8";
String code = WebUtils.getHTTPRequestParameter(req, "code");
System.out.println("code:" + code);
String Token = "";
try {
if (!StringUtils.isEmpty(code)) {
oAuthResponse = OAuthAuthzResponse.oauthCodeAuthzResponse(req);
System.out.println("oAuthResponse.getCode()=" + oAuthResponse.getCode());
JSONObject jsonParams = new JSONObject();
jsonParams.put("client_id", clientId);
jsonParams.put("client_secret", clientSecret);
jsonParams.put("redirect_uri", redirectURI);
jsonParams.put("code", oAuthResponse.getCode());
jsonParams.put("grant_type", "authorization_code");
// 通过接收到的授权码到SSO站点申请令牌
String returnParams = postByJsonParameters(tokenLocation, jsonParams);
JSONObject jsonResponse = new JSONObject();
jsonResponse = jsonResponse.fromObject(returnParams);
String accessToken = jsonResponse.getString("access_token");
System.out.println("Token" + accessToken);
JSONObject jsonParams1 = new JSONObject();
jsonParams1.put("access_token", accessToken);
String result = postByJsonParameters("https://oauth.shu.edu.cn/rest/user/getLoggedInUser", jsonParams1);
System.out.println("result = " + result);
String username = "";
if (!StringUtils.isEmpty(result)) {
JSONObject json = new JSONObject();
json = json.fromObject(result);
username = json.getString("username");
System.out.println("username" + username);
}
if (StringUtils.isNotEmpty(username)) {
String token = LoginService.getInstance().login(req, res, username);
req.setAttribute("fine_auth_token", token);
}
res.addCookie(new Cookie("access_token", Token));
filterChain.doFilter(req, res);
} else {
System.out.println("code is empty!");
}
} catch (OAuthProblemException var20) {
var20.printStackTrace();
} catch (OAuthSystemException var21) {
var21.printStackTrace();
} catch (JSONException var22) {
var22.printStackTrace();
} catch (Exception var23) {
var23.printStackTrace();
}
}
/**
* 模拟post请求方法,请求参数为json
*
* @param url
* @param params
* @return
*/
public static String postByJsonParameters(String url, JSONObject params) {
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);
Set<String> keySet = params.keySet();
try {
NameValuePair[] postData = new NameValuePair[keySet.size()];
int postDataIndex = 0;
for (String key : keySet) {
postData[postDataIndex++] = new NameValuePair(key, params.getString(key));
}
postMethod.getParams().setContentCharset("UTF-8");
postMethod.addParameters(postData);
httpClient.executeMethod(postMethod);
if (postMethod.getStatusCode() == HttpStatus.SC_OK) {
String response = new String(postMethod.getResponseBodyAsString());
return response;
} else {
return null;
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
postMethod.releaseConnection();
}
return null;
}
public void destroy() {
}
}