แก้ไขข้อผิดพลาด “โทเค็นไม่ถูกต้อง” ของ ONLYOFFICE ใน Nextcloud

หาก Nextcloud แจ้งว่า “โทเค็นไม่ถูกต้อง” เมื่อเชื่อมต่อกับ ONLYOFFICE Docs ให้ตรวจสอบให้แน่ใจว่ารหัสลับ JWT ของตัวเชื่อมต่อตรงกับรหัสลับที่ Document Server ใช้งานอยู่จริง ใน ONLYOFFICE Docs เวอร์ชัน 7.2 ขึ้นไป การตรวจสอบ JWT จะเปิดใช้งานโดยค่าเริ่มต้น และรหัสลับจะถูกสร้างขึ้นโดยอัตโนมัติ การเปลี่ยนแปลงเฉพาะการตั้งค่า Nextcloud หรือการแก้ไขไฟล์การกำหนดค่าที่สร้างขึ้นในคอนเทนเนอร์ Docker อาจทำให้ทั้งสองฝั่งไม่ตรงกันได้

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

ข้อผิดพลาดนี้บอกอะไรคุณบ้าง?

JWT (JSON Web Token) คือโทเค็นที่ลงนามแล้วซึ่งใช้ในการตรวจสอบว่าคำขอระหว่าง Nextcloud และ ONLYOFFICE Docs นั้นเชื่อถือได้หรือไม่ ตัวเชื่อมต่อจะลงนามคำขอด้วยรหัสลับที่กำหนดค่าไว้ ในขณะที่เซิร์ฟเวอร์เอกสารจะตรวจสอบความถูกต้องโดยใช้รหัสลับที่กำหนดค่าไว้เช่นกัน หากรหัสลับที่ใช้ในการลงนามแตกต่างกัน ลายเซ็นโทเค็นจะไม่สามารถตรวจสอบความถูกต้องได้ และคำขอจะถูกปฏิเสธ

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

บทความนี้กล่าวถึงปัญหาความไม่ตรงกันของ JWT หากข้อผิดพลาดระบุว่าไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้ ใบรับรองไม่ถูกต้อง หรือไม่สามารถดาวน์โหลดเอกสารได้ โปรดตรวจสอบที่อยู่เซิร์ฟเวอร์ ใบรับรอง TLS และเส้นทางเครือข่ายจาก Nextcloud ไปยังเซิร์ฟเวอร์เอกสารแยกต่างหาก การแก้ไข JWT จะไม่สามารถแก้ไขปัญหาเหล่านั้นได้

1. ค้นหารหัสลับของเซิร์ฟเวอร์เอกสารที่ใช้งานอยู่

ใช้การตั้งค่าที่มาจากเซิร์ฟเวอร์เอกสารที่กำลังทำงานอยู่ อย่าคิดว่ารหัสลับที่จำได้จากคอนเทนเนอร์หรือเซิร์ฟเวอร์ก่อนหน้านี้ยังคงใช้งานได้อยู่

  • ลินุกซ์:ตรวจสอบ/etc/onlyoffice/documentserver/local.json.
  • Windows:ตรวจ%ProgramFiles%\ONLYOFFICE\DocumentServer\config\local.jsonสอบ
  • Docker:อ่านรหัสลับจากคอนเทนเนอร์ที่กำลังทำงานอยู่ อิมเมจอย่างเป็นทางการยังรองรับการอ่านรหัสลับเซสชันด้วยคำสั่งนี้:
sudo docker exec <containerID> /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'

แทนที่<containerID>ด้วยชื่อหรือรหัสคอนเทนเนอร์จริง โปรดถือว่าค่าที่ส่งกลับมาเป็นข้อมูลรับรอง: ห้ามคัดลอกไปวางในฟอรัมสนับสนุน ภาพหน้าจอ หรือบันทึกสาธารณะ

ในlocal.jsonไฟล์ ให้เปรียบเทียบค่าในservices.CoAuthoring.secret.inbox.string, services.CoAuthoring.secret.outbox.string, และservices.CoAuthoring.secret.session.stringค่าทั้งหมดควรเหมือนกันสำหรับการตั้งค่ามาตรฐานนี้ นอกจากนี้ โปรดตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการตรวจสอบโทเค็นสำหรับเบราว์เซอร์ กล่องขาเข้าคำขอ และกล่องขาออกคำขอแล้ว เอกสารเวอร์ชันก่อน 7.2 กำหนดให้ต้องเปิดใช้งานการตรวจสอบโทเค็นอย่างชัดเจน ส่วนเวอร์ชันที่ใหม่กว่าจะเปิดใช้งานโดยค่าเริ่มต้น

