การรับรองความถูกต้องกับการอนุญาต


626

บริบทของเว็บแอปพลิเคชันแตกต่างกันอย่างไร ฉันเห็นตัวย่อ "รับรองความถูกต้อง" มาก มันหมายถึงการรับรองความถูกต้องหรือการรับรองความถูกต้องหรือไม่ หรือเป็นทั้งสองอย่าง?


51
จดจำสิ่งนี้: การตรวจสอบความถูกต้องของข้อมูลรับรอง, การตรวจสอบสิทธิ์
Onur Yıldırım

1
สำเนาข้ามไซต์: serverfault.com/q/57077
Kyll

เมื่อเร็ว ๆ นี้สำหรับตัวย่อที่ฉันเห็นauthnสำหรับการรับรองความถูกต้องและauthzการอนุญาต
jdf

คำตอบ:


864

การรับรองความถูกต้องเป็นกระบวนการของการตรวจสอบว่ามีใครบางคนเป็นผู้ที่พวกเขาอ้างว่าเป็น

การอนุญาตหมายถึงกฎที่กำหนดว่าใครได้รับอนุญาตให้ทำอะไร เช่น Adam อาจได้รับอนุญาตให้สร้างและลบฐานข้อมูลในขณะที่ Usama ได้รับอนุญาตให้อ่านเท่านั้น

แนวคิดทั้งสองนั้นมีมุมฉากและเป็นอิสระอย่างสมบูรณ์ แต่ทั้งคู่เป็นศูนย์กลางของการออกแบบความปลอดภัย

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


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

7
@Timo: แอปพลิเคชันอาจต้องการทำทั้งสองอย่าง แต่พวกมันเป็นแนวคิดแนวตั้งฉากโดยไม่คำนึงถึง เจ้านายของคุณอาจตรวจสอบการอนุญาตของพนักงานเพื่อเข้าถึงส่วนประกอบที่สำคัญของธุรกิจเจ็ตของ บริษัท และตู้แช่เบียร์โดยไม่ต้องกังวลว่าบุคคลใดในฟีดกล้องวงจรปิดจะจับคู่ชื่อในสเปรดชีต หลังจะเป็นกังวลของเจ้าหน้าที่รักษาความปลอดภัย
Kerrek SB

1
แนวคิดนี้มีฉากที่แน่นอน การรับรองความถูกต้องไม่จำเป็นต้องพิสูจน์ตัวตนของคุณ มันอาจพิสูจน์ข้อเรียกร้องเกี่ยวกับตัวคุณเช่นอายุ เมื่อคุณดื่มคุณจะตรวจสอบอายุของคุณโดยแสดง ID จากนั้นคุณอาจได้รับอนุญาตให้ดื่มขึ้นอยู่กับอายุและเขตอำนาจของคุณ (คุณสามารถดื่มถ้า> 21 ในสหรัฐอเมริกา> 18 ในยุโรป)
David Brossard

1
@ สินใจ: ฉันคิดว่าประเด็นก็คือพวกเขามีความกังวลในมุมฉากและพวกเขาสามารถแก้ไขได้ด้วยสิ่งอำนวยความสะดวกที่แยกจากกัน: เช่นคนโกหก (ที่ไว้ใจ) ที่ประตูสามารถกำหนดอายุของลูกค้าและบริการต่าง ๆ ภายในสถานประกอบการ ขีด จำกัด แต่ทุกคนจะใช้ค่าที่ได้รับจากผู้โกหกเพื่อตัดสินใจเข้าเรียน
Kerrek SB

