현재 버전

client id와 client key 는 없나요?

auth2 방식이면 발급받은 key 값이 있을 겁니다

저는 spring security auth2 방식으로 client:securityKey 이 값을 base64변환하여 인증 토큰을 추가하는 방식으로 구현 해서 아래와 같이 개발 했습니다.

마지막희망 님이 사용하시는 api도 client 관련 부분이 없는지 한 번 살펴보세요

String clientId = MapUtils.getString(requestMap, "client_id");
String secret = "";
Map<String, Object> resultMap = new HashMap<String, Object>();
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
for (String clientKey : authServerProperties.getClient().keySet()) {
	OAuthClientProperties client = authServerProperties.getClient().get(clientKey);
	if (StringUtils.equals(client.getClientId(), clientId)) {
		secret = client.getClientSecret();
		break;
	}
}
formparams.add(new BasicNameValuePair("grant_type", "password"));
formparams.add(new BasicNameValuePair("scope", MapUtils.getString(requestMap, "scope", "webclient")));
formparams.add(new BasicNameValuePair("username", MapUtils.getString(requestMap, "username", "")));
formparams.add(new BasicNameValuePair("password", MapUtils.getString(requestMap, "password", "")));
String encoding = Base64.getEncoder().encodeToString((clientId + ":" + MapUtils.getString(requestMap, "secret", secret)).getBytes());
HttpClient client = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost(oauthToken); 
postRequest.setHeader("Accept", "application/json");
postRequest.setHeader("Content-Type", "application/x-www-form-urlencoded");
postRequest.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encoding);
try {
	postRequest.setEntity(new UrlEncodedFormEntity(formparams, "UTF-8"));
	HttpResponse tokenResponse = client.execute(postRequest);
	if (tokenResponse.getStatusLine().getStatusCode() == 200) {
		ResponseHandler<String> handler = new BasicResponseHandler();
		String body = handler.handleResponse(tokenResponse);
		ObjectMapper mapper = new ObjectMapper();
		resultMap = mapper.readValue(body, Map.class);
		logger.info(body);
	} else {
		logger.error("response is error : " + tokenResponse.getStatusLine().getStatusCode());
	}
} catch (Exception e){
	logger.error(e.toString());
}



수정 이력

2021-04-19 09:31:27 에 아래 내용에서 변경 됨 #1

client id와 client key 는 없나요?

auth2 방식이면 발급받은 key 값이 있을 겁니다

저는 spring security auth2 방식으로 client:securityKey 이 값을 base64변환하여 인증 토큰을 추가해야 해서 아래와 같이 구현 했습니다.

마지막희망 님이 사용하시는 api도 client 관련 부분이 없는지 한 번 살펴보세요

String clientId = MapUtils.getString(requestMap, "client_id");
String secret = "";
Map<String, Object> resultMap = new HashMap<String, Object>();
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
for (String clientKey : authServerProperties.getClient().keySet()) {
	OAuthClientProperties client = authServerProperties.getClient().get(clientKey);
	if (StringUtils.equals(client.getClientId(), clientId)) {
		secret = client.getClientSecret();
		break;
	}
}
formparams.add(new BasicNameValuePair("grant_type", "password"));
formparams.add(new BasicNameValuePair("scope", MapUtils.getString(requestMap, "scope", "webclient")));
formparams.add(new BasicNameValuePair("username", MapUtils.getString(requestMap, "username", "")));
formparams.add(new BasicNameValuePair("password", MapUtils.getString(requestMap, "password", "")));
String encoding = Base64.getEncoder().encodeToString((clientId + ":" + MapUtils.getString(requestMap, "secret", secret)).getBytes());
HttpClient client = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost(oauthToken); 
postRequest.setHeader("Accept", "application/json");
postRequest.setHeader("Content-Type", "application/x-www-form-urlencoded");
postRequest.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encoding);
try {
	postRequest.setEntity(new UrlEncodedFormEntity(formparams, "UTF-8"));
	HttpResponse tokenResponse = client.execute(postRequest);
	if (tokenResponse.getStatusLine().getStatusCode() == 200) {
		ResponseHandler<String> handler = new BasicResponseHandler();
		String body = handler.handleResponse(tokenResponse);
		ObjectMapper mapper = new ObjectMapper();
		resultMap = mapper.readValue(body, Map.class);
		logger.info(body);
	} else {
		logger.error("response is error : " + tokenResponse.getStatusLine().getStatusCode());
	}
} catch (Exception e){
	logger.error(e.toString());
}