인증 결과 요청시 500 에러

안녕하세요.

인증 구현중 오류가 발생하여 문의 드립니다.

게임 서버에서 인증 마지막 단계인 결과 정보 요청시 오류 입니다.

4. 본인확인 상태 조회하기

토스 본인확인 상태 조회 성공: uId[9Lxxxxxxxxx], txId[f7xxxxxxxxxxxx],
 status[COMPLETED]

는 성공을 하여

5. 본인확인 결과 조회하기

를 요청을 하였는데요.

요청 정보
url[https://cert.toss.im/api/v2/sign/user/auth/id/result], 
method[POST], 
headers[Content-Type: application/json, Authorization: Bearer eyJraWxxxxxxxxxxxx ... ], 
requestBody[{"sessionKey":"HulfXqwbD2cIPOQ7K7HmIcWlMw+1eomNB5QRK9Ur29o=","txId":"f79xxxxxxxxxxxxxxxxxx"}]

이렇게 요청을 하였으며 sessionkey는 게임서버에서 임시로 만들어서 넣었습니다.


응답 정보
statusCode[500 INTERNAL_SERVER_ERROR], 
txId[f79xxxxxxxxxxxxxxxx], 
responseBody[{"resultType":"FAIL","error":{"errorType":0,"errorCode":"CE0001","reason":"시스템 장애로 인하여 통신이 원활하지 않습니다.","data":{},"title":null},"success":null}]

라고 왔는데 500 에러가 나는 이유를 모르겠습니다.

다음주에 서비스 오픈이라 빠르게 확인 부탁드립니다.

감사합니다.

1개의 좋아요

@seghope 님 안녕하세요 확인해보겠습니다

client id 부탁드려도 될까요?

저는 현재 정상적으로 호출이 되는데 다시 확인을 부탁드려도 될까요?

테스트용으로 확인하고 있습니다.
client-id: test_a8e23336d673ca70922b485fe806eb2d
client-secret: test_418087247d66da09fda1964dc4734e453c7cf66a7a9e3

다시 확인해보았는데 아직도 안되고 있습니다.

확인해보니 세션키 복호화 오류로 인해 해당 응답이 return 되었습니다 세션키 생성하시어 테스트를 부탁드릴게요.

/**

 *\* 요청/응답 AES 암·복호화용 세션 키를 생성합니다.*

 *\* 매 요청마다 새로운 랜덤 키를 생성하며, 인증 요청에서 사용한 세션 키는 재사용하지 않습니다.*

 *\* @return AES-256용 Base64 인코딩된 키 문자열 (32바이트)*

 *\*/*

public String **generateAESSessionKey**() {

    try {

        SecureRandom secureRandom = new SecureRandom();

        byte\[\] keyBytes = new byte\[32\]; *// AES-256은 32바이트(256비트) 키 필요*

        secureRandom.nextBytes(keyBytes);

        

        String base64Key = Base64.getEncoder().encodeToString(keyBytes);

        

        logger.debug("AES 세션 키 생성 완료 (매 요청마다 새로운 키)");

        return base64Key;

        

    } catch (Exception *e*) {

        logger.error("AES 세션 키 생성 실패: error\[{}\]", e.getMessage(), e);

        return null;

    }

}

이렇게 구현하였는데요.
sessionKey 관련 가이드 문서가 있을까요? 인증 → 개발하기 문서에는 따로 적어 있지 않아서요
확인 부탁드립니다.

혹시 암호화 할떼 txId를 이용해서 만들어야 할까요?

안녕하세요 :slight_smile:

각 언어별 예제에 /src/functions를 보시면 sessionKey 만드는 함수를 확인할 수 있습니다 :man_bowing:

소스 확인하였습니다. 감사합니다.
base64PublicKey 는 사전에 전달 받은 공개키
공개키는 소스에 있는것을 사용하면 될까요? 따로 요청을 해야 할까요?
요청을 한다면 어떻게 해야 할까요?

요청을 안한다면 리얼(서비스 상태)도 공개키를 그대로 사용하는지도 답변 부탁드립니다.

예제에 있는 공개키를 그대로 사용해주시면 됩니다.

가이드에 있는 세션키 생성시 사용하는 Public key 참고 부탁드려요 :slight_smile:

안녕하세요. 가이드 해주신데로 해서 알파 환경에서는 잘 해결되었습니다.

이제 모두 완료 되어 리얼(서비스) 환경에서 테스트를 진행하고 있는데요.

원터치 인증 에러가 나고 있습니다.

요청시 아래와 같은 에러가 나고 있습니다.

400 Bad Request on POST request for “https://cert.toss.im/api/v2/sign/user/auth/id/request”:

“{“resultType”:“FAIL”,“error”:{“errorType”:0,“errorCode”:“CE1001”,“reason”:“요청 권한이 없습니다.”,“data”:{},“title”:null},“success”:null}”]

AccessToken 받기 client_id, client_secret 값은 리얼환경이라 테스트용이 아닌 토스에서 발급해주신 값을 이용해서 사용중입니다.

이저 거의 다 왔습니다. ^^ 답변 부탁드립니다.

@seghope

확인해보니 내부 셋팅에 문제가 있는 것 같아 설정 확인해보고 말씀드릴게요

@seghope 님 다시 권한 부여를 해드렸습니다.

죄송하지만 다시 한번 확인 및 테스트를 부탁드립니다.

원터치 인증은 해결된것 같습니다.

저희 게임은 생일정보를 이용하고 있는데요.

이후 결과 조회시 personalData의 birthday 데이터가 들어가 있지 않습니다.
null 값입니다. 가이드 알려주시면 감사하겠습니다.

응답 정보

responseBody[{“success”:{“txId”:“56xxxxxxxx”
“status”:“COMPLETED”
“userIdentifier”:null
“userCiToken”:null
“signature”:“MIIIxxxxxxxxxxxxx”
“randomValue”:null
“completedDt”:“2025-11-21T11:35:29+09:00”
“requestedDt”:“2025-11-21T11:35:28+09:00”

“personalData”:{“ci”:null,
“name”:null,
“callingCode”:null,
“phone”:null,
“birthday”:null,
“gender”:null,
“nationality”:null,
“ci2”:null,
“di”:null,
“ciUpdate”:null,
“ageGroup”:“v1$xxxxxxxxxxxx”,
“address”:null,
“addressDetails”:null,
“zipCode”:null,
“email”:null}},“
resultType”:“SUCCESS”}]

@seghope

본인 확인 + 생년월일 수령 관련 계약이 진행되지 않아 발생한 이슈로 확인되었습니다.

다만, 개발/런칭 일정이 촉박한 점을 고려하여 현재 추가해두었어요.

다시 확인 및 테스트 부탁드립니다.

테스트 해보니 잘 넘어오는것 확인되었습니다.
감사합니다. 고생하셨습니다. ^^

@seghope 님 정말 고생많으셨습니다.

개발 다 완료되셨을까요?

금일 검수를 진행하고자 합니다.

차주 월요일 출시를 위해서는 금일 검수 후 최종 수정이 필요해보입니다.

검수 요청 후 저에게 메시지를 보내주실 수 있을까요?

넵. QA 진행중에 있습니다. 금일중으로 QA 완료시 검수 등록 하고 메시지로 전달 드리겠습니다.
감사합니다.

1개의 좋아요

안녕하세요. 방금 검수 등록 마쳐서 메일 드렸으나 참고차 이곳에도 말씀드립니다!
확인 부탁드리겠습니다.(_ _)

감사합니다.

빠르게 진행해주셔서 정말 감사드리며, 월요일 모니터링 진행할게요. 감사합니다.