อนุญาตให้ผู้ใช้ที่ได้รับอนุญาตสร้างห้อง Jitsi ด้วยการลงชื่อเข้าใช้ Keycloak

เพื่อจำกัดการสร้างห้อง Jitsi Meet ให้เฉพาะบุคคลที่กำหนด ให้กำหนดให้โฮสต์ต้องได้รับการตรวจสอบสิทธิ์ และออกข้อมูลประจำตัวให้เฉพาะบัญชีที่ได้รับอนุมัติเท่านั้น สำหรับการติดตั้งแบบโฮสต์เองใหม่ Jitsi แนะนำให้ใช้การตรวจสอบสิทธิ์แบบใช้โทเค็น คู่มือนี้ใช้ Keycloak เป็นผู้ให้บริการข้อมูลประจำตัว โดยอนุญาตให้แขกที่ได้รับเชิญเข้าร่วมห้องได้ก็ต่อเมื่อโฮสต์ที่ได้รับอนุมัติเป็นผู้เริ่มต้นห้องแล้วเท่านั้น

1. ตรวจสอบการติดตั้งใช้งานและเลือกบัญชีโฮสต์ของคุณ

คำแนะนำเหล่านี้มุ่งเป้าไปที่การติดตั้ง Jitsi Meet บนระบบโฮสต์เองจากแพ็กเกจ Debian หรือ Ubuntu โดยมีสิทธิ์ผู้ดูแลระบบในการเข้าถึง Prosody, Nginx และการกำหนดค่าเว็บของ Jitsi โดยสมมติว่า Keycloak ได้รับการติดตั้งแล้วหรือสามารถติดตั้งได้อย่างปลอดภัย Prosody คือเซิร์ฟเวอร์รับส่งข้อความ XMPP; JSON Web Token (JWT) คือข้อมูลประจำตัวที่ลงนามแล้วซึ่งใช้เพื่อพิสูจน์ว่าบุคคลนั้นได้เข้าสู่ระบบแล้ว Keycloak คือผู้ให้บริการข้อมูลประจำตัวที่จัดการการเข้าสู่ระบบของผู้ใช้

คู่มือ Jitsi ระบุว่าวิธีการยืนยันตัวตนแบบใช้ชื่อผู้ใช้และรหัสผ่านแบบเก่า (Secure Domain) นั้นล้าสมัยแล้ว และแนะนำให้ใช้การยืนยันตัวตนด้วยโทเค็นแทนในการติดตั้งใหม่คำแนะนำการยืนยัน ตัวตนฉบับปัจจุบัน ได้รับการอัปเดตเมื่อวันที่ 5 ตุลาคม 2026 หากคุณใช้ Docker อยู่แล้ว อย่าคัดลอกเส้นทางแพ็กเกจด้านล่าง: คู่มือการกำหนดค่า Docker อย่างเป็นทางการ ใช้ตัวแปรสภาพแวดล้อม เช่นENABLE_AUTH, ENABLE_GUESTS, AUTH_TYPEและ

ก่อนทำการแก้ไข โปรดจดบันทึกชื่อโฮสต์การประชุมสาธารณะของคุณ ตรวจสอบว่า HTTPS ใช้งานได้ สำรองไฟล์การกำหนดค่าที่คุณวางแผนจะเปลี่ยนแปลง และตัดสินใจว่าบัญชีผู้ใช้ใดบ้างที่สามารถเป็นเจ้าภาพการประชุมได้ ในตัวอย่างนี้ ที่อยู่การประชุมคือjitsi.example.com; โปรดแทนที่ทุกที่ด้วยชื่อโฮสต์จริงของคุณ

2. ให้สิทธิ์การเข้าถึง Keycloak เฉพาะโฮสต์ที่ได้รับอนุมัติเท่านั้น

สร้างอาณาจักรเฉพาะ

