Skip to content

Commit

Permalink
feat: (#22) 로그인 시 헤더 검증 방법 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
eNoLJ committed Jun 21, 2021
1 parent 21eb6f9 commit 80519c3
Show file tree
Hide file tree
Showing 11 changed files with 77 additions and 64 deletions.
6 changes: 3 additions & 3 deletions BE/src/main/java/com/issuetracker/auth/GitHubOAuth.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ public GitHubOAuth(GitHubService gitHubService,
}

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

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 host);
AccessTokenResponseDTO getToken(String code, String userAgent);

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

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Setter;

@Setter
public class UserAgentDTO {

@JsonProperty("User-Agent")
private String userAgent;

public String getUserAgent() {
return userAgent.split("/")[0];
}
}
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 UnknownHostException extends OAuthException {
public class UnknownUserAgentException extends OAuthException {

public UnknownHostException() {
super("Unknown host detected.");
public UnknownUserAgentException() {
super("Unknown User-Agent detected.");
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.issuetracker.auth.service;

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

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

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

public String getClientSecret(String host) {
if (Host.isFront(host)) {
public String getClientSecret(String userAgent) {
if (UserAgent.isFront(userAgent)) {
return frontClientSecret;
}
if (Host.isIOS(host)) {
if (UserAgent.isIOS(userAgent)) {
return iOSClientSecret;
}
throw new UnknownHostException();
throw new UnknownUserAgentException();
}
}
25 changes: 0 additions & 25 deletions BE/src/main/java/com/issuetracker/auth/service/Host.java

This file was deleted.

23 changes: 23 additions & 0 deletions BE/src/main/java/com/issuetracker/auth/service/UserAgent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.issuetracker.auth.service;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
enum UserAgent {

POSTMAN("PostmanRuntime"),
FRONT("Mozilla"),
IOS("IssueTrackerIOS");

private final String userAgent;

public static boolean isFront(String userAgent) {
return FRONT.userAgent.equals(userAgent) || POSTMAN.userAgent.equals(userAgent);
}

public static boolean isIOS(String userAgent) {
return IOS.userAgent.equals(userAgent) || POSTMAN.userAgent.equals(userAgent);
}
}
16 changes: 0 additions & 16 deletions BE/src/main/java/com/issuetracker/config/HostHeaderConverter.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.issuetracker.config;

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

@Component
public class UserAgentHeaderConverter implements Converter<String, UserAgentDTO> {

@Override
public UserAgentDTO convert(String userAgent) {
UserAgentDTO userAgentDTO = new UserAgentDTO();
userAgentDTO.setUserAgent(userAgent);
return userAgentDTO;
}
}
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,8 +2,8 @@

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

public UserResponseDTO login(String code, HostDTO host) {
AccessTokenResponseDTO token = oauth.getToken(code, host.getHost());
public UserResponseDTO login(String code, UserAgentDTO userAgentDTO) {
AccessTokenResponseDTO token = oauth.getToken(code, userAgentDTO.getUserAgent());
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.HostDTO;
import com.issuetracker.auth.dto.UserAgentDTO;
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 = "Host") HostDTO host, @RequestParam String code) {
public UserResponseDTO login(@RequestHeader(name = "User-Agent") UserAgentDTO userAgentDTO, @RequestParam String code) {
logger.debug("로그인 요청");
logger.info("호스트 헤더 확인: {}", host.toString());
return userService.login(code, host);
logger.info("호스트 헤더 확인: {}", userAgentDTO.getUserAgent());
return userService.login(code, userAgentDTO);
}

@GetMapping("/logout")
Expand Down

0 comments on commit 80519c3

Please sign in to comment.