ผู้ให้บริการ JACC สามารถใช้สิ่งอำนวยความสะดวกการทำแผนที่หลักตามบทบาทของเซิร์ฟเวอร์ที่ใช้งานได้อย่างไร


154

ฉันกำลังเขียนJACCผู้ให้บริการ

PolicyConfigurationไปตามทางที่นี้หมายถึงการดำเนินการ

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

อย่างไรก็ตามมันไม่ได้เป็นส่วนหนึ่งของสัญญาPolicyConfigurationของ (atrocious) เพื่อรักษาการแมประหว่างบทบาทและสิทธิ์ของพวกเขาและPrincipalsที่ได้รับมอบหมายให้กับบทบาทเหล่านั้น

โดยทั่วไป - แอปพลิเคชันเซิร์ฟเวอร์จะจับคู่การทำแผนที่นี้เสมอ ตัวอย่างเช่นใน Glassfish คุณส่งผลกระทบต่อการทำแผนที่นี้โดยการจัดหาสิ่งที่ชอบsun-web.xmlและsun-ejb-jar.xmlและอื่น ๆ ที่มีโมดูล Java EE ของคุณ (ไฟล์เฉพาะผู้จัดจำหน่ายเหล่านี้มีความรับผิดชอบในการพูดเช่นsuperusersเป็นกลุ่มที่จะได้รับการกำหนดบทบาทของแอปพลิเคชันของadmins)

ฉันต้องการใช้ฟังก์ชันการทำงานที่ไฟล์เหล่านี้นำมาใช้ซ้ำและฉันต้องการทำเช่นนั้นเพื่อให้แอปพลิเคชันเซิร์ฟเวอร์มีความหลากหลายมากที่สุด

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

คำถามของฉัน:ฉันจะได้รับข้อมูลการทำแผนที่บทบาทหลักนี้ได้อย่างไร - สำหรับผู้เริ่มต้น - Glassfish และ JBoss จากภายในPolicyConfiguration? หากมีวิธีมาตรฐานในการทำที่ฉันไม่ทราบว่าฉันหูทั้งหมด


7
คุณมีความคืบหน้าเกี่ยวกับปัญหานี้หรือไม่? ผมอยากจะเขียนเป็นผู้ให้บริการ JACC เกินไปและยังเป็นผู้ให้บริการการตรวจสอบ JASPIC เพื่อสร้างการใช้งานเว็บแบบพกพา ...
perissf

สิ่งนี้อาจฟังดูไม่ดีนัก: Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.ดูdocs.oracle.com/cd/E24329_01/web.1211/e24485/…
Arjan Tijms

2
ฉันใช้เวลานี้ในขณะนี้คือคุณต้องให้แน่ใจว่าผู้ให้บริการ JACC ของคุณเป็นคู่กับผู้ให้บริการ JASPIC ที่คุณจึงจำเป็นต้องเขียน ฉันยังไม่ได้ไปเส้นทางนี้ แต่มันอยู่บนโต๊ะของฉันที่จะลอง
Laird Nelson

@ LairdNelson ถ้าคุณมีเวลาคุณควรเขียนคำตอบเกี่ยวกับความคิดเห็น JASPIC ของคุณ ฟังดูดีและมีชื่อเสียงกว่า 300 รางวัลสำหรับคำถามนี้
jimhark

5
สวัสดี; ไม่พยายามทำให้ใคร ๆ ต้องสงสัย :-) ฉันไม่มีคำตอบที่นี่ที่ฉันสามารถเอาชนะได้อย่างรวดเร็ว ฉันจำได้ว่า Ron Monzillo แนะนำฉันว่าวิธีเดียวที่จะได้รับการมอบหมายให้ทำหน้าที่หลัก "ใน" ผู้ให้บริการ JACC ในแบบที่เข้าใจได้คือการใช้ JASPIC อย่างมีประสิทธิภาพควบคู่ไปกับมัน
Laird Nelson

คำตอบ:


3

คำตอบสั้น ๆ คือ: ไม่มีวิธีมาตรฐานที่จะทำ

แม้ว่า Glassfish และ JBoss สนับสนุนการแมปหลักกับบทบาท JACC ไม่ได้สมมติว่าคอนเทนเนอร์ทั้งหมดทำและดังนั้นจึงมอบหมายความรับผิดชอบในการทำให้การแมปเหล่านั้นกับการดำเนินการให้บริการ JACC จากเอกสาร (ดู: PolicyConfiguration.addToRoleวิธีการ ):

เป็นหน้าที่ของผู้ให้บริการนโยบายเพื่อให้แน่ใจว่าสิทธิ์ทั้งหมดที่เพิ่มเข้ากับบทบาทนั้นมอบให้แก่ผู้ว่าจ้าง "แมปกับบทบาท"

กล่าวอีกนัยหนึ่งคุณต้องปรับใช้เองด้วยตัวคุณเองภายในผู้ให้บริการ JACC สำหรับแต่ละคอนเทนเนอร์ สำหรับ JBoss ตัวอย่างเช่นคุณสามารถใช้คลาสย่อยAbstractRolesMappingProviderหนึ่งใน


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

ด้านหมายเหตุ # 2: ในฐานะของ Java EE 8, การแมปกลุ่มต่อบทบาทได้กลายเป็นค่าเริ่มต้นใหม่ (ซึ่งทำให้เรามีเพียงครึ่งทางเท่านั้นเนื่องจากบทบาทยังต้องได้รับการประกาศแบบคงที่ล่วงหน้า - สมมติว่าไม่มีผู้ให้บริการ JACC ที่กำหนดเอง ส่งผลกับ).
Uux
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.