Skip to content

Commit e8d0183

Browse files
authored
Merge pull request #147 from DevKor-github/fix/login
Fix: 애플 dev-aud 추가
2 parents 3eb0b0c + 2bc17ee commit e8d0183

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

src/main/java/devkor/com/teamcback/domain/user/validator/AppleValidator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public class AppleValidator {
2626

2727
@Value("${jwt.social.apple.iss}")
2828
private String ISS;
29+
@Value("${jwt.social.apple.dev-aud}")
30+
private String DEV_AUD;
2931
@Value("${jwt.social.apple.aud}")
3032
private String AUD;
3133

@@ -36,7 +38,7 @@ public OIDCPublicKeysResponse getCachedData() {
3638
public String validateToken(String token) {
3739
try {
3840
// id_token 정보
39-
Header tokenInfo = oidcUtil.getUnsignedTokenClaims(token, AUD, ISS).getHeader();
41+
Header tokenInfo = oidcUtil.getUnsignedTokenClaims(token, new String[] {DEV_AUD, AUD}, ISS).getHeader();
4042
String kid = (String) tokenInfo.get(KID);
4143
String alg = (String) tokenInfo.get(ALG);
4244

src/main/java/devkor/com/teamcback/global/jwt/OIDC/OIDCUtil.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.security.NoSuchAlgorithmException;
1616
import java.security.spec.InvalidKeySpecException;
1717
import java.security.spec.RSAPublicKeySpec;
18+
import java.util.Arrays;
1819
import java.util.Base64;
1920
import lombok.RequiredArgsConstructor;
2021
import org.springframework.stereotype.Component;
@@ -24,16 +25,25 @@
2425
public class OIDCUtil {
2526
private static final String KID = "kid";
2627
public String getKidFromUnsignedTokenHeader(String token, String aud, String iss) {
27-
return (String) getUnsignedTokenClaims(token, aud, iss).getHeader().get(KID);
28+
return (String) getUnsignedTokenClaims(token, new String[] {aud}, iss).getHeader().get(KID);
2829
}
2930

30-
public Jwt<Header, Claims> getUnsignedTokenClaims(String token, String aud, String iss) {
31+
public Jwt<Header, Claims> getUnsignedTokenClaims(String token, String[] aud, String iss) {
3132
try {
32-
return Jwts.parserBuilder()
33-
.requireAudience(aud)
33+
Jwt<Header, Claims> claims = Jwts.parserBuilder()
3434
.requireIssuer(iss)
3535
.build()
3636
.parseClaimsJwt(getUnsignedToken(token));
37+
38+
// 추가적인 audience 검증
39+
String audience = claims.getBody().getAudience();
40+
if (audience == null || Arrays.stream(aud).noneMatch(audience::equals)) {
41+
throw new GlobalException(INVALID_TOKEN);
42+
}
43+
44+
return claims;
45+
} catch (GlobalException e) {
46+
throw new GlobalException(e.getResultCode());
3747
} catch (Exception e) {
3848
throw new GlobalException(INVALID_TOKEN);
3949
}

src/main/resources/application.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ jwt:
9393
apple:
9494
iss: ${APPLE_ISS}
9595
aud: ${APPLE_AUD}
96+
dev-aud: ${APPLE_DEV_AUD}
9697
admin:
9798
token: ${JWT_ADMIN_TOKEN}
9899

0 commit comments

Comments
 (0)