2. อัปเดตตัวเชื่อมต่อ ONLYOFFICE ของ Nextcloud

  1. ลงชื่อเข้าใช้ในฐานะผู้ดูแลระบบ Nextcloud แล้วเปิดการตั้งค่า > การจัดการ > ONLYOFFICE
  2. ในการตั้งค่าเซิร์ฟเวอร์ ให้ป้อนรหัสลับที่พบใน Document Server ที่กำลังทำงานอยู่ลงใน ช่อง รหัสลับหลีกเลี่ยงการเว้นวรรคหน้าหรือหลัง และอย่าใส่เครื่องหมายอัญประกาศเว้นแต่จะเป็นส่วนหนึ่งของรหัสลับนั้นเอง
  3. ตรวจสอบการตั้งค่าส่วนหัว JWT หากการใช้งานของคุณใช้ส่วนหัวแบบกำหนดเองjwt_headerการตั้งค่าของตัวเชื่อมต่อและส่วนหัวโทเค็นที่กำหนดค่าไว้ในเซิร์ฟเวอร์เอกสารต้องตรงกัน หากคุณไม่ได้ปรับแต่งส่วนหัวโดยเจตนา อย่าเปลี่ยนแปลงส่วนหัวนั้นในระหว่างการแก้ไขนี้
  4. บันทึกการตั้งค่า และอย่าลืมเปิดใช้งาน JWT ทั้งสองฝั่ง

นอกจากนี้ ยังสามารถเปลี่ยนแปลงการตั้งค่าตัวเชื่อมต่อที่ระบุไว้ในเอกสารได้โดยใช้occคำสั่งของ Nextcloud จากไดเร็กทอรีการติดตั้ง Nextcloud:

sudo -u www-data php occ config:app:set onlyoffice jwt_secret --value='YOUR_SECRET'

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

3. ปรับใช้การเปลี่ยนแปลงให้ถูกต้องตามวิธีการติดตั้งของคุณ

Docker หรือ Docker Compose

สำหรับการใช้งาน Docker ให้กำหนดค่า JWT ผ่านสภาพแวดล้อมของคอนเทนเนอร์ แทนที่จะแก้ไข JWT ที่สร้างขึ้นโดยอัตโนมัติด้วยตนเองlocal.jsonตั้งค่ารหัสลับเดียวกันในคำจำกัดความของบริการ Document Server:

environment:
  - JWT_ENABLED=true
  - JWT_SECRET=YOUR_SECRET

หลังจากแก้ไขไฟล์ Compose แล้ว ให้สร้างคอนเทนเนอร์ Document Server ขึ้นใหม่เพื่อให้การตั้งค่ามีผล ตัวอย่างเช่น จากไดเร็กทอรีที่มีไฟล์ Compose อยู่:

docker compose up -d --force-recreate <documentserver-service>

แทนที่ชื่อบริการด้วยชื่อจากไฟล์ Compose ของคุณเอง การรีสตาร์ทแบบธรรมดาจะไม่นำค่าสภาพแวดล้อมที่เปลี่ยนแปลงไปใช้กับคอนเทนเนอร์ที่มีอยู่ หากคุณใช้ ให้docker runสร้างคอนเทนเนอร์ใหม่ด้วยค่าที่อัปเดตแล้ว โดยJWT_ENABLEDคงJWT_SECRETพอร์ต วอลุ่ม และตัวเลือกอื่นๆ ที่จำเป็นไว้ อย่าลบคอนเทนเนอร์ที่ใช้งานจริงจนกว่าคุณจะยืนยันการตั้งค่าเหล่านั้นและการเมานต์ข้อมูลถาวรแล้ว

เมื่อคอนเทนเนอร์เริ่มต้นทำงาน ให้อ่านค่าความลับที่ใช้งานอยู่ (active secret) อีกครั้งด้วยคำสั่งข้างต้น และตรวจสอบให้แน่ใจว่าค่าดังกล่าวยังตรงกับ Nextcloud หลีกเลี่ยงการวางความลับสำหรับการใช้งานจริงไว้ในไฟล์ Compose หรือที่เก็บซอร์สโค้ดที่แชร์ต่อสาธารณะ

แพ็คเกจ Linux หรือการติดตั้ง Windows