1
อีกวิธีในการดู (ในบริบทของตัวอย่างบาร์รูม) คือการพิจารณาว่าการรับรองความถูกต้องเป็นกระบวนการของการจับคู่ภาพถ่ายในบัตรประชาชนกับบุคคลที่ยืนอยู่ตรงหน้าคุณขณะที่การอนุญาตเป็นกระบวนการตรวจสอบอายุของพวกเขา ตรงตามข้อกำหนดทางกฎหมาย ในความคิดของฉันองค์ประกอบในการผสมนี้ที่ทำให้เส้นที่จะเบลอคือการทดสอบทั้งสองจะต้องมีทั้งความรู้ความเข้าใจและต่อต้านการปลอมแปลง (เป็น ID ปลอม) ซึ่งคนส่วนใหญ่มักจะมองว่าเป็นเรื่องของการรับรองความถูกต้องเท่านั้น มีความสำคัญเท่าเทียมกันทั้งการรับรองความถูกต้องและการรับรองความถูกต้อง
Ryan Hansen

660

ในระยะสั้นได้โปรด :-)

Authentication = เข้าสู่ระบบ + รหัสผ่าน(คุณเป็นใคร)

การอนุญาต = สิทธิ์(สิ่งที่คุณได้รับอนุญาตให้ทำ)

"auth" แบบสั้นมีแนวโน้มที่จะอ้างอิงถึงตัวแรกหรือทั้งคู่


3
หอมหวานเหมือนเค้ก :)
devansvd

ฉันชอบสิ่งนี้สั้นและหวาน
King

5
ถ้าอย่างนั้นฉันก็ยังไม่เข้าใจว่าทำไมส่วนหัวการให้สิทธิ์ HTTPดำเนินการกับข้อมูลการรับรองความถูกต้อง ... การตั้งชื่อไม่ได้หรือไม่
Jens

@Jens คำตอบสั้น ๆ : ใช่ Roy Fielding ไม่รู้จักดีในเวลานั้น ... ;-) </tongue-in-cheek>
ต่อ Lundberg

@Jens ฉันก็สงสัยเช่นกัน ฉันคิดว่าสัญชาตญาณของคำตอบนี้มีประโยชน์ เนื่องจาก HTTP ไม่มีสถานะข้อมูลการรับรองความถูกต้องจะต้องถูกส่งไปพร้อมกับทุกคำขอไม่ใช่แค่การเริ่มต้นและคำขอปิด (เช่นการสร้างเซสชันที่ปลอดภัยและส่งคำขอโดยไม่ตรวจสอบสิทธิ์) ดังนั้นหัวข้อการร้องขอที่ควรจะอนุมัติเพราะมันมักจะพกความตั้งใจอื่น ๆ (เรียกข้อมูล, img, ... ) ไม่รับรองความถูกต้อง แต่เพียงผู้เดียว
Minh Nghĩa

83

ขณะที่การตรวจสอบสิทธิ์การอนุญาต VSทำให้มัน:

การรับรองความถูกต้องเป็นกลไกที่ระบบสามารถระบุผู้ใช้ของตนได้อย่างปลอดภัย ระบบรับรองความถูกต้องให้คำตอบสำหรับคำถาม:

  • ใครคือผู้ใช้?
  • เป็นผู้ใช้จริง ๆ ที่เขา / เธอหมายถึงตัวเองเป็น

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

  • user X ได้รับอนุญาตให้เข้าถึงทรัพยากร R หรือไม่
  • user X ได้รับอนุญาตให้ดำเนินการ P หรือไม่
  • user X ได้รับอนุญาตให้ดำเนินการ P บนทรัพยากร R หรือไม่

ดูสิ่งนี้ด้วย:


34

ฉันชอบการยืนยันและการอนุญาตเพื่อการรับรองความถูกต้องและการอนุญาต

ในหัวของฉันและรหัสของฉันจะง่ายกว่าที่จะนึกถึง "การยืนยัน" และ "การอนุญาต" เพราะทั้งสองคำ

  • ไม่ฟังเหมือนกัน
  • ไม่มีตัวย่อเดียวกัน

การรับรองความถูกต้องเป็นการตรวจสอบและการอนุญาตคือการตรวจสอบสิทธิ์ รับรองความถูกต้องอาจหมายถึงอย่างใดอย่างหนึ่ง แต่มีการใช้บ่อยกว่าเป็น "ผู้ใช้รับรองความถูกต้อง" คือ "การตรวจสอบผู้ใช้"