ในคอนโซลผู้ดูแลระบบ Keycloak ให้สร้างและเลือกโดเมนชื่อ `<realm>` jitsi-realmโดเมนคือกลุ่มผู้ใช้และการตั้งค่าแอปพลิเคชันที่แยกต่างหาก ปิดใช้งานการลงทะเบียนผู้ใช้แบบเปิด และหลีกเลี่ยงการนำเข้าไดเร็กทอรีบริษัทที่ไม่จำกัดโดยอัตโนมัติ: ภายใต้การกำหนดค่านี้ บัญชีใด ๆ ที่สามารถตรวจสอบสิทธิ์กับโดเมนที่ยอมรับได้ จะสามารถกลายเป็นผู้สร้างการประชุมได้

ใช้คำสั่ง `keycloak create-realm form` เพื่อตั้งชื่อเซิร์ฟเวอร์ว่า `jitsi-realm`
สร้างโดเมนแยกต่างหากเพื่อควบคุมรายชื่อผู้สร้างการประชุม Jitsi ด้วยตนเอง

ลงทะเบียนไคลเอนต์เว็บ Jitsi

สร้างไคลเอ็นต์ OpenID Connect ชื่อjitsi. OpenID Connect (OIDC) คือโปรโตคอลการลงชื่อเข้าใช้ที่ Keycloak ใช้ในการส่งข้อมูลระบุตัวตนกลับไปยัง Jitsi โดยทำตามตัวอย่างอย่างเป็นทางการของ Jitsi ป้อนค่าการเรียกกลับเหล่านี้อย่างถูกต้อง โดยปรับชื่อโฮสต์:

  • URI การเปลี่ยนเส้นทางที่ถูกต้อง:https://jitsi.example.com/static/sso.html
  • URI การเปลี่ยนเส้นทางหลังการออกจากระบบที่ถูกต้อง:https://jitsi.example.com/static/logout.html
  • ที่มาของเว็บ:https://jitsi.example.com
ช่องข้อมูลการสร้างไคลเอ็นต์ Keycloak ที่ระบุไคลเอ็นต์ Jitsi OpenID Connect
แอปพลิเคชัน Jitsi client ได้รับการลงทะเบียนเป็นแอปพลิเคชัน OpenID Connect ใน Keycloak แล้ว
การตั้งค่าไคลเอ็นต์ Keycloak แสดง URL การเปลี่ยนเส้นทางการเข้าสู่ระบบแบบ Single Sign-On ของ Jitsi
URI สำหรับการเปลี่ยนเส้นทางจะส่งโฮสต์ที่ลงชื่อเข้าใช้กลับไปยัง Jitsi หลังจากตรวจสอบสิทธิ์เสร็จสิ้น

เพิ่มบุคคลที่ได้รับอนุญาต

ภายใต้หัวข้อ ผู้ใช้ ให้สร้างบัญชีสำหรับโฮสต์ที่ได้รับอนุญาตแต่ละราย จากนั้นตั้งรหัสผ่านของผู้ใช้นั้นภายใต้ ข้อมูลรับรอง ควรใช้บัญชีแยกต่างหากแทนการใช้บัญชีผู้ดูแลระบบร่วมกัน บัญชีที่ไม่ควรสร้างการประชุมอีกต่อไปจะต้องถูกปิดใช้งานหรือปฏิเสธการเข้าถึงโดเมนนี้ หากคุณต้องการจำกัดเฉพาะกลุ่มใดกลุ่มหนึ่งภายในโดเมนที่ใช้ร่วมกัน ให้เพิ่มนโยบายการอนุญาตที่ได้รับการตรวจสอบแยกต่างหาก ขั้นตอนเหล่านี้ไม่ได้บังคับใช้การเป็นสมาชิกกลุ่ม Keycloak โดยอัตโนมัติ

รายชื่อผู้ใช้ Keycloak พร้อมบัญชีโฮสต์ที่ได้รับการอนุมัติเป็นรายบุคคล
จำกัดรายชื่อโฮสต์ Jitsi ที่มีสิทธิ์ใช้งานเฉพาะบัญชีที่ได้รับการจัดการเป็นรายบุคคลเท่านั้น
พื้นที่สำหรับใส่ข้อมูลประจำตัวผู้ใช้ Keycloak พร้อมฟังก์ชันตั้งรหัสผ่าน
ตั้งค่าข้อมูลประจำตัวแยกต่างหากสำหรับโฮสต์ที่ได้รับอนุมัติแต่ละรายการก่อนทดสอบการเข้าสู่ระบบ