หากคุณตั้งค่ารหัสลับแบบกำหนดเองในlocal.jsonONLYOFFICE โปรดตรวจสอบให้แน่ใจว่าฟิลด์รหัสลับทั้งสามตรงกัน และค่าการตรวจสอบโทเค็นที่จำเป็นเปิดใช้งานอยู่ บันทึกการเปลี่ยนแปลงโดยการรีสตาร์ทบริการ Document Server ที่เกี่ยวข้อง คำแนะนำ ONLYOFFICE ปัจจุบันระบุds-converter, ds-docservice, และds-metricsบน Linux; การติดตั้งที่จัดการโดยผู้ดูแลระบบบริการอื่นอาจต้องใช้วิธีการรีสตาร์ทที่เหมาะสมกับการตั้งค่าดังกล่าว บน Windows ให้รีสตาร์ทบริการ ONLYOFFICE หลังจากบันทึกการกำหนดค่าแล้ว

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

ตรวจสอบการซ่อมแซม

  1. ในไดเร็กทอรีการติดตั้ง Nextcloud ให้ทำการตรวจสอบตัวเชื่อมต่ออย่างเป็นทางการ:
sudo -u www-data php occ onlyoffice:documentserver --check

หากบัญชีเว็บเซิร์ฟเวอร์ไม่เหมาะสมกับการติดตั้งของคุณ ให้ใช้www-dataบัญชีนั้น คำสั่งควรรายงานว่าเชื่อมต่อสำเร็จ หากยังคงรายงานว่าโทเค็นไม่ถูกต้อง ให้ตรวจสอบอีกครั้งว่ารหัสลับที่ใช้งานอยู่ของ Document Server ตรงกับ Nextcloud อย่างถูกต้อง และส่วนหัว JWT แบบกำหนดเองก็ตรงกันด้วย

  1. เปิดเอกสารทดสอบขนาดเล็กจาก Nextcloud ด้วย ONLYOFFICE ตรวจสอบว่าโปรแกรมแก้ไขโหลดขึ้นมา ทำการเปลี่ยนแปลงเล็กน้อย บันทึก ปิดโปรแกรมแก้ไข แล้วเปิดไฟล์อีกครั้งเพื่อตรวจสอบว่าการเปลี่ยนแปลงได้รับการบันทึกแล้ว
  2. หากการตรวจสอบรายงานข้อผิดพลาดเกี่ยวกับเครือข่ายหรือใบรับรอง ให้หยุดการเปลี่ยนแปลงค่า JWT ตรวจสอบว่า Nextcloud สามารถเข้าถึงที่อยู่ของ Document Server และ Document Server สามารถเข้าถึงที่อยู่ callback ของ Nextcloud ได้ ใช้ใบรับรอง TLS ที่เชื่อถือได้หากเป็นไปได้ การปิดใช้งานการตรวจสอบใบรับรองเป็นวิธีแก้ปัญหาที่ไม่ปลอดภัยและไม่ได้แก้ไขปัญหาการตรวจสอบโทเค็น

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

ข้อมูลอ้างอิงอย่างเป็นทางการ

รายละเอียดการกำหนดค่าได้รับการตรวจสอบกับเอกสารอย่างเป็นทางการของ ONLYOFFICE และคลังเก็บตัวเชื่อมต่อเมื่อวันที่ 9 ตุลาคม 2569 ป้ายกำกับ UI และการจัดการบริการอาจแตกต่างกันไปตามตัวเชื่อมต่อ ระบบปฏิบัติการ และวิธีการติดตั้งใช้งาน

ฝากความเห็น

ตรวจสอบหาสาเหตุของการส่งออกไฟล์ PDF ที่ล้มเหลวของ ONLYOFFICE

ตรวจสอบหาสาเหตุของการส่งออกไฟล์ PDF ที่ล้มเหลวของ ONLYOFFICE

แยกปัญหาการดาวน์โหลดผ่านเบราว์เซอร์ออกจากข้อผิดพลาดในการแปลงไฟล์ฝั่งเซิร์ฟเวอร์ และใช้บันทึกหรือการตรวจสอบการเข้าถึงที่ถูกต้องเพื่อให้การส่งออกไฟล์ PDF ทำงานได้

แก้ไขข้อผิดพลาด “โทเค็นไม่ถูกต้อง” ของ ONLYOFFICE ใน Nextcloud

แก้ไขข้อผิดพลาด “โทเค็นไม่ถูกต้อง” ของ ONLYOFFICE ใน Nextcloud

