Sep 2, 2007

Μηχανισμοί ασφάλειας (security) στα ADF Business Components

Είναι εξαιρετικά ενδιαφέρον να παρατηρήσουμε πως τα ADF Business components, πέρα από το O-R mapping και τη θέσπιση επιχειρηματικών κανόνων (validation logic) μπορούν να χρησιμοποιηθούν για τη δόμηση πλαισίου ασφάλειας, διασυνδεδεμένο με το πρότυπο JAAS, σε επίπεδο entity, ακόμα και σε επίπεδο πεδίου. Εξ ορισμού, o JDeveloper εκμεταλλεύεται ένα εσωτερικό αρχείο για ρόλους σε εφαρμογές J2EE. Αντικείμενο αυτού του άρθρου είναι η κατάδειξη πως μπορούμε να δημιουργήσουμε το δικό μας και να το αξιοποιήσουμε στο περιβάλλον μας.

Ξεκινώντας με το JAAS, θα πρέπει να ορίσουμε τους λογικούς ρόλους της εφαρμογής. Γι' αυτό το λόγο, το project μας θα πρέπει να περιλαμβάνει το jazn-data.xml που περιγράφει ακριβώς τους ρόλους που μας ενδιαφέρουν και χρησιμεύει σαν security repository στο καιρό της ανάπτυξης (που φυσικά σε περιβάλλον παραγωγής θα χρησιμοποιηθεί ένα LDAP ή μια βάση δεδομένων). Για να δημιουργηθεί αυτό το αρχείο, επιλέγουμε το ADF BC project μας και διαλέγουμε από το μενού Deployment Descriptors--> OC4J Deployment Descriptor Wizard.

και στο επόμενο βήμα, διαλέγουμε το jazn-data.xml, και την έκδοση που θα υλοποιεί, ανάλογα με το περιβάλλον deployment.

Για να επεξεργαστούμε το αρχείο, επιλέγουμε το jazn-data.xml και οδηγούμαστε στο Properties.

Σε αυτό το σημείο, θα πρέπει να ορίσουμε ένα realm (κάτι σαν το namespace που θα περιλαμβάνει τους χρήστες του οργανισμού, π.χ. mycompany.com), τους χρήστες, τους ρόλους και την αντιστοίχιση μεταξύ τους.

Επαναλαμβάνουμε τη διαδικασία δημιουργίας ενός νέου deployment descriptor, διαλέγοντας αυτή τη φορά τη δημιουργία του αρχείου orion-application.xml

Επεξεργαζόμαστε το αρχείο που μόλις προέκυψε, διαμορφώνοντας την γραμμή:


όπου ορίζουμε δηλαδή το default-realm μας. Σε αυτό το σημείο, θα πρέπει να κλείσουμε τον JDeveloper και να επεξεργαστούμε το αρχείο $JDEV_HOME/j2ee/home/config/jazn.xml. Πιο συγκεκριμένα, χρειάζεται να αλλάξουμε τη γραμμή που ορίζει τη διαδρομή του default jazn-data.xml αρχείου, που οριοθετεί τους εξ ορισμού ρόλους στον JDeveloper, στο αρχείο που φτιάξαμε στο project μας δηλαδή, αλλάζουμε το:

location="./system-jazn-data.xml"


για παράδειγμα σε:
location="/home/spk/Projects/workdir/ADF-Training/OE-Model2/src/META-INF/jazn-data.xml"

Προσοχή: Αυτή η αλλαγή αφορά όλα τα project μας στον JDeveloper, που από εδώ και στο εξής θα βλέπουν αυτούς τους ρόλους. Ξεκινούμε το JDeveloper, προχωρούμε σε ένα entity και στο βήμα Authorization, βλέπουμε τους ρόλους που έχουμε κατασκευάσει και ορίζουμε για παράδειγμα έναν κανόνα read-only πρόσβασης σε ένα συγκεκριμένο πεδίο.

Για τη δοκιμή των παρεμβάσεών μας, διαλέγουμε το Application Module μας και αλλάζουμε την τιμή της παραμέτρου "jbo.security.enforce" σε "Auth" για την ενεργοποίηση του μηχανισμού ασφάλειας και την αυτόματη δημιουργία ενός login παραθύρου.

Ξεκινούμε τον ADF Business Components Tester και βρισκόμαστε αντιμέτωποι με την οθόνη της αυθεντικοποίησης:

Βλέποντας τις εγγραφές του entity που μας ενδιαφέρει, διαπιστώνουμε πως μπορούμε μόνο να προβάλλουμε και όχι να μεταβάλλουμε το πεδίο OrderStatus, οπότε ο κανόνας μας έχει εφαρμοστεί με επιτυχία.

No comments: