[coTurn] 데이터베이스에 TURN 사용자 추가

4941 단어 coturn

초기화



정적 사용자를 사용하여 coTurn에 연결했습니다.
이번에는 데이터베이스 파일(SQLite)에 사용자를 추가하겠습니다.


  • 사용자 추가



    "turnadmin"으로 사용자를 추가할 수 있지만 그렇게 하기 전에 "turnserver.conf"를 수정해야 합니다.

    Ubuntu의 기본 데이터베이스 파일은 "/var/lib/turn/turndb"에 있습니다.
    coTurn이 해당 데이터베이스 파일을 읽도록 지정해야 합니다.

    turnserver.conf



    ...
    #
    # SQLite database file name.
    #
    # The default file name is /var/db/turndb or /usr/local/var/db/turndb or
    # /var/lib/turn/turndb.
    #
    userdb=/var/lib/turn/turndb
    ...
    

    coTurn 데이터베이스의 스키마는 여기에 있습니다.
  • schema.sql - coturn - GitHub

  • 사용자를 추가하려면 "turnadmin"명령을 사용합니다.

    sudo turnadmin -a -u username2 -p password2 -r 192.168.XX.YYY --db /var/lib/turn/turndb 
    


  • -a: 장기 사용자 추가 또는 업데이트
  • -u: 사용자 이름
  • -p: 암호
  • -r: 영역
  • --db: 데이터베이스 파일 경로
  • coturn/README.turnadmin - GitHub

  • "SQLite 연결이 닫혔습니다"?



    명령을 실행한 후 터미널에 다음 두 줄이 표시되었습니다.

    0: : SQLite connection was closed.
    0: : log file opened: /var/log/turn_41547_2022-09-10.log
    


    명령이 실패한 것 같아서 해결 방법을 찾아봤습니다.
    마지막으로 이러한 출력이 명령 성공 또는 실패를 나타내지 않는다는 것을 알았습니다.

    따라서 이 명령으로 결과를 얻을 수 있습니다.

    sqlite3 /var/lib/turn/turndb "SELECT * FROM turnusers_lt"
    


    이제 사용자를 사용하여 coTurn과 연결할 수 있습니다.

    webrtc.controller.ts




    ...
            this.peerConnection = new RTCPeerConnection({
                iceServers: [{
                    urls: "turn:local-turn.jp:443",
                    username: "username2",
                    credential: "password2",
                }],
                // Force using STUN or TURN servers. 
                iceTransportPolicy: "relay"
            });
    ...
    


    OAuth(실패)



    또한 OAuth를 사용하여 coTurn에 연결해 보았습니다.
    이번에는 Authorize 서버 기능을 내 웹 애플리케이션에 추가하기로 결정했습니다.

    먼저 coTurn 구성 파일에서 OAuth를 활성화했습니다.

    turnserver.conf



    ...
    # Server name used for
    # the oAuth authentication purposes.
    # The default value is the realm name.
    #
    server-name=localhost:4444
    
    # Flag that allows oAuth authentication.
    #
    oauth
    ...
    

    그리고 데이터베이스에 OAuth 키를 추가했습니다.

    sqlite3 /var/lib/turn/turndb "INSERT INTO oauth_key (kid,ikm_key,timestamp,lifetime,as_rs_alg,realm) values('north','MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEK',0,0,'A256GCM','192.168.XX.YYY')"
    


    하지만 JavaScript에서 OAuth 키를 사용하는 방법을 찾을 수 없습니다.

    "credential"은 문자열 값이어야 하고 "credentialType"은 "password"여야 하므로 이 게시물과 같이 작성할 수 없습니다.
    그리고 "username"과 "credential"을 생략할 수 없었습니다.
  • How to setup coturn for oauth authentication - StackOverflow

  • TURN에는 타사 인증을 사용하는 사양이 있으므로 계속해서 솔루션을 찾아 보겠습니다.
  • RFC7635 - Session Traversal Utilities for NAT (STUN) Extension for Third-Party Authorization
  • 좋은 웹페이지 즐겨찾기