스토리지를 사용하려고 S3를 보다가 AWS의 서비스를 둘러보게 되었는데 Cognito라는 흥미로운 시스템이 있어서 적용해보고 싶어졌다.
어느 플렛폼이든 디바이스든 하나의 풀에서 유일한 ID를 발급하여 관리할 수 있도록 해주는 시스템이라고 한다. 전에 쿠키런킹덤과 쿠키런 오븐 브레이크를 했을 때도 DevPlay로 통일했던 거 같은데 이런 시스템 아니였을까 생각만 해본다.
작업순서
1. Cognito에서 유저 풀 생성
2. DemoCode를 visual studio 2019에서 동작하도록 수정
3. 테스트
1. Cognito에서 유저 풀 생성
https://aws.amazon.com/ko/blogs/gametech/how-to-set-up-player-authentication-with-amazon-cognito/
How to Set Up Player Authentication with Amazon Cognito | Amazon Web Services
Game development is all about the players. Personalizing a game experience can be key to transforming first time players into invested fans who keep coming back to your game day after day. But to offer a unique experience to a player, you need to be able t
aws.amazon.com
유저 풀을 생성하는 방법은 공식에 잘 나와있다.
먼저, 아마존 서비스에서 Cognito를 선택한다.
사용자 풀 관리를 선택한다.
풀 이름을 입력한 후에 기본값 검토를 선택한다. 설정을 순서대로 진행을 선택하면 세세하게 설정이 가능하다.
풀 생성을 클릭하면 쉽게 풀을 생성할 수 있다.
다음은 왼쪽 탭에서 앱 클라이언트를 클릭한다.
사용자 풀에 액세스할 수 있도록 앱 클라이언트를 추가한다.
앱 클라이언트를 입력한 후
에 보안이 좀더 떨어지지만 데모를 확인하기 위해 보안키 설정은 해제한다.
앱 클라이언트를 생성하면
해당 앱클라이언트에 발급된 ID를 확인할 수 있다.
2. DemoCode를 visual studio 2019에서 동작하도록 수정
DemoCode : https://github.com/aws-samples/amazon-cognito-gamelogin-sample
GitHub - aws-samples/amazon-cognito-gamelogin-sample: A basic demo of logging in to a game server with Amazon Cognito.
A basic demo of logging in to a game server with Amazon Cognito. - GitHub - aws-samples/amazon-cognito-gamelogin-sample: A basic demo of logging in to a game server with Amazon Cognito.
github.com
위의 코드를 다운로드 받은 후에
1.에서 발급받은 앱 클라이언트ID를 ClientSettings.h입력한다.
ServerSettings.h의 Region도 수정해준다.
Region은 AWS Console에서 상단 우측의 지역을 클릭해보면 확인할 수 있다.
visual studio 2019에서 처음 켜보면 동작을 하지 않는데
먼저, 도구->Nuget 패키지 관리자->솔루션용 NuGet 패키지 관리자나 패키지 관리자 콘솔을 열면
복원하라는 메세지가 뜨는데 이를 복원하면 된다.
혹시 출력되지 않는다면 아래 패키지 목록을 검색해 설치한다.
그 후에 빌드를 하려고 하면 외부참조 에러가 출력되는데
라이브러리 2개를 추가해주어야한다.
각각 솔루션(GameLoginClient, GameLoginServer) 오른클릭을 한 후 속성페이지에서 솔루션 플렛폼에 맞는 라이브러리가 있는 경로를 추가해준다. 구성이 Release이고 플렛폼이 x64라면 아래의 경로로 설정해준다.
1. aws-cpp-sdk-cognito-idp.lib
amazon-cognito-gamelogin-sample-master\GameLoginClient\packages\AWSSDKCPP-CognitoIdentityProvider.1.6.20160418.25\build\native\lib\x64\Release\v141\dynamic
2. aws-cpp-sdk-core.lib
amazon-cognito-gamelogin-sample-master\GameLoginClient\packages\AWSSDKCPP-Core.1.6.25\build\native\lib\x64\Release\v141\dynamic
위의 라이브러리를 추가한다.
3. 테스트
이제 빌드를 하면
amazon-cognito-gamelogin-sample-master\GameLoginClient\x64\Release
경로에 실행파일이 생성되는데 dll이 필요하다.
1. aws-cpp-sdk-cognito-idp.dll
amazon-cognito-gamelogin-sample-master\GameLoginClient\packages\AWSSDKCPP-CognitoIdentityProvider.redist.1.6.20160418.25\build\native\bin\x64\Release\v141\dynamic
2. aws-cpp-sdk-core.dll
amazon-cognito-gamelogin-sample-master\GameLoginClient\packages\AWSSDKCPP-Core.redist.1.6.25\build\native\bin\x64\Release\v141\dynamic
위 경로의 각각의 dll을 복붙하고 server와 client를 실행해본다.(client는 연결되는데 시간이 좀 걸린다.)
먼저 가입을 해준다. 위에서 증명은 email로 했기 때문에 메일함에 가보면
code가 온 것을 확인할 수 있고
다시 콘솔에서 3을 선택하여 위의 코드로 인증을 한다.
다시 AWS Cognito의 유저풀을 확인해보면 사용자가 추가된 걸 확인할 수 있다.
다시 콘솔로 돌아와 로그인을 시도하면 성공적으로 로그인되는 걸 확인할 수 있다.