MistServer API 인증 방법과 HTTP 및 WebSocket API의 차이를 상세히 정리했습니다.
MistServer API 인증 방식 및 주요 API 이해
목차
1. MistServer API 개요: ver 3.5
MistServer는 미디어 스트리밍 서버로, 자체 API를 통해 서버를 원격으로 제어할 수 있습니다.
API는 JSON 형식의 데이터를 주고받으며, HTTP 및 WebSocket 두 가지 방식으로 호출할 수 있습니다.
- 기본 API 포트는 4242
- 엔드포인트는 /api, /api2
- /api2는 기본적으로 minimal 옵션이 적용되어 응답이 더 간결
API 호출은 HTTP GET/POST로 수행되며, 요청 시 command 파라미터에 JSON 문자열을 포함해야 합니다.
POST http://yourserver:4242/api
Content-Type: application/x-www-form-urlencoded
command={"load":"Streams"}
- /api는 전체 정보 포함 (streams, config, log 등)
- /api2는 요청한 정보만 응답
2. MistServer API 인증 방식
MistServer는 로컬과 외부 요청을 구분하여 인증 여부를 결정합니다.
◆ 로컬 인증
- MistServer가 실행 중인 동일한 머신에서 API를 호출하는 경우, 인증이 필요 없습니다.
- 로그인 없이 API 및 웹 인터페이스를 자유롭게 사용할 수 있습니다.
◆ 외부 인증
- MistServer에 최소 1회 인증이 필요합니다.
- 연결이 유지되는 동안 재인증은 필요 없지만, 원할 경우 다시 인증할 수 있습니다.
- API요청시 마다 인증정보를 포함해야 합니다.
◆ 인증 요청 흐름(Challenge 방식)
(1) 최초로 사용자 ID 값 (암호: 공백) 을 이용한 json 문자열을 서버로 전송하여 인증을 요청합니다.
(2) 서버는 challenge 문자열을 포함한 응답 메시지를 전송합니다.
(3) 클라이언트는 아래 규칙으로 생성한 패스워드 문자열을 서버로 재 전송하여 인증을 요청합니다.
- 인증용 passowrd 문자열 생성 규칙 : password = MD5( MD5(“비밀번호”) + challenge)
- challenge 값은 (2) 과정에서 응답받은 challedge 메세지를 사용합니다.
(4) 인증이 완료되면 서버는 "status":"OK" 응답메세지를 전송합니다.
상태 값 | 설명 |
OK | 로그인 완료. API 요청 가능. |
CHALL | 로그인되지 않음. challenge 값 제공됨. |
NOACC | 사용할 계정 없음 → 최초 계정 생성 가능. |
ACC_MADE | 계정 생성 완료. 이제 로그인 가능. |
◆ HTTP 헤더 인증 방식
- 인증 정보를 HTTP 헤더로도 전송할 수 있습니다.
- WebSocket API에서는 반드시 이 방식 사용이 필요합니다.
Authorization: json {"username":"admin","password":"<해시값>"}
- challenge는 응답 헤더에서 확인 가능:
WWW-Authenticate: json {"status":"CHALL", "challenge":"abcdef1234567890"}
- 인증 후에는 API 요청 시 body에 별도 인증정보를 포함하지 않아도 됩니다.
3. HTTP API vs WebSocket API
HTTP API는 특정 설정을 변경하거나, 특정 시점의 정보를 조회할 때 적합합니다.
WebSocket API를 사용하면 실시간으로 변경되는 데이터를 자동으로 푸시 받을 수 있습니다.
항목 | HTTP API | WebSocket API |
연결 방식 | 요청/응답 방식 | 실시간 연결 유지 |
용도 | 설정 변경, 데이터 조회 | 실시간 로그, 상태 모니터링 |
데이터 수신 | 요청 시 | 자동 푸시 |
응답 형식 | JSON 객체 | JSON 배열 (이벤트 기반) |
◆ 실시간 WebSocket API 종류
요청 파라미터 | 설명 |
?logs=AMOUNT | 최근 로그 + 실시간 로그 푸시 |
?logs=since:UNIXTIME | 특정 시간 이후 로그 수신 |
?accs=AMOUNT | 접근 로그 수신 |
?streams=1 | 스트림 상태 실시간 수신 |
?logs=100&accs=100&streams=1 | 모든 데이터 실시간 수신 |
◆ HTTP API 정리
카테고리 | API명 | 설명 |
기본 정보 및 설정 | Capabilities | 시스템 기본 정보 및 입력/출력 목록 조회 |
Config | MistServer 핵심 설정 변경 | |
Config_backup | 현재 설정을 백업 | |
Config_restore | 백업된 설정을 복원 | |
UI_settings | 설정 파일에 임의의 JSON 데이터 저장 | |
Save | 현재 MistServer 설정 저장 | |
스트림 관리 | Streams | 모든 스트림 조회/추가/삭제 |
Addstream | 스트림 추가 | |
Deletestream | 특정 스트림 삭제 | |
Deletestreamsource | 스트림 및 해당 소스 삭제 | |
Nuke_stream | 스트림을 완전히 종료 및 재설정 | |
No_unconfigured_streams | 설정되지 않은 스트림 제거 | |
Active_streams | 현재 활성화된 스트림 목록 조회 | |
Stats_streams | 통계 데이터를 가지고 있는 스트림 목록 조회 | |
프로토콜 관리 | Addprotocol | 프로토콜 활성화 |
Deleteprotocol | 프로토콜 삭제 | |
Updateprotocol | 프로토콜 정보 업데이트 | |
로그 및 모니터링 | Log | MistServer 로그 메시지 조회 |
Clearstatlogs | MistServer 로그 삭제 | |
Clients | 현재 연결된 클라이언트 목록 조회 | |
Totals | 특정 기간 내 클라이언트 및 데이터 합계 조회 | |
Proc_list | 실행 중인 프로세스 목록 조회 | |
업데이트 관리 | Update | MistServer 업데이트 확인 |
Autoupdate | 자동 업데이트 확인 | |
Checkupdate | 업데이트 가능 여부 확인 | |
세션 및 연결 관리 | Invalidate_sessions | 현재 세션 무효화 (새로운 인증 요구) |
Stop_sessions | 특정 스트림 또는 프로토콜을 사용하는 세션 종료 | |
Stop_sessID | 특정 세션 ID의 세션 종료 | |
Stop_tag | 특정 태그를 가진 세션 종료 | |
Tag_sessID | 특정 세션 ID에 태그 추가 | |
푸시(Push) 기능 관리 | Push_start | 특정 스트림을 푸시(전송) 또는 녹화 시작 |
Push_list | 현재 활성화된 푸시 목록 조회 | |
Push_stop | 특정 푸시 중단 | |
Push_auto_add | 자동 푸시 규칙 추가 | |
Push_auto_remove | 자동 푸시 규칙 삭제 | |
Push_auto_list | 설정된 자동 푸시 목록 조회 | |
Push_settings | 자동 푸시 규칙 설정 | |
파일 및 서버 관리 | Browse | 서버 내 파일 탐색 |
API_endpoint | 현재 TCP API 엔드포인트 조회 | |
Shutdown | MistServer 종료 | |
태그(Tag) 기능 | Tag_stream | 스트림에 태그 추가 (푸시 및 트리거와 함께 사용) |
Untag_stream | 스트림에서 태그 제거 | |
Stream_tags | 특정 스트림에 적용된 태그 목록 조회 |
관련 글 링크
https://docs.mistserver.org/mistserver/integration/api/
API | MistServer documentation
The Mistserver API Introduction
docs.mistserver.org
'1.시스템&인프라 > MistServer' 카테고리의 다른 글
8. MistServer Stream 관리 API 사용 예제 (0) | 2025.04.14 |
---|---|
6. MistServer DVR 스트림 녹화 설정: Time-Shift 재생 (0) | 2025.04.11 |
5. MistServer Stream 녹화 설정 및 테스트: Push (0) | 2025.04.11 |
4. MistServer Stream 설정 및 재생 테스트: Inputs,Outputs (0) | 2025.04.11 |
3.MistServer 스트리밍 이해하기: Inputs,Outputs,Push,Recording (0) | 2025.04.11 |