การอ้างสิทธิ์ใน ASP .NET Identity คืออะไร


174

ใครช่วยอธิบายหน่อยได้กลไกการเรียกร้องหมายถึงอะไรใน ASP.NET Identity Core ใหม่

ขณะที่ผมสามารถดูมีเป็นAspNetUserLoginsตารางซึ่งมีUserId, และLoginProviderProviderKey

แต่ฉันยังคงไม่เข้าใจหรือค้นหาข้อมูลใด ๆ เมื่อมีการเพิ่มข้อมูลลงในAspNetUserClaimsตารางและสถานการณ์ใดที่ใช้ในตารางนี้

คำตอบ:


207

กลไกการอ้างสิทธิ์หมายถึงอะไรใน ASP.NET Identity Core ใหม่

มีวิธีการอนุญาตทั่วไปสองวิธีที่อิงตามบทบาทและการอ้างสิทธิ์

การรักษาความปลอดภัยตามบทบาท

ผู้ใช้ได้รับบทบาทหนึ่งหรือหลายบทบาทที่ผู้ใช้ได้รับสิทธิ์การเข้าถึง นอกจากนี้ด้วยการกำหนดผู้ใช้ให้กับบทบาทผู้ใช้จะได้รับสิทธิ์การเข้าถึงทั้งหมดที่กำหนดไว้สำหรับบทบาทนั้นทันที

การรักษาความปลอดภัยตามการเรียกร้อง

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

ขั้นตอนด้านล่างแสดงให้เห็นถึงลำดับของสิ่งที่เกิดขึ้นในรูปแบบความปลอดภัยตามการอ้างสิทธิ์:

  1. ผู้ใช้ร้องขอการกระทำ แอปพลิเคชั่นปาร์ตี้ที่ต้องพึ่งพา (RP) ขอโทเค็น
  2. ผู้ใช้นำเสนอข้อมูลประจำตัวให้กับหน่วยงานผู้ออกที่แอปพลิเคชัน RP ไว้วางใจ
  3. ผู้มีสิทธิ์ออกปัญหาโทเค็นที่ลงนามด้วยการเรียกร้องหลังจากการตรวจสอบข้อมูลประจำตัวของผู้ใช้
  4. ผู้ใช้นำเสนอโทเค็นไปยังแอปพลิเคชัน RP แอปพลิเคชันตรวจสอบลายเซ็นโทเค็นแยกการอ้างสิทธิ์และขึ้นอยู่กับการอ้างสิทธิ์ยอมรับหรือปฏิเสธคำขอ

แต่ฉันยังคงไม่เข้าใจและค้นหาข้อมูลใด ๆ เมื่อข้อมูลเพิ่มเข้ากับ AspNetUserClaims และสถานการณ์นี้ใช้ตารางนี้ในสถานการณ์ใด

เมื่อคุณอยู่ในสถานการณ์ที่ไม่มีการใช้การรักษาความปลอดภัยตามบทบาทและคุณเลือกที่จะใช้การรักษาความปลอดภัยตามการอ้างสิทธิ์คุณจะต้องใช้ตาราง AspNetUserClaims สำหรับวิธีใช้การอ้างสิทธิ์ในข้อมูลประจำตัวของ ASP.NET ดูลิงค์ด้านล่างสำหรับข้อมูลเพิ่มเติม

http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html

ปรับปรุง

ฉันต้องใช้การรักษาความปลอดภัยตามบทบาทและเวลาใดตามการอ้างสิทธิ์ คุณช่วยเขียนตัวอย่างหน่อยได้ไหม?

มีสถานการณ์ที่ไม่ชัดเจนนักที่คุณจะใช้หรือไม่ใช้การรักษาความปลอดภัยตามบทบาทหรือการอ้างสิทธิ์ตามความต้องการไม่ใช่กรณีที่คุณใช้ A แทน B

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

บางครั้งการเรียกร้องก็ไม่จำเป็น นี่เป็นข้อจำกัดความรับผิดชอบที่สำคัญ บริษัท ที่มีโฮสต์ของแอปพลิเคชันภายในสามารถใช้ Integrated Windows Authentication เพื่อรับสิทธิประโยชน์มากมายจากการอ้างสิทธิ์ Active Directory ทำงานได้อย่างยอดเยี่ยมในการจัดเก็บข้อมูลผู้ใช้และเนื่องจาก Kerberos เป็นส่วนหนึ่งของ Windows แอปพลิเคชันของคุณจึงไม่จำเป็นต้องมีตรรกะการตรวจสอบสิทธิ์จำนวนมาก ตราบใดที่ทุก ๆ แอปพลิเคชั่นที่คุณสร้างสามารถใช้การพิสูจน์ตัวจริงของ Windows แบบรวมคุณอาจมีตัวตนที่แท้จริง อย่างไรก็ตามมีสาเหตุหลายประการที่คุณอาจต้องการสิ่งอื่นนอกเหนือจากการตรวจสอบ Windows คุณอาจมีแอปพลิเคชั่นที่ใช้งานเว็บซึ่งผู้ที่ไม่มีบัญชีในโดเมน Windows ของคุณ อีกเหตุผลหนึ่งอาจเป็นเพราะ บริษัท ของคุณควบรวมกิจการกับ บริษัท อื่นและคุณ กำลังมีปัญหาในการตรวจสอบสิทธิ์ใน Windows ป่าทั้งสองที่ไม่มี (และอาจไม่เคย) มีความสัมพันธ์ที่เชื่อถือได้ บางทีคุณอาจต้องการแชร์ข้อมูลประจำตัวกับ บริษัท อื่นที่มีแอปพลิเคชั่นที่ไม่ใช่. NET Framework หรือคุณต้องการแชร์ข้อมูลระหว่างแอปพลิเคชันที่ทำงานบนแพลตฟอร์มที่แตกต่างกัน (ตัวอย่างเช่น Macintosh) นี่เป็นเพียงบางสถานการณ์ที่ข้อมูลประจำตัวที่อ้างสิทธิ์อาจเป็นตัวเลือกที่เหมาะสมสำหรับคุณ

