Oauth
Oauth คืออะไร?
โปรโตคอลแบบเปิดเพื่ออนุญาตให้มีการอนุญาตที่ปลอดภัยในวิธีการง่าย ๆ และมาตรฐานจากเว็บแอปพลิเคชันมือถือมือถือและเดสก์ท็อป - จากเอกสาร
- เหตุผลหลักที่ทำให้ OAUTH เริ่มต้นในขั้นต้นคือการอนุญาตให้ผู้ใช้เข้าถึงแอปพลิเคชันโดยไม่ต้องให้รหัสผ่านของผู้ใช้ กรณีตรงประเด็น: โปรดจำไว้ว่าเมื่อแอพของบุคคลที่สามทั้งหมดจะขออีเมล + รหัสผ่านเพื่อเข้าถึงผู้ติดต่อ Gmail ของคุณ ฯลฯ ? การละเมิดความปลอดภัยที่ชัดเจนเนื่องจากแอพสามารถยึดติดและสามารถเปลี่ยนรหัสผ่านของคุณได้ แอปพลิเคชันบางตัวจะเก็บรหัสผ่านของผู้ใช้ในข้อความคำฟ้อง (ความเสี่ยงด้านความปลอดภัยที่ชัดเจน) วิธีเดียวที่ผู้ใช้สามารถเพิกถอนการเข้าถึงคือการเปลี่ยนรหัสผ่าน
- คุณสมบัติที่แตกต่างหลักของ OAuth คือแทนที่จะให้ผู้ใช้ป้อนรหัสผ่านในแอพของบุคคลที่สามผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ OAuth (แอปพลิเคชันหลักที่ฉันเดา) เพื่อป้อนรหัสผ่านของพวกเขา
- กรณีการใช้งานอื่น ๆ ของ OAuth หลังจากกรณีการใช้งานครั้งแรกอยู่รอบ ๆ องค์กรที่กำลังสร้างแอพของบุคคลที่หนึ่งใน API ของตนเอง กรณีในจุด: เมื่อลงชื่อเข้าใช้บริการ Google ใด ๆ (YouTube, Gmail ฯลฯ ) คุณจะไม่ลงชื่อเข้าใช้บริการโดยตรง คุณกำลังเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ OAuth ของ Google (accounts.google.com) ที่คุณลงชื่อเข้าใช้แล้วนำไปยังบริการ Google หลังจากการตรวจสอบ
- ประโยชน์คือการรวมศูนย์การจัดการรหัสผ่านด้วยเหตุผลด้านความปลอดภัย
- ประโยชน์อีกประการหนึ่งของการรวมศูนย์คือทำให้ง่ายต่อการอัพเกรดการรับรองความถูกต้องสำหรับผู้ใช้/บริการทั้งหมด
Oauth 2
- มีบางกรณีการใช้งานเช่นในแอปพลิเคชันมือถือซึ่งไม่สามารถใช้ OAuth ได้อย่างปลอดภัย
- เป้าหมายของ OAuth 2 คือการสร้าง OAuth 1 สำหรับแอปพลิเคชันมือถือและทำให้แง่มุมที่ทำให้ผู้บริโภค API สับสน
- ปัญหากับ OAuth 2 คือมีความขัดแย้งระหว่างเว็บและผู้มีส่วนร่วมขององค์กรของโปรโตคอล พื้นที่ของการโต้แย้งจำนวนมากถูกใส่ในเอกสารที่แตกต่างกันทำให้มีช่องว่างมากมายในโปรโตคอล (ตอนนี้ถูกเรียกว่ากรอบในเอกสารหลักเป็นผล)
- ผลลัพธ์คือการใช้งานเว็บสำหรับ OAuth 2 อาจมีความซับซ้อนและสับสนเนื่องจากคุณจะต้องสังเคราะห์ข้อมูลจากร่างที่แตกต่างกัน
- ปัญหาการดำเนินการ:
- มาตรฐานไม่จำเป็นต้องมีประเภทโทเค็น
- ไม่จำเป็นต้องมีประเภทการให้ทุนเฉพาะ
- ไม่ได้ให้คำแนะนำเกี่ยวกับขนาดสตริงโทเค็น
การสร้างแอปพลิเคชัน OAuth 2
- สร้างบัญชีนักพัฒนาซอฟต์แวร์บนเว็บไซต์ของบริการและป้อนข้อมูลพื้นฐานเกี่ยวกับแอพ (ชื่อเว็บไซต์โลโก้ ฯลฯ )
- คุณจะได้รับ
client_id และ client_secret (บางครั้ง) ว่าแอปของคุณจะใช้ในการโต้ตอบกับบริการ - สำคัญในการลงทะเบียน URL แบบเปลี่ยนเส้นทางอย่างน้อยหนึ่งรายการ (ที่บริการ OAuth 2 จะส่งคืนผู้ใช้หลังจากที่พวกเขาได้รับอนุญาตแอปพลิเคชัน) เพื่อหลีกเลี่ยงการสร้างแอพที่เป็นอันตรายที่สามารถขโมยข้อมูลผู้ใช้ได้
- การเปลี่ยนเส้นทาง URL จะต้องเป็นจุดสิ้นสุด HTTPS เพื่อให้ผู้โจมตีจากรหัสการอนุมัติการสกัดกั้นและจี้เซสชัน
- แทนที่จะลงทะเบียน URL การเปลี่ยนเส้นทางหลายรายการสำหรับสถานะแอปพลิเคชันที่แตกต่างกัน OAuth 2 ให้พารามิเตอร์ " สถานะ " ที่สามารถใช้ในการเข้ารหัสสถานะแอป
- พารามิเตอร์เป็นสตริงที่จะส่งคืนหลังจากผู้ใช้ได้รับอนุญาตให้นำพวกเขาไปยังตำแหน่งที่เหมาะสมในแอพ สตริงสถานะควรเข้ารหัสด้วยวิธีการเช่น JWT
- สถานะที่สร้างขึ้นเริ่มแรกจะถูกเก็บไว้ในเซสชันหลังจากผู้ใช้อนุญาตและถูกเปลี่ยนเส้นทางไปยังแอปพลิเคชันไคลเอน
แนวคิดอื่น ๆ ที่ฉันได้เรียนรู้
ขด
- ย่อมาจาก URL ไคลเอนต์ เป็นเครื่องมือบรรทัดคำสั่งที่นักพัฒนาใช้ในการถ่ายโอนข้อมูลไปยังและจากเซิร์ฟเวอร์ ให้คุณสื่อสารกับเซิร์ฟเวอร์โดยระบุ URL (ตำแหน่ง) และข้อมูลที่คุณต้องการส่ง
- รองรับโปรโตคอลที่แตกต่างกัน (HTTP, HTTPS) และทำงานบนเกือบทุกแพลตฟอร์มทำให้เหมาะสำหรับการทดสอบการสื่อสารในเกือบทุกอุปกรณ์
- ประโยชน์:
- พกพาสูงและเทียบเคียงได้กับระบบปฏิบัติการและอุปกรณ์เกือบทั้งหมด
- มีประโยชน์สำหรับการทดสอบจุดสิ้นสุด
- สามารถเป็น verbose ได้ดังนั้นจึงมีประโยชน์สำหรับการดีบัก
- การบันทึกข้อผิดพลาดที่ดี
เรียกใช้สคริปต์ Python บนเว็บโดยไม่มีกรอบเช่น Flask หรือ Django
- ก่อนอื่นคุณจะต้องตั้งค่าสคริปต์ Python เป็นสคริปต์ CGI
- CGI ย่อมาจากอินเทอร์เฟซเกตเวย์ทั่วไป ช่วยให้แอปพลิเคชันสามารถสื่อสารกับแอปพลิเคชันอื่น ๆ บนอินเทอร์เน็ต
- ก่อนอื่นสร้างโฟลเดอร์ cig-bin และย้ายสคริปต์ Python ของคุณไปที่นั่น
- จากนั้นใช้
http.server ในตัวของ Python เพื่อเรียกใช้เซิร์ฟเวอร์ HTTP แบบง่าย - เรียกใช้
python -m http.server --cgi จากไดเรกทอรีที่มี CGI -bin เพื่อเริ่มต้นเซิร์ฟเวอร์ HTTP ในโหมด CGI - นำทางไปที่
http://localhost:8000/cgi-bin/your-script.py เพื่อเรียกใช้สคริปต์ CGI - ใน
your-script.py จำเป็นต้องรวม print("Content-type:text/htmlrnrn") เพื่อตั้งค่าประเภทเนื้อหาของการตอบสนองเป็น "text/html" เพื่อเปิดใช้งานสคริปต์ให้ทำงานในเบราว์เซอร์เช่นไฟล์ HTML
Shebang (Hashbang)
- รหัสพิเศษในรูปแบบของ
#! ในช่วงเริ่มต้นของไฟล์ที่ใช้งานได้ในระบบปฏิบัติการแบบ UNIX - ระบุเส้นทางไปยังการทำงานของล่ามที่ควรใช้ในการเรียกใช้สคริปต์
- เช่น shebang เช่น
#!/usr/bin/env python ในช่วงเริ่มต้นของสคริปต์ Python บอกให้ระบบใช้ล่าม Python ที่อยู่ที่ usr/bin/env python เพื่อเรียกใช้สคริปต์
ทรัพยากร
- เอกสาร Oauth
- Oauth คืออะไรและทำไมมันถึงมีความสำคัญ? - Oktadev บน youtube
- OAUTH 2 เซิร์ฟเวอร์
- IBM: Curl คืออะไร?