언리얼 엔진 - 게임 프로젝트/AWS GameLift를 활용한 데디케이트 FPS 프로젝트

Access Tokens - 11) 리소스 서버 설정

monstro 2026. 6. 21. 19:51
728x90
반응형

- 개요

드롭다운 위젯의 로그아웃 버튼에 기능을 추가한다

또, AWS Cognito에 리소스 서버를 설정한다

 

- 리소스 서버란?

리소스 서버액세스 토큰임의로 지정할 수 있는 권한인 '커스텀 스코프'를 정의하고 설명하는 공간을 의미한다

따라서 "리소스 서버를 설정한다"는 문장내가 만든 API 서버의 고유 식별자Cognito에 등록하고,

그 API를 사용할 때 필요한 권한(Scope)들을 정의하는 것을 의미한다

리소스 서버에서 정의된 커스텀 스코프를 사용하면 API Gateway의 특정 메서드가 실행될 때

해당 권한을 가진 토큰이 반드시 포함되도록 강제할 수 있다

이를 통해 올바른 권한 토큰이 없는 비정상적인 요청은 람다 함수가 실행되기 전에 API Gateway에 의해 차단된다

따라서 불필요한 람다의 호출을 차단하여 비용이 청구되지 않도록 설정할 수 있다

 

- 스크립트 작업

1) HUDManagement 인터페이스

 

로그아웃에 사용하기 위한 OnSignOut 순수가상함수를 추가한다

 

2) PortalHUD 클래스

헤더 파일

 

cpp 파일

 

OnSignOut 함수를 위와 같이 오버라이드한다

대시보드 UI를 제거하고, 로그인 UI를 뷰포트에 띄우도록 구성하였다

 

3) PortalManager 클래스

 

SignIn_Response 함수의 로직을 위와 같이 수정하여

포탈 HUD와의 의존관계를 제거하고 대신, 인터페이스를 통해 로그인을 진행하도록 설정한다

 

 

SignOut_Response 함수에 위와 같이 로직을 추가하여

서버에서 반환된 로그아웃 처리 결과에 문제가 없다HUD를 가져와 인터페이스를 통해 로그아웃을 진행한다

 

- AWS 콘솔 작업

1) 리소스 서버 생성 + 커스텀 스코프 생성

사용중인 유저 풀 - 사이드 바의 애플리케이션 - 리소스 서버

 

AWS 콘솔에 접속하여 Cognito - 사용중인 유저 풀의 탭에서 리소스 서버를 생성할 수 있다

 

리소스 서버 생성 (1) - 리소스 서버 관련

 

생성할 리소스 서버의 이름 식별자를 위와 같이 구성한다

 

리소스 서버 생성 (2) - 커스텀 스코프 관련

 

새로 사용할 커스텀 스코프의 이름설명을 위와 같이 지정한다

 

2) API Gateway에서의 커스텀 스코프 사용

GameSession 관련 API Gateway

 

생성한 커스텀 스코프를 사용하기 위해 GameSession 관련 API Gateway의 탭으로 이동한다

 

2 - 1) 권한부여자 생성

사용중인 API Gateway의 사이드 바 - 권한 부여자 탭

 

메서드에 대한 스코프를 부여하기 위한 권한 부여자를 생성한다

 

권한 부여자 설정

 

생성하는 권한 부여자에 대해 위와 같이 설정한다

Cognito를 통해 권한을 부여하도록 설정하고 인증을 진행할 사용자 풀을 지정한다

마지막으로 부여될 인증 토큰에 포함될 헤더를 위와 같이 설정한다

 

2 - 2) 권한 부여

FindOrCreateGameSession 메서드의 메서드 요청 설정

 

FindOrCreateGameSession 메서드에 대한 편집 버튼을 클릭한다

 

 

위와 같이 FindOrCreateGameSession 메서드에 대한 요청 설정을 진행한다

권한 부여자를 2 - 1)에서 생성한 권한 부여자로 설정하고 권한 부여 범위를 위와 같이 지정한다

 

 

변경사항을 적용해야 하므로 FindOrCreateGameSession 메서드에 대한 배포를 진행한다

 

2 - 3) 부여된 커스텀 스코프 테스트

# 1) 토큰 발급
aws gamelift get-compute-auth-token ^
--fleet-id "플릿 ID" ^
--compute-name "컴퓨팅 자원 이름" ^
--region "사용중인 리전" ^
--profile "프로필 이름" // 해당 옵션은 필요한 경우 사용

# 2) 발급된 토큰을 사용하여 서버 exe 파일 실행
"경로\Build\Build_2\운영체제Server\프로젝트Server.exe" -log -glAnywhere ^
-glAnywhereAuthToken="발급된토큰" ^
-glAnywhereHostId="컴퓨팅 자원 이름" ^
-glAnywhereFleetId="플릿 ID" ^
-glAnywhereWebSocketUrl="리전에 따른 소켓 URL" ^
-port=7777 // 기본 포트번호

 

위와 같이 cmd 창에 입력하여 서버 exe 파일을 실행한다

 

 

클라이언트의 exe 파일을 실행한 후에 GameSession에 입장하려고 하면

권한 토큰이 부여되지 않은 채로 입장하려고 시도하여 에러가 발생하는 것을 확인할 수 있다

 

- 최종 실행 결과

728x90
반응형