Skip to content

Commit

Permalink
feat: (#22) 헤더 검증 방식 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
eNoLJ committed Jun 18, 2021
1 parent 8c92655 commit a3f0b2d
Show file tree
Hide file tree
Showing 12 changed files with 80 additions and 79 deletions.
13 changes: 3 additions & 10 deletions BE/src/main/java/com/issuetracker/auth/GitHubOAuth.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,10 @@ public GitHubOAuth(GitHubService gitHubService,
}

@Override
public AccessTokenResponseDTO getToken(String code, String userAgent) {
System.out.println("코드: -----------------------" + code);
System.out.println("에이전트: -----------------------" + userAgent);
System.out.println("아이디: -----------------------" + gitHubService.getClientId(userAgent));
System.out.println("시크릿: -----------------------" + gitHubService.getClientSecret(userAgent));


public AccessTokenResponseDTO getToken(String code, String host) {
AccessTokenRequestDTO accessTokenRequest = AccessTokenRequestDTO.builder()
.clientId(gitHubService.getClientId(userAgent))
.clientSecret(gitHubService.getClientSecret(userAgent))
.clientId(gitHubService.getClientId(host))
.clientSecret(gitHubService.getClientSecret(host))
.code(code)
.build();

Expand All @@ -58,7 +52,6 @@ public AccessTokenResponseDTO getToken(String code, String userAgent) {

@Override
public OAuthUserResponseDTO getUserInfo(String accessToken) {
System.out.println("토큰: -----------------------" + accessToken);
return webClient.get()
.uri(userUri)
.accept(MediaType.APPLICATION_JSON)
Expand Down
2 changes: 1 addition & 1 deletion BE/src/main/java/com/issuetracker/auth/OAuth.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

public interface OAuth {

AccessTokenResponseDTO getToken(String code, String userAgent);
AccessTokenResponseDTO getToken(String code, String host);

OAuthUserResponseDTO getUserInfo(String token);
}
13 changes: 13 additions & 0 deletions BE/src/main/java/com/issuetracker/auth/dto/HostDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.issuetracker.auth.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class HostDTO {

private String host;
}
13 changes: 0 additions & 13 deletions BE/src/main/java/com/issuetracker/auth/dto/UserAgentDTO.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import org.springframework.web.bind.annotation.ResponseStatus;

@ResponseStatus(HttpStatus.BAD_REQUEST)
public class UnknownUserAgentException extends OAuthException {
public class UnknownHostException extends OAuthException {

public UnknownUserAgentException() {
public UnknownHostException() {
super("Unknown user agent detected.");
}
}
19 changes: 13 additions & 6 deletions BE/src/main/java/com/issuetracker/auth/service/GitHubService.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.issuetracker.auth.service;

import com.issuetracker.auth.exception.UnknownHostException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

Expand All @@ -21,17 +22,23 @@ public GitHubService(@Value("${github.web.client.id}") String frontClientId,
this.iOSClientSecret = iOSClientSecret;
}

public String getClientId(String userAgent) {
if (UserAgent.isIOS(userAgent)) {
public String getClientId(String host) {
if (Host.isFront(host)) {
return frontClientId;
}
if (Host.isIOS(host)) {
return iOSClientId;
}
return frontClientId;
throw new UnknownHostException();
}

public String getClientSecret(String userAgent) {
if (UserAgent.isIOS(userAgent)) {
public String getClientSecret(String host) {
if (Host.isFront(host)) {
return frontClientSecret;
}
if (Host.isIOS(host)) {
return iOSClientSecret;
}
return frontClientSecret;
throw new UnknownHostException();
}
}
25 changes: 25 additions & 0 deletions BE/src/main/java/com/issuetracker/auth/service/Host.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.issuetracker.auth.service;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
enum Host {

POSTMAN("localhost:8080"),
FRONT_LOCAL("localhost:3000"),
WEB("3.37.76.224"),
IOS("IssueTrackerIOS");

private final String host;

public static boolean isFront(String host) {
return FRONT_LOCAL.host.equals(host) || WEB.host.equals(host) || POSTMAN.host.equals(host);
}

public static boolean isIOS(String host) {
return IOS.host.equals(host) || POSTMAN.host.equals(host);
}
}

24 changes: 0 additions & 24 deletions BE/src/main/java/com/issuetracker/auth/service/UserAgent.java

This file was deleted.

16 changes: 16 additions & 0 deletions BE/src/main/java/com/issuetracker/config/HostHeaderConverter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.issuetracker.config;

import com.issuetracker.auth.dto.HostDTO;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

@Component
public class HostHeaderConverter implements Converter<String, HostDTO> {

@Override
public HostDTO convert(String host) {
HostDTO user = new HostDTO();
user.setHost(host);
return user;
}
}

This file was deleted.

6 changes: 3 additions & 3 deletions BE/src/main/java/com/issuetracker/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.issuetracker.auth.OAuth;
import com.issuetracker.auth.dto.AccessTokenResponseDTO;
import com.issuetracker.auth.dto.UserAgentDTO;
import com.issuetracker.auth.dto.HostDTO;
import com.issuetracker.auth.dto.OAuthUserResponseDTO;
import com.issuetracker.auth.service.JwtService;
import com.issuetracker.domain.user.User;
Expand Down Expand Up @@ -33,8 +33,8 @@ public List<User> findAssignees(List<Long> assigneeIdList) {
return userRepository.findAllById(assigneeIdList);
}

public UserResponseDTO login(String code, UserAgentDTO userAgent) {
AccessTokenResponseDTO token = oauth.getToken(code, userAgent.getUserAgent());
public UserResponseDTO login(String code, HostDTO host) {
AccessTokenResponseDTO token = oauth.getToken(code, host.getHost());
OAuthUserResponseDTO userInfo = oauth.getUserInfo(token.getAccessToken());
if (verifyUser(userInfo.getLogin())) {
User user = findUserByUserName(userInfo.getLogin());
Expand Down
8 changes: 4 additions & 4 deletions BE/src/main/java/com/issuetracker/web/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.issuetracker.auth.annotation.LoginRequired;
import com.issuetracker.auth.annotation.UserId;
import com.issuetracker.auth.dto.UserAgentDTO;
import com.issuetracker.auth.dto.HostDTO;
import com.issuetracker.service.UserService;
import com.issuetracker.web.dto.response.AssigneesResponseDTO;
import com.issuetracker.web.dto.response.AuthorsResponseDTO;
Expand All @@ -21,10 +21,10 @@ public class UserController {
private final Logger logger = LoggerFactory.getLogger(UserController.class);

@PostMapping("/login")
public UserResponseDTO login(@RequestHeader(name = "User-Agent") UserAgentDTO userAgent, @RequestParam String code) {
public UserResponseDTO login(@RequestHeader(name = "Host") HostDTO host, @RequestParam String code) {
logger.debug("로그인 요청");
logger.debug("헤더 확인: {}", userAgent);
return userService.login(code, userAgent);
logger.info("호스트 헤더 확인: {}", host.toString());
return userService.login(code, host);
}

@GetMapping("/logout")
Expand Down

0 comments on commit a3f0b2d

Please sign in to comment.