
아래에 설명된 특정 인증 방법을 사용하여 HTTP를 통해 비디오 스트리밍을 만들려고 노력하고 있지만 이에 접근하는 방법을 잘 모르겠습니다.
현재 저는 인터넷을 통해 로컬 카메라의 비디오 스트림을 쉽게 전달할 수 있는 Motion 패키지를 사용하고 있습니다. 또한 사용자 이름과 비밀번호로 인증을 제공합니다. 그러나 내 사용 사례에서는 이것이 이상적이지 않습니다.
내 생각은 주문형으로 사용자에게 제한된 시간 동안 스트림에 반복적으로 액세스할 수 있는 링크를 제공할 수 있기를 원한다는 것입니다. 이상적으로 이는 URL 매개변수 형식의 토큰입니다(https://www.link.com/stream?authId=FGJNDKD1256DD), 이를 통해 이 토큰을 가진 사람은 누구나 다른 인증 없이 스트림에 연결할 수 있지만 토큰도 1시간 후에 만료됩니다.
누구든지 이것을 달성하는 방법을 알고 있습니까? 사용자 정의 토큰 생성 및 권한 부여 처리 기능을 갖춘 자체 웹 애플리케이션을 작성해야 합니까? 아니면 기본적으로 이러한 종류의 권한 부여를 제공하는 웹 서버가 있습니까?
감사합니다
답변1
원하는 비디오 스트리밍 인증 방법을 얻으려면 맞춤형 솔루션을 구현해야 할 수도 있습니다. 한 가지 가능한 접근 방식은 비디오 스트림에 대한 액세스를 요청하는 각 사용자에 대해 고유한 토큰을 생성하고 해당 토큰을 만료 시간과 연결하는 것입니다.
이를 구현하기 위해 취할 수 있는 몇 가지 단계는 다음과 같습니다.
- 임의 토큰 문자열 생성: Python에서 uuid와 같은 라이브러리를 사용하여 고유한 토큰 문자열을 생성할 수 있습니다.
- 토큰 및 만료 시간 저장: 이 정보를 SQLite 또는 MySQL과 같은 데이터베이스에 저장할 수 있습니다. 사용자가 비디오 스트림에 대한 액세스를 요청할 때마다 데이터베이스와 비교하여 토큰을 확인하여 유효성과 만료 시간을 확인할 수 있습니다.
- 비디오 스트리밍을 위한 사용자 정의 엔드포인트 생성: 토큰을 매개변수로 받아들이고 데이터베이스와 비교하여 확인하는 사용자 정의 엔드포인트를 생성할 수 있습니다. 토큰이 유효하고 만료되지 않은 경우 엔드포인트는 비디오 스트림을 반환할 수 있습니다. 토큰이 유효하지 않거나 만료된 경우 엔드포인트는 오류 메시지를 반환할 수 있습니다.
- 비디오 스트림 제공: NGINX와 같은 웹 서버를 사용하여 비디오 스트림을 제공할 수 있습니다. NGINX는 HLS(HTTP 라이브 스트리밍)를 지원하며 MP4 및 MPEG-TS를 포함한 다양한 형식의 비디오를 제공할 수 있습니다.
전반적으로 이 접근 방식에는 프로그래밍과 데이터베이스 설정이 필요하지만 이를 통해 찾고 있는 특정 인증 방법을 제공할 수 있습니다.
답변2
UUID나 GUID와 같은 고유 ID나 시간 + 솔트 값이 포함된 해시 사용자 이름을 제공하기만 하면 됩니다. 만료 날짜가 있는 조회 테이블에 생성 시 해당 키를 저장합니다.
URL이 키를 전달하고 키가 조회됩니다. 만료가 지난 경우에는 적용되지 않습니다.
만료된 키 테이블을 정기적으로 삭제합니다.