ในการสร้างรหัสผ่าน SSHA คุณจะต้องสร้างแฮช SHA1 ของรหัสผ่านโดยเพิ่มค่า salt ต่อท้ายสตริง (รหัสผ่าน + salt) จากนั้นนำแฮชนี้ไปเข้ารหัสแบบ base 64 โดยเพิ่มค่า salt ต่อท้าย (SHA1 + salt) ดูตัวอย่างที่แนบมาหรือสคริปต์ตัวอย่างได้ในไฟล์แนบคลังเก็บโค้ดของชุมชนบน GitHub.
การนำเข้าไฟล์ CSV ของผู้ใช้ Canvas ช่วยให้คุณสามารถนำเข้าได้ทั้งรหัสผ่านผู้ใช้ที่เป็นข้อความธรรมดาหรือรหัสผ่านผู้ใช้ที่เข้ารหัสไว้ล่วงหน้า เราจะเริ่มต้นด้วยคำถามและคำตอบสั้นๆ กันก่อน
ถาม: ฉันไม่รู้ว่าแฮชเข้ารหัสลับคืออะไร ฉันยังสามารถใช้งานได้หรือไม่?
A: หากคุณไม่คุ้นเคยกับการใช้แฮช ขั้นตอนการทำงานนี้อาจไม่เหมาะกับคุณ เนื่องจากค่อนข้างซับซ้อนในการสร้างสตริงที่มีรูปแบบถูกต้องสำหรับ Canvas และเอกสารนี้จัดทำขึ้นสำหรับนักพัฒนา/เจ้าหน้าที่ไอทีในสถาบันของคุณ
ถาม: ฉันไม่เคยรู้มาก่อนเลยว่าฉันกำลังทำให้ผู้ใช้งานตกอยู่ในอันตราย นี่คือจุดจบของโลกแล้วหรือ?
A: ไม่ครับ การนำเข้าข้อมูล SIS เกิดขึ้นผ่าน https ดังนั้นข้อมูลจึงยังคงถูกเข้ารหัสอยู่ การแฮชรหัสผ่านเป็นการเพิ่มระดับความปลอดภัยอีกชั้นหนึ่ง แต่ถ้าคุณสามารถทำได้ ก็จะดีกว่าการส่งรหัสผ่านแบบข้อความธรรมดาครับ
ถาม: ฉันมี CAS (หรือ SAML หรือ LDAP) แล้วมันจะส่งผลกระทบต่อฉันอย่างไร?
A: เป็นไปได้ว่าสิ่งนี้จะส่งผลกระทบต่อคุณและผู้ใช้ของคุณ แต่โอกาสที่จะไม่ส่งผลกระทบนั้นมีน้อย นี่สำหรับผู้ใช้ที่ยืนยันตัวตนผ่านระบบยืนยันตัวตนของ Canvas เท่านั้น
ถาม: ฉันสามารถใช้สิ่งนี้กับผู้ใช้ที่ใช้งาน Canvas อยู่แล้วได้หรือไม่?
ตอบ: ไม่ได้ค่ะ เมื่อผู้ใช้เปลี่ยนรหัสผ่านใน Canvas แล้ว คุณจะไม่สามารถอัปเดตรหัสผ่านผ่านไฟล์นำเข้า SIS ได้อีกค่ะ
การใช้งานรหัสผ่าน SSHA
คุณจะต้องสร้างแฮช SHA1 ของรหัสผ่านโดยเพิ่มค่า salt ต่อท้ายสตริง (รหัสผ่าน + salt) จากนั้นนำแฮชนี้ไปเข้ารหัสแบบ base 64 โดยเพิ่มค่า salt ต่อท้ายอีกครั้ง (SHA1 + salt)
สำหรับผู้ที่เรียนรู้ด้วยภาพ ผมได้เตรียมตัวอย่างไว้ด้านล่างแล้ว ได้แก่ สคริปต์ PHP และเทอร์มินัลบนระบบปฏิบัติการ OS X / Ubuntu (ขออภัยผู้ใช้ Windows ด้วยนะครับ)
ระบบปฏิบัติการ OS X / Ubuntu
ขั้นแรก ให้สร้างค่าแฮช SHA1 ของรหัสผ่านและค่า salt ในตัวอย่างนี้ รหัสผ่านคือ "password" และค่า salt คือ "salt"
echo -n passwordsalt | shasum -a 1 | awk '{print $1}'
คุณสามารถทำแบบเดียวกันได้ใน Ubuntu โดยเปลี่ยน shasum เป็น sha1sum ผมคิดว่าดิสโทร Linux ขนาดใหญ่อื่นๆ ส่วนใหญ่ก็มีการตั้งค่าแบบนี้เป็นค่าเริ่มต้นเช่นกัน
echo -n passwordsalt | sha1sum | awk '{print $1}'
ผลลัพธ์ที่ได้คือ "c88e9c67041a74e0357befdff93f87dde0904214" ดังนั้นเราจะนำค่าแฮชมาเข้ารหัสแบบ base64 โดยเพิ่มค่า salt ต่อท้ายสตริงอีกครั้ง
echo -n 'c88e9c67041a74e0357befdff93f87dde0904214salt' | base64
ผลลัพธ์คือ "Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ=" เพิ่ม "{SSHA}" ไว้ข้างหน้าสตริงนี้ แล้วก็พร้อมส่งไปยัง Canvas เมื่อส่งในไฟล์ CSV แล้ว ควรมีลักษณะดังนี้ "{SSHA}Yzg4ZTljNjcwNDFhNzRlMDM1N2JlZmRmZjkzZjg3ZGRlMDkwNDIxNHNhbHQ="
พีพี
กำหนดค่าตัวแปรสำหรับรหัสผ่านและค่าความเค็ม (salt)
$pass = 'password'; $salt = 'salt';
สร้างค่าแฮช SHA1 ของรหัสผ่านและค่า salt โดยใส่รหัสผ่านก่อนค่า salt
$sha_hash = sha1($pass . $salt);
เข้ารหัสค่าแฮช SHA1 ด้วย Base64 อย่าลืมเพิ่มค่า salt ต่อท้ายสตริงอีกครั้ง
$encoded_pass = base64_encode($sha_hash . $salt);
เพิ่ม "{SSHA}" ไว้ที่ต้นสตริงที่ผ่านการแฮชและเข้ารหัสแล้ว
$hashed_password = "{SSHA}" . $encoded_pass;
ตอนนี้คุณพร้อมที่จะส่งข้อมูลนี้ไปยัง Canvas แล้ว เพิ่มเนื้อหาของตัวแปร `$hashed_password` ลงในคอลัมน์ `ssha_password` ในไฟล์ `users.csv` ซึ่งเป็นไฟล์นำเข้าข้อมูลแบบ SIS
ฉันได้แนบไฟล์ CSV ตัวอย่างที่พร้อมสำหรับการอัปโหลดไปยัง Canvas และไฟล์ PHP ตัวอย่างเพื่อช่วยให้คุณเริ่มต้นใช้งาน นอกจากนี้ ฉันขอแนะนำให้ลองดูสคริปต์ Python ด้วยแหล่งเก็บข้อมูลชุมชนบน Github.