ตรงกับรหัสลับ JWT ที่ใช้โดย ONLYOFFICE Docs และ Nextcloud สามารถนำไปใช้ได้อย่างปลอดภัยสำหรับการติดตั้งบน Docker หรือ Linux และตรวจสอบการเชื่อมต่อโดยไม่ลดทอนความปลอดภัยในการยืนยันตัวตน

ติดตั้ง ONLYOFFICE Workspace Community บน Ubuntu 24.04

ติดตั้ง ONLYOFFICE Workspace Community บน Ubuntu 24.04

ติดตั้ง ONLYOFFICE Workspace Community บน Ubuntu 24.04 โดยใช้สคริปต์ Docker อย่างเป็นทางการ ตรวจสอบข้อกำหนดของเซิร์ฟเวอร์ ข้ามการติดตั้ง Mail หากไม่จำเป็น และตรวจสอบพอร์ทัลอย่างปลอดภัย

ตั้งค่ารหัสลับ JWT ของ ONLYOFFICE ระหว่างเซิร์ฟเวอร์และตัวเชื่อมต่อ

ตั้งค่ารหัสลับ JWT ของ ONLYOFFICE ระหว่างเซิร์ฟเวอร์และตัวเชื่อมต่อ

กำหนดค่ารหัสลับ JWT ที่ตรงกันสำหรับ ONLYOFFICE Docs และตัวเชื่อมต่อ โดยใช้ขั้นตอนที่ปลอดภัยสำหรับแพ็คเกจ Linux การใช้งาน Docker และการตรวจสอบยืนยัน

ตกแต่ง ONLYOFFICE Docs ด้วยโลโก้และสีธีมของคุณ

ตกแต่ง ONLYOFFICE Docs ด้วยโลโก้และสีธีมของคุณ

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

รักษาการแก้ไขของผู้เขียนให้มองเห็นได้เมื่อส่งออกเป็นไฟล์ DOCX

รักษาการแก้ไขของผู้เขียนให้มองเห็นได้เมื่อส่งออกเป็นไฟล์ DOCX

ติดตามการแก้ไขใน Writer รักษาไฟล์ต้นฉบับ ODT ที่สามารถแก้ไขได้ และตรวจสอบไฟล์ DOCX ที่ส่งออกใน Word ก่อนที่จะแชร์

เปิดใช้งานโหมด FIPS บน SLES 15 และตรวจสอบสถานะการบูต

เปิดใช้งานโหมด FIPS บน SLES 15 และตรวจสอบสถานะการบูต

ปฏิบัติตามขั้นตอน SP7 ของ SUSE เพื่อเปิดใช้งานโหมด FIPS รีบูตเครื่องอย่างปลอดภัย ตรวจสอบนโยบายที่ใช้งานอยู่ และตรวจสอบว่าข้อกำหนดด้านการปฏิบัติตามกฎระเบียบของคุณต้องการโมดูลที่ผ่านการตรวจสอบแล้วหรือไม่

ตั้งค่าไดรฟ์ข้อมูลที่เข้ารหัส LUKS บน SLES

ตั้งค่าไดรฟ์ข้อมูลที่เข้ารหัส LUKS บน SLES

เปรียบเทียบ YaST และ cryptsetup สำหรับไดรฟ์ข้อมูล SLES ที่เข้ารหัสใหม่ เลือก LUKS1 หรือ LUKS2 และตรวจสอบพฤติกรรมการปลดล็อกและการเมานต์อย่างปลอดภัย

สร้างเซิร์ฟเวอร์อัปเดต SUSE ในเครื่องด้วย RMT บน SLES 15

สร้างเซิร์ฟเวอร์อัปเดต SUSE ในเครื่องด้วย RMT บน SLES 15

ตั้งค่า RMT บน SLES 15 จำลองที่เก็บข้อมูลที่ได้รับสิทธิ์ และตรวจสอบการลงทะเบียน HTTPS และการเข้าถึงแพ็กเกจจากไคลเอ็นต์ทดสอบ

เชื่อมต่อ SLES 15 เข้ากับ Active Directory ด้วย SSSD ใน YaST

เชื่อมต่อ SLES 15 เข้ากับ Active Directory ด้วย SSSD ใน YaST

เชื่อมต่อ SLES 15 กับ AD โดยใช้การจัดการการเข้าสู่ระบบแบบ SSSD ของ YaST จากนั้นตรวจสอบการค้นหาไดเร็กทอรี การเข้าสู่ระบบโดเมน และตั๋ว Kerberos