기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용자 지정 인증을 사용하여 AWS IoT Core 에 연결
디바이스는 AWS IoT Core 에서 디바이스 메시징을 AWS IoT Core 지원하는 모든 프로토콜에서 사용자 지정 인증을 사용하여 에 연결할 수 있습니다. 지원되는 통신 프로토콜에 대한 자세한 내용은 디바이스 통신 프로토콜 단원을 참조하세요. 권한 부여자 Lambda 함수에 전달하는 연결 데이터는 사용하는 프로토콜에 따라 다릅니다. 권한 부여자 Lambda 함수를 만드는 방법에 대한 자세한 내용은 Lambda 함수 정의 단원을 참조하세요. 다음 단원에서는 지원되는 각 프로토콜을 사용하여 인증에 연결하는 방법을 설명합니다.
HTTPS
HTTP 게시API를 사용하여 AWS IoT Core 로 데이터를 보내는 디바이스는 요청 헤더 또는 HTTP POST 요청의 쿼리 파라미터를 통해 보안 인증을 전달할 수 있습니다. 디바이스는 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 사용하여 에 연결하는 디바이스는 username
및 MQTT 메시지 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에 연결되어야 합니다. 또한 값이 인 Application Layer Protocol Negotiation(ALPN) TLS 확장mqtt
과 AWS IoT Core 데이터 엔드포인트의 호스트 이름이 인 Server Name Indication(SNI) 확장을 전달해야 합니다. 잠재적 오류를 방지하려면 의 값을 URL 인코딩x-amz-customauthorizer-signature
해야 합니다. 또한 x-amz-customauthorizer-name
및 값을 token-key-name
URL 인코딩하는 것이 좋습니다. 이러한 값에 대한 자세한 정보는 디바이스 통신 프로토콜 섹션을 참조하세요. V2 AWS IoT 디바이스 SDK, 모바일 SDK, AWS IoT 디바이스 클라이언트는 이 두 확장을 모두 구성할 수 있습니다.
MQTT 초과 WebSockets
MQTT 를 AWS IoT Core 사용하여 에 연결하는 디바이스는 다음 두 가지 방법 중 하나로 보안 인증 정보를 전달할 WebSockets 수 있습니다.
-
요청 헤더 또는 HTTP UPGRADE 요청의 쿼리 파라미터를 통해 WebSockets 연결을 설정합니다.
-
MQTT CONNECT 메시지의
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-like 명령 및 를 사용하여 토큰 서명을 생성하는 방법을 보여줍니다 JavaScript. SHA-256 해시 알고리즘을 사용하여 서명을 인코딩합니다.