2017-06-26 2 views
2

Guten Morgen Ich verwende EJB2 (ältere Anwendung) auf WebLogic 10.Was ist die authentifizierte UESR Rolle - Java

Es gibt Methoden in meiner Session Beans, die von bestimmten Rolle ausgeführt werden, gesichert werden.
Jede meiner ejb Schnittstelle Methode, die ich mit

`@ejb.permission role-name="role1, role2"` 

mit Anmerkungen versehen Da möglicherweise einige Methoden, die von den Benutzern in wenigen verschiedenen Rollen ausgeführt, wie kann ich die Rolle sagen, das Verfahren läuft?

Ich weiß, wie zu wissen, ob ein „Anrufer in einer bestimmten Rolle ist“

Principal principal = ctx.getCallerPrincipal() ; 
boolean isRole = ctx.isCallerInRole("role2") ; 

Aber ist es eine Möglichkeit, den tatsächlichen Anrufers Rolle zu bekommen? So etwas wie "getCallerRole()" oder so?

In der XML-Datei "ejb-security-roles.xml" Ich angeben, welche Rollen in Anwendungsdomäne

<security-role> 
<role-name>role1</role-name> 
<role-name>role2</role-name> 
</security-role> 

Dann wurde jede dieser Rollen zugeordnet ist, zu LDAP in der „WebLogic-security-Rolle sind -assignment.xml "

<security-role-assignment> 
    <role-name>role1</role-name> 
    <principal-name>Role1User</principal-name> 
</security-role-assignment> 
<security-role-assignment> 
    <role-name>role2</role-name> 
    <principal-name>Role2User</principal-name> 
</security-role-assignment>` 

Kann mir jemand helfen und mich auf den richtigen Weg des Denkens führen?

Antwort

1

Verwenden Sie einfach if (ctx.isCallerInRole("role2")) {

Laut Oracle Accessing an Enterprise Bean Caller’s Security Context, es nur so Benutzerrolle zu überprüfen.

+0

Das Problem ist, dass schließlich mehr Rollen hinzugefügt werden können, ... wie, nicht 2 oder 3, aber .. 10-12. Der Code wird unordentlich wachsen ... Ich muss auf diese Rollen zugreifen, um in eine Datenbankspalte zu schreiben - ähnlich wie bei der Erstellung von Vorfällen :( –

+1

Ja, ich verstehe, Sie sollten andere Sicherheitsmanagement-Bibliothek verwenden. Zum Beispiel Feder-Sicherheit https://projects.spring.io/spring-security/ –

+0

Ja, naja .. das wäre für das zukünftige Projekt Migration und Updates.Ich nehme an, ich kann damit umgehen, dass isCallerInRole() Weg für ein paar Rollen, die ich jetzt haben –

Verwandte Themen