2
การตรวจสอบ IMHO ดูเหมือนจะมีขอบเขตเปิดกว้างกว่าการรับรองความถูกต้องเล็กน้อยแม้ว่าการพิสูจน์ตัวตนจะเป็นการตรวจสอบบางประเภทไม่ใช่ทุกการตรวจสอบเป็นการตรวจสอบสิทธิ์ ... ดังนั้นฉันจะบอกว่าจำเป็นต้องมีบริบทเสมอ: ดูเหมือนจะเกิดขึ้นในสนามของ "เขาเป็นคนที่แต่งตัวประหลาด / เครื่องจักรจริง ๆ หรือ?" (ตีฉันถ้าฉันผิดไม่ได้เป็นเจ้าของภาษา แต่ "ตรวจสอบ" ให้ข้อมูลที่ถูกต้องกับ authentications ดูเหมือนว่าจะมีบางสิ่งบางอย่างจะทำอย่างไรกับการรู้จักคน / เครื่องหนึ่งเขา / มันอ้างว่าเป็น)
Beachwalker

14

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

คนอื่น ๆ ได้อธิบายไปแล้วดีว่าการรับรองความถูกต้องและการอนุญาตหมายถึงอะไร นี่เป็นกฎง่ายๆที่จะช่วยให้ทั้งสองแยกกัน:

  • Auth entiไอออนบวกตรวจสอบ ID ของคุณenti TY (หรือความถูกต้องถ้าคุณต้องการที่)
  • การเขียนผู้ใช้จะตรวจสอบความถูกต้องของผู้เขียนของคุณเช่นสิทธิ์ในการเข้าถึงและอาจเปลี่ยนแปลงบางสิ่ง

12

ฉันพยายามสร้างภาพเพื่ออธิบายสิ่งนี้ด้วยคำพูดที่ง่ายที่สุด

1) การตรวจสอบความถูกต้องหมายถึง "คุณเป็นคนที่คุณพูดว่าคุณเป็น"

2) การอนุญาตหมายถึง "คุณควรจะทำสิ่งที่คุณพยายามทำหรือไม่?"

นี่คือคำอธิบายในภาพด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

ฉันพยายามอธิบายในแง่ที่ดีที่สุดเท่าที่จะเป็นไปได้และสร้างภาพที่เหมือนกัน


4

การตรวจสอบความถูกต้องเป็นกระบวนการในการตรวจสอบตัวตนที่ประกาศ

  • เช่นชื่อผู้ใช้ / รหัสผ่าน

มักจะตามด้วยการอนุญาตซึ่งเป็นการอนุมัติที่คุณสามารถทำได้และที่

  • เช่นสิทธิ์

คำตอบนี้ได้รับคำอธิบายอย่างลึกซึ้งแล้ว
Sonu patel

3

กำลังเพิ่มคำตอบของ @ Kerrek;

การรับรองความถูกต้องเป็นรูปแบบทั่วไป (พนักงานทุกคนสามารถเข้าสู่เครื่องได้)

การอนุญาตเป็นรูปแบบเฉพาะ (แต่ผู้ดูแลระบบเท่านั้นที่สามารถติดตั้ง / ถอนการติดตั้งแอปพลิเคชันใน Machine)


1
คำว่า "สามารถ" ใช้ได้กับการให้สิทธิ์เท่านั้น การพิสูจน์ตัวตนมีน้อยหรือไม่มีส่วนเกี่ยวข้องกับการเข้าสู่ระบบฉันทำได้ดีมากตรวจสอบว่าคุณเป็น Boobalan ในหลาย ๆ ทาง (ไม่ใช่แค่ชื่อผู้ใช้ / รหัสผ่าน) เมื่อฉันตรวจสอบและรู้ว่าคุณเป็นใครฉันก็ไม่สามารถอนุญาตให้คุณเข้าสู่ระบบหรือทำอะไรบนเว็บไซต์ของฉัน คุณได้รับการรับรองความถูกต้องแล้ว แต่คุณไม่สามารถทำได้ สับสนและไม่ถูกต้องที่จะใช้คำว่า "สามารถ" เมื่อพูดถึงการรับรองความถูกต้อง
Suamere

