In einer Sicherheits Java EE-Anwendung gibt es:
Wie funktionieren RoleAllowed und RunAs in EJB?
- 3 EJB: B1, B2 und B3
- 3 Methoden: m1 in B1, m2 in B2 und m3 in B3
Ein Ausführungspfad: m1 -> (m2-> m3). Das bedeutet: m1 ruft m2 und m2 ruft m3 an.
Eine Sicherheitskonfiguration:
- 2 Rollen: Student und Professor
- m1 erlaubt Student Rolle
- m2 Professor Rolle
- m3 ermöglicht Student Rolle ermöglicht
- B1 verwendet Run-as Professor Rolle
Ich habe 2 Szenarien, dass:
(1) Wenn ein Benutzer (Bob) ist Student Rolle zugewiesen. Die von Bob aufgerufene Ausführung m1 -> (m2-> m3) ist fehlgeschlagen. Wenn ich drucke Rollen der Anrufer in jeder Methode:
- m1: student
- m2: Professor
(2) Wenn ein Benutzer (Bob) Schüler zugewiesen Rolle und Professor Rolle. Die von Bob aufgerufene Ausführung m1 -> (m2-> m3) ist erfolgreich. Wenn ich drucke Rollen der Anrufer in jeder Methode:
- m1: Student, Professor
- m2: Student, Professor
- m3: Student, Professor
FRAGE: In (1), warum beeinflusst RunAs die Rolle von Bob (Caller)? Aber in (2) ist es nicht so. System prüft @RoleAllowed vor @RunAs, oder?