สำหรับข้อมูลเพิ่มเติมกรุณาเยี่ยมชมhttp://msdn.microsoft.com/en-us/library/ff359101.aspx


6
ขอบคุณสำหรับคำตอบ แต่ฉันยังไม่เข้าใจฉันต้องใช้การรักษาความปลอดภัยตามบทบาทและเวลาตามการเรียกร้องอย่างไร คุณช่วยเขียนตัวอย่างได้ไหม
Maxim Zhukov

1
@ FSou1 ไม่มีกรณีที่คุณจะใช้วิธีอิงตามบทบาทหรือตามการอ้างสิทธิ์ ดูคำตอบที่อัปเดตของฉันเพื่อความชัดเจนมากขึ้น
หลิน

The user presents the credentials to the issuing authority that the RP application trusts.คุณสามารถใช้อะไรเป็นสิทธิ์ / ผู้ออกใบนี้ ตัวอย่างบางส่วนน่าจะดี ฉัน red บทความบนเว็บไซต์ msdn (ลิงค์ที่คุณให้ไว้) แต่พวกเขาแสดงเพียงตัวอย่างเดียว: ADFS มีตัวเลือกอื่น ๆ อีกไหม? ไม่พบข้อมูลนี้ทุกที่ :(
Jo Smo

1
คำแนะนำเกี่ยวกับข้อมูลประจำตัวที่อ้างสิทธิ์และการควบคุมการเข้าถึงให้คำอธิบายอย่างเต็มรูปแบบของวิธีการที่อ้างถึงเทียบกับการควบคุมการเข้าถึงตามบทบาท (RBAC) หนังสือเล่มเต็มสามารถใช้ได้ฟรีและออนไลน์ผ่านการดาวน์โหลด MS goodreads.com/book/show/…
Chris Mylonas

2
หนังสือ RBAC ฟรีของ Microsoft ที่กล่าวถึงโดย @ChrisMylonas สามารถดาวน์โหลดได้ฟรีจาก Microsoft ได้ที่นี่: microsoft.com/en-us/download/details.aspx?id=28362
OzBob

16

เพียงเพิ่มสิ่งที่ @Lin ได้กล่าวไว้ข้างต้น ฉันกำลังอ้างอิงถึงคำถามโดยเฉพาะ:

ฉันต้องใช้การรักษาความปลอดภัยตามบทบาทและเวลาใดตามการอ้างสิทธิ์ คุณช่วยเขียนตัวอย่างหน่อยได้ไหม?

พิจารณากรณีที่คุณมีระบบตอกบัตรที่คุณมีช่างและผู้จัดการ ในตอนท้ายของทุกสัปดาห์ช่างจะต้องจัดทำรายงานพร้อมข้อมูลการตอกบัตรซึ่งแสดงชั่วโมงการทำงานของช่างฝีมือที่ทำงานในสัปดาห์นั้นซึ่งรวมอยู่ในบัญชีเงินเดือนของพนักงาน ระบบดังกล่าวมักจะต้องได้รับการแก้ไขหรือแก้ไขก่อนที่จะส่งรายงานขั้นสุดท้ายเนื่องจากคุณไม่ต้องการจ่ายเงินมากเกินไปหรือจ่ายเงินน้อยเกินไปสำหรับพนักงานของคุณ คุณสามารถใช้Role-Basedวิธีการสำหรับผู้จัดการและช่างเทคนิคโดยการสร้างและManager Role Technician Roleแต่สิ่งManager Roleนี้คือสิ่งที่มีความสามารถในการเข้าถึงและแก้ไขข้อมูลการตอกบัตรของช่างฝีมือ ในอีกทางหนึ่งคุณสามารถมีTechnician Roleหากปราศจากความสามารถเหล่านี้ในการเข้าถึงข้อมูลนั้น แต่นี่คือส่วนที่น่าสนใจ ผู้จัดการสามารถเรียกร้องและอนุญาตให้ช่างเทคนิคเข้าถึงระบบตอกบัตรและทำรายงาน ดังนั้นการอ้างสิทธิ์สามารถทำได้เพื่อการเข้าถึงโดยไม่ต้องแก้ไขหรือสามารถทำการเข้าถึงและแก้ไขความสามารถได้

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

นี่คือตัวอย่างที่คุณสามารถพิจารณาเพื่อทำความเข้าใจเกี่ยวกับการอ้างสิทธิ์และบทบาทได้มากขึ้น


0

การรับรองความถูกต้องมีสองประเภทในข้อมูลประจำตัวของ ASP.Net

  1. ตามบทบาท
  2. รับสิทธิ์ตาม

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

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

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