이 가이드의 단계를 완료하려면 Amazon Chime 시스템 관리자여야 합니다. Amazon Chime 데스크톱 클라이언트, 웹 앱 또는 모바일 앱과 관련하여 도움이 필요한 경우 Amazon Chime 사용 설명서의 지원 받기를 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
챗봇 요청 인증
Amazon Chime 채팅룸에서 챗봇에 전송된 요청을 인증할 수 있습니다. 이렇게 하려면 요청에 따라 서명을 계산합니다. 그런 다음, 계산된 서명이 요청 헤더의 서명과 일치하는지 확인합니다. Amazon Chime은 HMAC SHA256 해시를 사용하여 서명을 생성합니다.
아웃바운드 HTTPS 엔드포인트를 사용하여 Amazon Chime에 대해 챗봇을 구성한 경우 아래의 인증 단계를 따르세요.
아웃바운드 HTTPS 엔드포인트가 구성된 챗봇에 대해 Amazon Chime의 서명된 요청을 검증하려면
HTTP 요청에서 Chime-Signature 헤더를 가져옵니다.
Chime-Request-Timestamp 헤더와 요청 본문을 가져옵니다. 그런 다음 세로 막대를 두 요소 간의 구분 기호로 사용하여 문자열을 작성합니다.
CreateBot 응답의 SecurityToken을 HMAC_SHA_256의 초기 키로 사용하고 2단계에서 생성한 문자열을 해싱합니다.
Base64 인코더로 해싱한 바이트를 서명 문자열에 인코딩합니다.
계산된 이 서명을 Chime-Signature 헤더에 있는 서명과 비교합니다.
다음은 Java를 사용하여 서명을 생성하는 방법을 설명하는 코드 샘플입니다.
private final String DELIMITER = "|"; private final String HMAC_SHA_256 = "HmacSHA256"; private String generateSignature(String securityToken, String requestTime, String requestBody) { try { final Mac mac = Mac.getInstance(HMAC_SHA_256); SecretKeySpec key = new SecretKeySpec(securityToken.getBytes(UTF_8), HMAC_SHA_256); mac.init(key); String data = requestTime + DELIMITER + requestBody; byte[] rawHmac = mac.doFinal(data.getBytes(UTF_8)); return Base64.getEncoder().encodeToString(rawHmac); } catch (Exception e) { throw e; } }
아웃바운드 HTTPS 엔드포인트는 2초 이내에 Amazon Chime의 200 OK
요청에 응답해야 합니다. 그렇지 않으면 요청이 실패합니다. 연결 또는 읽기 제한 시간으로 인해 2초 후 아웃바운드 HTTPS 엔드포인트를 사용할 수 없거나, Amazon Chime이 5xx 응답 코드를 수신하는 경우 Amazon Chime에서는 요청을 두 번 재시도합니다. 첫 번째 재시도는 초기 요청이 실패한 후 200밀리초에 전송되며, 두 번째 재시도는 이전 재시도가 실패한 후 400밀리초에 전송됩니다. 두 번째 재시도 이후에도 아웃바운드 HTTPS 엔드포인트를 계속 사용할 수 없으면 요청이 실패한 것입니다.
참고
Chime-Request-Timestamp는 요청이 재시도될 때마다 변경됩니다.
Lambda 함수 ARN을 사용하여 Amazon Chime에 대해 챗봇을 구성한 경우 아래의 인증 단계를 따르세요.
Lambda 함수 ARN이 구성된 챗봇에 대해 Amazon Chime의 서명된 요청을 확인하려면
Lambda 요청 ClientContext에서 Chime-Signature 및 Chime-Request-Timestamp를 Base64 인코딩 JSON 형식으로 가져옵니다.
{ "Chime-Signature" : "1234567890", "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z" }
요청 페이로드에서 요청의 본문을 가져옵니다.
CreateBot
응답의 SecurityToken을 HMAC_SHA_256의 초기 키로 사용하고, 생성한 문자열을 해싱합니다.Base64 인코더로 해싱한 바이트를 서명 문자열에 인코딩합니다.
계산된 이 서명을 Chime-Signature 헤더에 있는 서명과 비교합니다.
Lambda 간접 호출 중 com.amazonaws.SdkClientException
이 발생하면 Amazon Chime에서는 요청을 두 번 재시도합니다.