3

การรับรองความถูกต้องเป็นกระบวนการตรวจสอบชื่อผู้ใช้และรหัสผ่านในการเข้าสู่ระบบของคุณ

การอนุญาตเป็นกระบวนการตรวจสอบว่าคุณสามารถเข้าถึงบางสิ่งได้


3
"คำตอบ" นี้ไม่ได้เพิ่มอะไรเลยในคำตอบที่ให้ไปแล้ว
Ojonugwa Jude Ochalifu

1

คำนิยาม

การรับรองความถูกต้อง - คุณเป็นคนที่คุณอ้างว่าเป็นหรือไม่?

การอนุญาต - คุณได้รับอนุญาตให้ทำสิ่งที่คุณพยายามทำหรือไม่?

ตัวอย่าง

app เว็บใช้Google เข้าสู่ระบบ หลังจากผู้ใช้ลงชื่อเข้าใช้สำเร็จ Google จะส่งคืน:

  1. โทเค็น JWT สิ่งนี้สามารถตรวจสอบและถอดรหัสเพื่อรับข้อมูลการตรวจสอบ โทเค็นที่ลงชื่อโดย Google หรือไม่ ชื่อและอีเมลของผู้ใช้คืออะไร?
  2. โทเค็นการเข้าถึง สิ่งนี้อนุญาตให้เว็บแอปเข้าถึง Google API ในนามของผู้ใช้ ตัวอย่างเช่นแอปสามารถเข้าถึงกิจกรรม Google Calendar ของผู้ใช้หรือไม่ การอนุญาตเหล่านี้ขึ้นอยู่กับขอบเขตที่ร้องขอและผู้ใช้อนุญาตหรือไม่

นอกจากนี้:

บริษัท อาจมีแดชบอร์ดผู้ดูแลระบบที่ให้การสนับสนุนลูกค้าในการจัดการผู้ใช้ของ บริษัท แทนที่จะให้โซลูชันการลงชื่อสมัครใช้ที่กำหนดเองซึ่งจะช่วยให้ฝ่ายสนับสนุนลูกค้าสามารถเข้าถึงแดชบอร์ดนี้ได้ บริษัท ใช้ Google Sign-In

โทเค็น JWT (ที่ได้รับจากกระบวนการลงชื่อเข้าใช้ของ Google) จะถูกส่งไปยังเซิร์ฟเวอร์การให้สิทธิ์ของ บริษัท เพื่อพิจารณาว่าผู้ใช้มีบัญชีG Suiteพร้อมโดเมนโฮสต์ขององค์กร (email@company.com) หรือไม่ และถ้าเป็นเช่นนั้นพวกเขาเป็นสมาชิกของกลุ่ม Google ของ บริษัท ที่สร้างขึ้นเพื่อสนับสนุนลูกค้าหรือไม่ ถ้าใช่ทั้งหมดของข้างต้นเราสามารถพิจารณาให้รับรองความถูกต้อง

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


0

Authentication เป็นกระบวนการของการตรวจสอบ:

  • ข้อมูลประจำตัวของผู้ใช้ในระบบ (ชื่อผู้ใช้เข้าสู่ระบบหมายเลขโทรศัพท์อีเมล ... ) โดยแสดงหลักฐาน (รหัสลับไบโอเมตริกส์ sms ... ) การรับรองความถูกต้องแบบหลายปัจจัยเป็นส่วนเสริม
  • ตรวจสอบอีเมลโดยใช้ digital signature
  • การตรวจสอบ

AuthorizationAuthenticationเป็นขั้นตอนต่อไปหลังจาก เป็นเรื่องเกี่ยวกับสิทธิ์ / บทบาท / สิทธิ์ของทรัพยากร OAuth (Open Authorization) เป็นตัวอย่างของการอนุญาต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.