Skip to content

Commit 15aa351

Browse files
feature : Once an access token is generated from an authorization code, the code should be removed for security reasons.
1 parent 8a180b4 commit 15aa351

File tree

7 files changed

+51
-352
lines changed

7 files changed

+51
-352
lines changed

lib/src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/converter/auth/endpoint/AuthorizationCodeAuthenticationConverter.java

Lines changed: 0 additions & 92 deletions
This file was deleted.

lib/src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/converter/auth/endpoint/AuthorizationCodeAuthorizationRequestConverter.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public final class AuthorizationCodeAuthorizationRequestConverter implements Aut
2828
private final KnifeAuthorizationConsentRepository knifeAuthorizationConsentRepository;
2929
private final OAuth2AuthorizationServiceImpl oAuth2AuthorizationService;
3030

31-
public void setClientAuthentication(String clientId) {
31+
public void setClientAuthenticationContext(String clientId) {
3232
RegisteredClient registeredClient = registeredClientRepository.findByClientId(clientId);
3333
if (registeredClient == null) {
3434
throw new IllegalArgumentException("Invalid client ID");
@@ -50,27 +50,22 @@ public Authentication convert(HttpServletRequest request) {
5050
// TODO: Authorization Consent
5151
} else if ("GET".equalsIgnoreCase(request.getMethod())) {
5252
MultiValueMap<String, String> parameters = RequestOAuth2Distiller.getAuthorizationCodeSecurityAdditionalParameters(request);
53-
String code = parameters.getFirst(OAuth2ParameterNames.CODE);
5453

55-
if (!StringUtils.hasText(code)) {
56-
throw new KnifeOauth2AuthenticationException("Authorization code missing in GET request");
57-
}
5854

59-
// 클라이언트 ID와 기타 필수 파라미터 처리
55+
6056
String clientId = parameters.getFirst(OAuth2ParameterNames.CLIENT_ID);
6157
if (!StringUtils.hasText(clientId)) {
6258
throw new KnifeOauth2AuthenticationException("client_id missing");
6359
}
64-
65-
// 클라이언트 인증 설정
66-
setClientAuthentication(clientId);
67-
Authentication clientPrincipal = SecurityContextHolder.getContext().getAuthentication();
68-
6960
String redirectUri = parameters.getFirst(OAuth2ParameterNames.REDIRECT_URI);
7061
if (!StringUtils.hasText(redirectUri)) {
7162
throw new KnifeOauth2AuthenticationException("redirect_uri missing");
7263
}
7364

65+
// setClientAuthenticationContext from the client_id param
66+
setClientAuthenticationContext(clientId);
67+
Authentication clientPrincipal = SecurityContextHolder.getContext().getAuthentication();
68+
7469

7570
RegisteredClient registeredClient = ((OAuth2ClientAuthenticationToken) clientPrincipal).getRegisteredClient();
7671

@@ -98,6 +93,11 @@ public Authentication convert(HttpServletRequest request) {
9893
additionalParameters.put(key, (value.size() == 1) ? value.get(0) : value.toArray(new String[0]));
9994
});
10095

96+
String code = parameters.getFirst(OAuth2ParameterNames.CODE);
97+
if (!StringUtils.hasText(code)) {
98+
throw new KnifeOauth2AuthenticationException("Authorization code missing in GET request");
99+
}
100+
101101
return new OAuth2AuthorizationCodeAuthenticationToken(
102102
code,
103103
clientPrincipal,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @see OAuth2TokenIntrospectionAuthenticationToken
3232
* @see OAuth2TokenIntrospectionEndpointFilter
3333
*/
34-
public final class KnifeOAuth2TokenIntrospectionAuthenticationConverter implements AuthenticationConverter {
34+
public final class IntrospectionRequestConverter implements AuthenticationConverter {
3535

3636
/*
3737
* Now, this only takes "access_token".

lib/src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/converter/auth/endpoint/KnifeAuthorizationCodeRequestConverterController.java

Lines changed: 0 additions & 227 deletions
This file was deleted.

0 commit comments

Comments
 (0)