기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용자 지정 인증을 AWS IoT Core 사용하여 연결
장치 메시징을 AWS IoT Core AWS IoT Core 지원하는 모든 프로토콜의 사용자 지정 인증을 사용하여 장치에 연결할 수 있습니다. 지원되는 통신 프로토콜에 대한 자세한 내용은 디바이스 통신 프로토콜 단원을 참조하세요. 권한 부여자 Lambda 함수에 전달하는 연결 데이터는 사용하는 프로토콜에 따라 다릅니다. 권한 부여자 Lambda 함수를 만드는 방법에 대한 자세한 내용은 Lambda 함수 정의 단원을 참조하세요. 다음 단원에서는 지원되는 각 프로토콜을 사용하여 인증에 연결하는 방법을 설명합니다.
HTTPS
HTTPPublish를 사용하여 AWS IoT Core 데이터를 보내는 기기는 요청 헤더나 요청의 쿼리 매개변수를 통해 자격 증명을 전달할 API 수 있습니다 HTTPPOST. 디바이스는 x-amz-customauthorizer-name
헤더 또는 쿼리 파라미터를 사용하여 호출할 권한 부여자를 지정할 수 있습니다. 권한 부여자에서 토큰 서명을 활성화한 경우 요청 헤더 또는 쿼리 파라미터 중 하나에서
및 token-key-name
x-amz-customauthorizer-signature
을(를) 전달해야 합니다. 브라우저 내에서 사용할 JavaScript 때는
값을 URL -인코딩해야 한다는 점에 유의하십시오.token-signature
참고
HTTPS프로토콜의 고객 권한 부여자는 게시 작업만 지원합니다. HTTPS프로토콜에 대한 자세한 내용은 을 참조하십시오디바이스 통신 프로토콜.
다음 예제 요청은 요청 헤더와 쿼리 파라미터 모두에서 이러한 파라미터를 전달하는 방법을 보여 줍니다.
//Passing credentials via headers POST /topics/topic?qos=qos HTTP/1.1 Host: your-endpoint x-amz-customauthorizer-signature:
token-signature
token-key-name
:token-value
x-amz-customauthorizer-name:authorizer-name
//Passing credentials via query parameters POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
HTTP/1.1
MQTT
MQTT연결을 사용하여 연결하는 AWS IoT Core 장치는 MQTT 메시지의 username
및 password
필드를 통해 자격 증명을 전달할 수 있습니다. username
값에는 추가 값(토큰, 서명 및 권한 부여자 이름 포함)을 권한 부여자에게 전달하는 쿼리 문자열이 선택적으로 포함될 수도 있습니다. username
및 password
값 대신 토큰 기반 인증 체계를 사용하려는 경우 이 쿼리 문자열을 사용할 수 있습니다.
참고
암호 필드의 데이터는 base64로 인코딩됩니다. AWS IoT Core디코딩은 Lambda 함수로 해야 합니다.
다음 예제는 토큰 및 서명을 지정하는 추가 파라미터가 포함된 username
문자열을 포함합니다.
username?x-amz-customauthorizer-name=
authorizer-name
&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
권한 부여자를 호출하려면 사용자 지정 인증을 사용하여 MQTT 연결하는 장치를 포트 AWS IoT Core 443에서 연결해야 합니다. 또한 값이 1인 응용 프로그램 계층 프로토콜 협상 (ALPN) TLS mqtt
확장과 데이터 엔드포인트의 호스트 이름을 포함하는 서버 이름 표시 (SNI) 확장자를 전달해야 합니다 AWS IoT Core . 잠재적 오류를 방지하려면 의 값을 x-amz-customauthorizer-signature
URL 인코딩해야 합니다. 또한 의 x-amz-customauthorizer-name
값과 token-key-name
URL 인코딩을 적극 권장합니다. 이러한 값에 대한 자세한 정보는 디바이스 통신 프로토콜 섹션을 참조하세요. V2 AWS IoT 디바이스 SDK, 모바일 SDK, AWS IoT 디바이스 클라이언트는 이 두 확장을 모두 구성할 수 있습니다.
MQTT넘버 WebSockets
MQTTOver를 AWS IoT Core 사용하여 연결하는 장치는 다음 두 가지 방법 중 하나로 자격 증명을 전달할 WebSockets 수 있습니다.
-
요청 헤더나 쿼리 파라미터를 통해 WebSockets 연결을 설정합니다. HTTP UPGRADE
-
MQTTCONNECT메시지의
username
및password
필드를 통해
MQTT연결 메시지를 통해 자격 증명을 전달하는 경우 ALPN 및 SNI TLS 확장자가 필요합니다. 이러한 확장에 대한 자세한 내용은 을 참조하십시오MQTT. 다음 예는 HTTP 업그레이드 요청을 통해 자격 증명을 전달하는 방법을 보여줍니다.
GET /mqtt HTTP/1.1 Host: your-endpoint Upgrade: WebSocket Connection: Upgrade x-amz-customauthorizer-signature:
token-signature
token-key-name
:token-value
sec-WebSocket-Key:any random base64 value
sec-websocket-protocol: mqtt sec-WebSocket-Version:websocket version
토큰에 서명하기
create-authorizer
호출에서 사용한 퍼블릭-프라이빗 키 페어의 프라이빗 키를 사용하여 토큰에 서명해야 합니다. 다음 예제는 UNIX 유사 명령어 및 JavaScript 를 사용하여 토큰 서명을 생성하는 방법을 보여줍니다. 이들은 SHA -256 해시 알고리즘을 사용하여 서명을 인코딩합니다.