Πέρα όμως από αυτήν την υπηρεσία, συχνά είναι απαραίτητο να μάθουμε την ταυτότητα του χρήστη που έχει συνδεθεί, ενδεχομένως για να διαμορφώσουμε μηχανισμούς εξουσιοδότησης (authorization) ή να αλλάξουμε εν γένει τη συμπεριφορά του web service. Στο JAX-RPC υποστηρίζεται η δήλωση ειδικών κλάσεων που η εκτέλεσή τους είτε θα προηγείται είτε θα ακολουθεί την εκτέλεση του καθαυτού web service (interceptors). Αυτές οι ειδικές κλάσεις ονομάζονται JAX-RPC handlers και απλά πρέπει να υλοποιούν το interface javax.xml.rpc.handler.Handler.
Υλοποιώντας το προαναφερόμενο interface, η μέθοδος που εκτελείται κάθε φορά που καλείται η υπηρεσία μας είναι η handleRequest() και στην οποία μπορούμε να ορίσουμε τον παρακάτω κώδικα προκειμένου να διαβάσουμε τα στοιχεία του χρήστη που έχει συνδεθεί.
/**
* Intervene request.
* @param messageContext is the SOAP context.
* @return an indication of whether to proceed or not.
*/
public boolean handleRequest(MessageContext messageContext) {
boolean exit = true;
String AUTH_PROPERTY = "oracle.security.wss.authuser";
Object authProperty = messageContext.getProperty(AUTH_PROPERTY);
JAZNUserAdaptor loggedUser = (JAZNUserAdaptor)messageContext.getProperty(AUTH_PROPERTY);
logger.debug("User logged on:" + loggedUser.getName());
//Do something with the user identity.
// ...
return exit;
}
Έτσι τρέχοντας ένα οποιοδήποτε web service, επαληθεύουμε πως διαβάσαμε τα κατάλληλα στοιχεία.
No comments:
Post a Comment