1.시스템&인프라/MistServer

7. MistServer API 인증 방식 및 주요 API 이해

쿼드큐브 2025. 4. 11. 18:12
728x90
반응형

MistServer API 인증 방법과 HTTP 및 WebSocket API의 차이를 상세히 정리했습니다.

 

MistServer API 인증 방식 및 주요 API 이해

 

목차

1. MistServer API 개요: ver 3.5

2. MistServer API 인증 방식

3. HTTP API vs WebSocket 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 방식)

MistServer api 인증 흐름

 

(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

 

728x90
반응형