3. เชื่อมต่อ Keycloak กับเซิร์ฟเวอร์ Jitsi

พร็อกซีปลายทางโดเมน Keycloak ผ่าน HTTPS

กำหนดค่า Keycloak ด้วยชื่อโฮสต์สาธารณะที่ถูกต้องและส่วนหัวพร็อกซีแบบย้อนกลับที่เชื่อถือได้ จากนั้นกำหนดเส้นทาง/realms/การร้องขอจากชื่อโฮสต์ Jitsi ของคุณไปยังตัวรับฟัง Keycloak ส่วนตัว สำหรับอินสแตนซ์ Keycloak ที่มีให้ใช้งานที่127.0.0.1:18080ให้เพิ่มบล็อกตำแหน่งต่อไปนี้ภายในบล็อกเซิร์ฟเวอร์ HTTPS ของ Jitsi Nginx ที่มีอยู่ ก่อนเส้นทางทั่วไปของ Jitsi:

location ~ ^/realms/(.*) {
    proxy_pass http://127.0.0.1:18080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

ข้อสันนิษฐานคือสามารถเข้าถึง Keycloak ได้จากเครือข่ายภายในผ่านพอร์ตนั้น โปรดเปลี่ยนพอร์ตต้นทางให้เหมาะสมกับการใช้งานของคุณ อย่าเปิดเผยคอนโซลการดูแลระบบหรือพอร์ตแบ็กเอนด์ของ Keycloak โดยไม่จำเป็น ตรวจสอบเอกสารประกอบเกี่ยวกับพร็อกซีแบบย้อนกลับของ Keycloakสำหรับการควบคุมพร็อกซีและชื่อโฮสต์ในสภาพแวดล้อมการใช้งานจริง

โปรแกรมแก้ไขข้อความที่มีการตั้งค่าบล็อกตำแหน่ง Nginx เพื่อส่งต่อคำขอโดเมนไปยัง Keycloak
ตัวแก้ไข Nginx จะแสดงส่วน realm-proxy; ให้คงเส้นทาง Jitsi อื่นๆ ไว้เหมือนเดิม

ต้องใช้โทเค็นใน Prosody

แก้ไข/etc/prosody/conf.avail/jitsi.example.com.cfg.luaเพิ่มการตั้งค่าผู้ออกและผู้รับ จากนั้นอัปเดตข้อมูลหลักที่มีอยู่VirtualHostให้ใช้การตรวจสอบสิทธิ์ด้วยโทเค็น รวมบรรทัดเหล่านี้เข้ากับการตั้งค่าอื่นๆ —อย่าสร้างสำเนาที่สองของบล็อกโฮสต์นั้น:

asap_accepted_issuers = { "https://jitsi.example.com/realms/jitsi-realm" }
asap_accepted_audiences = { "account" }
asap_require_room_claim = false

VirtualHost "jitsi.example.com"
    authentication = "token"
    app_id = "jitsi"
    allow_empty_token = false
    cache_keys_url = "https://jitsi.example.com/realms/jitsi-realm/protocol/openid-connect/certs"

สำหรับการเข้าถึงของผู้เยี่ยมชม ให้เพิ่มguest.jitsi.example.comโฮสต์เสมือนแยกต่างหากที่มีauthentication = "jitsi-anonymous", c2s_require_encryption = false, และsmacksโมดูล ตามที่แสดงในคำแนะนำของ Jitsi นี่คือโดเมน XMPP ภายใน: อย่าสร้าง DNS สาธารณะหรือใบรับรองแยกต่างหากสำหรับโดเมนนี้ ในรายการโมดูลของโฮสต์หลักที่มีอยู่ ให้เพิ่มpersistent_lobby; ในconference.jitsi.example.comรายการโมดูลส่วนประกอบ MUC ที่มีอยู่ ให้เพิ่มmuc_wait_for_hostMUC คือส่วนประกอบแชทแบบหลายผู้ใช้ที่ดูแลห้องประชุม รักษาโมดูลที่แสดงไว้แล้ว

กำหนดค่าขั้นตอนการเข้าสู่ระบบของเบราว์เซอร์

ในส่วนนี้/etc/jitsi/meet/jitsi.example.com-config.jsให้เพิ่มanonymousdomain: 'guest.jitsi.example.com'เข้าไปในhostsอ็อบเจ็กต์ที่มีอยู่แล้ว เพิ่มการตั้งค่า OIDC ตามที่ระบุในเอกสารของ Jitsi:

config.tokenAuthUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/auth?client_id=jitsi&response_type=code&scope=openid&state={state}&redirect_uri=https://'+ config.hosts.domain + '/static/sso.html&code_challenge={code_challenge}&code_challenge_method=S256';
config.tokenLogoutUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/logout?post_logout_redirect_uri=https://'+ config.hosts.domain + '/static/logout.html';
config.tokenAuthInline=true;
config.sso={ ssoService: config.hosts.domain, tokenService: config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect', clientId: "jitsi" };

ค่าเหล่านี้ใช้ขั้นตอนการลงชื่อเข้าใช้ด้วยรหัสอนุญาตโดยใช้ PKCE (Proof Key for Code Exchange) ซึ่งเป็นการป้องกันการอนุญาตผ่านเบราว์เซอร์ คู่มือ Jitsi ระบุไว้อย่างชัดเจนว่าให้ปิดjicofo.confใช้งานการตรวจสอบสิทธิ์ในโหมดโทเค็น และอย่าคัดลอกบล็อกการตรวจสอบสิทธิ์ XMPP Secure Domain ที่ล้าสมัยแล้ว

แบบฟอร์มล็อกอินของ Jitsi Meet ประกอบด้วยช่องสำหรับชื่อผู้ใช้ รหัสผ่าน และปุ่มล็อกอิน
แบบฟอร์มลงชื่อเข้าใช้ของผู้ใช้แสดงถึงการตรวจสอบข้อมูลประจำตัวก่อนที่โฮสต์ที่ได้รับอนุมัติจะสร้างห้องได้

ตรวจสอบและโหลดบริการใหม่

ตรวจสอบไวยากรณ์ของ Nginx จากนั้นรีสตาร์ทเฉพาะบริการที่ระบุไว้ในคำแนะนำการตรวจสอบสิทธิ์โทเค็นปัจจุบันเท่านั้น ดำเนินการเปลี่ยนแปลงเหล่านี้ในช่วงเวลาการบำรุงรักษาหากเซิร์ฟเวอร์ Jitsi ของคุณกำลังใช้งานอยู่

sudo nginx -t
sudo systemctl restart prosody
sudo systemctl restart nginx

4. หลีกเลี่ยงข้อผิดพลาดเกี่ยวกับการอนุญาตและการเข้าสู่ระบบเหล่านี้

  • ทุกคนยังสามารถสร้างห้องสนทนาได้:โปรดยืนยันว่าโฮสต์หลักของ Prosody ได้รับการยืนยันตัวตนด้วยโทเค็นแล้ว โทเค็นว่างเปล่าจะไม่ได้รับอนุญาต และโฮสต์ผู้ร่วมสนทนาต้องแยกต่างหาก ทดสอบในเซสชันเบราว์เซอร์ที่สะอาด ไม่ใช่เซสชันที่ยังคงมีการลงชื่อเข้าใช้ที่ถูกต้องอยู่
  • ผู้ใช้ที่ได้รับอนุญาตไม่สามารถเข้าสู่ระบบได้:โปรดเปรียบเทียบผู้ออกโดเมน Keycloak, ชื่อโฮสต์ HTTPS สาธารณะ, รหัสไคลเอ็นต์, URI การเปลี่ยนเส้นทาง และ Prosody cache_keys_urlการเปลี่ยนเส้นทางเบราว์เซอร์ที่ล้มเหลวไม่ได้หมายความว่าสิทธิ์ของผู้ใช้ถูกต้อง
  • แขกจะไม่เข้าห้องโดยตรง:ตรวจสอบโดเมนที่ไม่ระบุตัวตนทั้งใน Prosody และ Jitsi config.jsรวมถึงโมดูล wait-for-host ด้วย สถานะล็อบบี้หรือสถานะรอแขกนั้นแตกต่างจากความล้มเหลวในการตรวจสอบสิทธิ์

5. ตรวจสอบว่าใครสามารถสร้างการประชุมใหม่ได้บ้าง

เปิด URL ห้องประชุมที่ไม่เคยใช้งานมาก่อนในหน้าต่างเบราว์เซอร์แบบส่วนตัวโดยไม่ต้องลงชื่อเข้าใช้ ผู้เข้าร่วมที่เป็นแขกไม่ควรสามารถเริ่มการประชุมในฐานะโฮสต์คนแรกได้ จากนั้น ลงชื่อเข้าใช้ในฐานะผู้ใช้ Keycloak ที่ได้รับการอนุมัติและสร้างห้องประชุมนั้น แขกที่ได้รับเชิญควรจะสามารถเข้าร่วมได้หากคุณเปิดใช้งานโดเมนสำหรับแขก สุดท้าย ลองใช้บัญชีที่ถูกปิดใช้งานหรือไม่ได้รับการอนุมัติ และยืนยันว่าไม่สามารถตรวจสอบสิทธิ์และสร้างห้องประชุมใหม่ได้

หน้าจอการสร้างการประชุมใน Jitsi Meet แสดงชื่อห้องว่า team-sync และมีปุ่ม สร้างการประชุม
หลังจากผ่านการตรวจสอบการเข้าสู่ระบบแล้ว โฮสต์ที่ได้รับการยืนยันตัวตนจะป้อนชื่อห้องเพื่อเริ่มการประชุม

หากการทดสอบใดล้มเหลว ให้ตรวจสอบsudo journalctl -u prosody -u nginx --since "10 minutes ago"ควบคู่ไปกับเหตุการณ์การตรวจสอบสิทธิ์ของ Keycloak โดยไม่ต้องเผยแพร่โทเค็นหรือรหัสผ่านจากบันทึก การแก้ไขจะได้รับการยืนยันก็ต่อเมื่อบัญชีที่ได้รับอนุมัติสามารถสร้างห้องใหม่ได้ และผู้ใช้ที่ไม่ได้รับการตรวจสอบสิทธิ์ไม่สามารถทำได้

ฝากความเห็น

การตั้งค่า KVM ใน SLES 15: กำหนดให้ VM ที่เลือกเริ่มต้นทำงานเมื่อบูตเครื่อง

การตั้งค่า KVM ใน SLES 15: กำหนดให้ VM ที่เลือกเริ่มต้นทำงานเมื่อบูตเครื่อง

ติดตั้งเครื่องมือ SLES 15 KVM และ libvirt เปิดใช้งานบริการโฮสต์ที่ถูกต้อง และกำหนดค่าเครื่องเสมือนที่เลือกให้เริ่มต้นทำงานหลังจากรีบูตเครื่อง

ทำการสำรองข้อมูล Nextcloud อย่างสม่ำเสมอโดยอัตโนมัติด้วย Restic และ Cron

ทำการสำรองข้อมูล Nextcloud อย่างสม่ำเสมอโดยอัตโนมัติด้วย Restic และ Cron

สำรองข้อมูลไฟล์ของ Nextcloud และ MariaDB ไปพร้อมกัน กำหนดเวลาสร้างสแนปช็อต Restic ที่เข้ารหัสด้วย cron และตรวจสอบการกู้คืนโดยไม่ต้องเสี่ยงต่อเซิร์ฟเวอร์ที่ใช้งานอยู่

สำรองข้อมูลและกู้คืนกล่องจดหมาย Zimbra CE โดยใช้การส่งออก TGZ

สำรองข้อมูลและกู้คืนกล่องจดหมาย Zimbra CE โดยใช้การส่งออก TGZ

ส่งออกกล่องจดหมาย Zimbra Community Edition ส่วนบุคคล ตรวจสอบความถูกต้องของการสำรองข้อมูล TGZ และกู้คืนรายการที่หายไปโดยไม่เขียนทับอีเมลที่มีอยู่

อนุญาตให้ผู้ใช้ที่ได้รับอนุญาตสร้างห้อง Jitsi ด้วยการลงชื่อเข้าใช้ Keycloak

อนุญาตให้ผู้ใช้ที่ได้รับอนุญาตสร้างห้อง Jitsi ด้วยการลงชื่อเข้าใช้ Keycloak

อนุญาตเฉพาะบัญชีที่ได้รับอนุมัติเท่านั้นให้เริ่มห้องประชุม Jitsi Meet โดยใช้ Keycloak และการตรวจสอบสิทธิ์ด้วยโทเค็น ในขณะที่ยังคงเปิดให้ผู้เยี่ยมชมเข้าร่วมได้เมื่อจำเป็น

ซิงค์ผู้ใช้ Active Directory กับ ONLYOFFICE DocSpace ผ่าน LDAP

ซิงค์ผู้ใช้ Active Directory กับ ONLYOFFICE DocSpace ผ่าน LDAP

เชื่อมต่อ ONLYOFFICE DocSpace กับ Active Directory หรือ OpenLDAP นำเข้าผู้ใช้และกลุ่มได้อย่างปลอดภัย แมปฟิลด์บัญชี และกำหนดเวลาการซิงโครไนซ์ที่เชื่อถือได้

เพิ่มฟอนต์ลงใน ONLYOFFICE Document Server: Docker เทียบกับ Linux

เพิ่มฟอนต์ลงใน ONLYOFFICE Document Server: Docker เทียบกับ Linux

ติดตั้งฟอนต์แบบกำหนดเองใน ONLYOFFICE Document Server เปรียบเทียบการเมานต์ Docker แบบถาวรกับสำเนาโดยตรง สร้างรายการฟอนต์ใหม่ และตรวจสอบผลลัพธ์

วาง ONLYOFFICE Docs ไว้หลัง HAProxy โดยไม่ทำให้การแก้ไขเอกสารหยุดชะงัก

วาง ONLYOFFICE Docs ไว้หลัง HAProxy โดยไม่ทำให้การแก้ไขเอกสารหยุดชะงัก

ตั้งค่า HAProxy สำหรับ HTTPS, การส่งต่อส่วนหัว, การหมดเวลาของ WebSocket และการตรวจสอบสถานะสำหรับ ONLYOFFICE Docs จากนั้นตรวจสอบการแก้ไขและการบันทึก

ติดตั้งและลงนามโมดูลเคอร์เนลแบบกำหนดเองบน SLES 15 Secure Boot

ติดตั้งและลงนามโมดูลเคอร์เนลแบบกำหนดเองบน SLES 15 Secure Boot

โหลดโมดูลเคอร์เนล SLES 15 แบบกำหนดเองโดยไม่ต้องปิดใช้งาน Secure Boot จับคู่เคอร์เนลที่กำลังทำงานอยู่ ลงนามในไฟล์ .ko ลงทะเบียนคีย์ MOK และตรวจสอบการโหลด

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

ส่งบันทึกระบบ SLES ไปยังตัวเก็บรวบรวม rsyslog ระยะไกลผ่าน TLS ที่มีการตรวจสอบสิทธิ์ พร้อมด้วยการตรวจสอบใบรับรอง การบัฟเฟอร์เมื่อระบบขัดข้อง และการทดสอบการส่งมอบ

วิธีการบูต Ubuntu Server เข้าสู่โหมดฉุกเฉิน: คู่มือการกู้คืนทีละขั้นตอน

วิธีการบูต Ubuntu Server เข้าสู่โหมดฉุกเฉิน: คู่มือการกู้คืนทีละขั้นตอน

ตรวจสอบและวินิจฉัยโหมดฉุกเฉินของ Ubuntu Server อย่างปลอดภัย อ่านบันทึกการบูต ตรวจสอบการเมานต์รูทและ fstab ซ่อมแซมหน่วยที่ล้มเหลว จัดการข้อผิดพลาดของระบบไฟล์ และตรวจสอบการรีบูตที่สะอาดหมดจด