Skip to content

Commit e8c8b99

Browse files
authored
🔀 애플 로그인 화면 API 추가
✨ 애플 get 추가
2 parents 55ead5e + 408a79d commit e8c8b99

File tree

13 files changed

+134
-11
lines changed

13 files changed

+134
-11
lines changed

.github/workflows/deploy.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,15 @@ jobs:
3636
REDIS_TERMS_KEY: ${{secrets.REDIS_TERMS_KEY}}
3737
GOOGLE_CLIENT: ${{secrets.GOOGLE_CLIENT}}
3838
GOOGLE_SECRET: ${{secrets.GOOGLE_SECRET}}
39+
APPLE_AUD : ${{secrets.APPLE_AUD}}
40+
APPLE_TEAM_ID : ${{secrets.APPLE_TEAM_ID}}
41+
APPLE_KEY_ID : ${{secrets.APPLE_KEY_ID}}
3942

40-
43+
# AuthKey.p8 파일 생성
44+
- name: Create AuthKey.p8
45+
run: |
46+
echo "${{ secrets.APPLE_AUTH_KEY }}" > ./src/main/resources/key/AuthKey.p8
47+
4148
#프로젝트 빌드
4249
- name: Build with Gradle
4350
run: |

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ build/
77

88
###custom###
99
application.properties
10+
AuthKey.p8
1011

1112
### STS ###
1213
.apt_generated

build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ dependencies {
5454
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
5555
implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.2'
5656

57+
// Apple login
58+
implementation 'com.nimbusds:nimbus-jose-jwt:3.10'
59+
implementation 'org.bouncycastle:bcpkix-jdk18on:1.72'
60+
5761
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
5862

5963
implementation 'org.projectlombok:lombok'

src/main/java/com/boggle_boggle/bbegok/config/openfeign/OpenFeignConfig.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.boggle_boggle.bbegok.config.openfeign;
22

3-
import com.nimbusds.jose.shaded.gson.GsonBuilder;
43
import feign.gson.GsonDecoder;
54
import org.springframework.beans.factory.annotation.Value;
65
import org.springframework.cloud.openfeign.EnableFeignClients;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.boggle_boggle.bbegok.config.properties;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
import org.springframework.boot.context.properties.ConfigurationProperties;
6+
import org.springframework.stereotype.Component;
7+
8+
@Getter
9+
@Setter
10+
@Component
11+
@ConfigurationProperties(prefix = "apple")
12+
public class AppleProperties {
13+
@Getter
14+
@Setter
15+
public static class Auth {
16+
private String tokenUrl;
17+
private String publicKeyUrl;
18+
}
19+
20+
private Auth auth = new Auth();
21+
private String teamId;
22+
private String keyId;
23+
private String keyPath;
24+
private String clientId;
25+
private String redirectUri;
26+
//private String authTokenUrl;
27+
//private String authPublicKeyUrl;
28+
private String iss;
29+
private String aud;
30+
}

src/main/java/com/boggle_boggle/bbegok/config/security/SecurityConfig.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
9292
//OAuth2 로그인 요청 처리
9393
.oauth2Login(oauth2 -> oauth2
9494
.authorizationEndpoint(authorization -> authorization
95-
.baseUri("/oauth2/authorization")
95+
.baseUri("/oauth2/authorization") //이 엔드포인트 요청에 대해 아래에 쿠키로 요청데이터저장
9696
.authorizationRequestRepository(oAuth2AuthorizationRequestBasedOnCookieRepository()))
9797
.redirectionEndpoint(redirection -> redirection
98-
.baseUri("/*/oauth2/code/*"))
99-
.userInfoEndpoint(userInfo -> userInfo
98+
.baseUri("/*/oauth2/code/*")) //각 인증페이지로 리디렉션된 요청을 처리, 액세스토큰 교환
99+
.userInfoEndpoint(userInfo -> userInfo //사용자 정보 획득
100100
.userService(oAuth2UserService))
101101
.successHandler(oAuth2AuthenticationSuccessHandler())
102102
.failureHandler(oAuth2AuthenticationFailureHandler()));
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.boggle_boggle.bbegok.controller;
2+
3+
import com.boggle_boggle.bbegok.service.AppleService;
4+
import jakarta.servlet.http.HttpServletRequest;
5+
import jakarta.servlet.http.HttpServletResponse;
6+
import lombok.RequiredArgsConstructor;
7+
import org.springframework.security.web.DefaultRedirectStrategy;
8+
import org.springframework.security.web.RedirectStrategy;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestParam;
12+
import org.springframework.web.bind.annotation.RestController;
13+
14+
import java.io.IOException;
15+
16+
@RestController
17+
@RequiredArgsConstructor
18+
public class AppleController {
19+
20+
private final AppleService appleService;
21+
22+
@GetMapping("/oauth2/authorization/apple")
23+
public void loginRequest(HttpServletResponse response,
24+
@RequestParam(value = "redirect_uri", required = true) String redirectUri) throws IOException {
25+
response.sendRedirect(appleService.getAppleLoginUrl(redirectUri));
26+
}
27+
}

src/main/java/com/boggle_boggle/bbegok/oauth/entity/ProviderType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
@Getter
66
public enum ProviderType {
77
KAKAO,
8-
GOOGLE;
8+
GOOGLE,
9+
APPLE;
910
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.boggle_boggle.bbegok.oauth.info.impl;
2+
3+
import com.boggle_boggle.bbegok.oauth.info.OAuth2UserInfo;
4+
5+
import java.util.Map;
6+
7+
public class AppleOAuth2UserInfo extends OAuth2UserInfo {
8+
9+
public AppleOAuth2UserInfo(Map<String, Object> attributes) { super(attributes); }
10+
11+
@Override
12+
public String getId() {
13+
return String.valueOf(attributes.get("sub"));
14+
}
15+
}

src/main/java/com/boggle_boggle/bbegok/oauth/info/impl/GoogleOAuth2UserInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ public GoogleOAuth2UserInfo(Map<String, Object> attributes) {
1212

1313
@Override
1414
public String getId() {
15-
return (String) attributes.get("sub");
15+
return String.valueOf(attributes.get("sub"));
1616
}
1717
}

0 commit comments

Comments
 (0)