Hallo,
Welche Schnittstelle zur Ermittlung des aktiven Nutzers und dessen Rollen ist für eine Komponente, die in verschiedensten Serveranwendungen eingesetzt werden soll, am geeignetsten?
Die Authentifizierung kann man sicher gut außerhalb eine Komponente erledigen (durch den Container). Aber die Autorisierung muss schon in die Anwendung eingewoben sein. Die Anwendung muss wissen, wer etwas tut und welche Rechte (Rollen) er hat.
Wenn ich zum Beispiel ein Wiki-Modul entwickle, das in verschiedene Anwendungen eingebunden werden können soll, ist ein einheitlicher Ansatz für die Authentifizierung und Autorisierung erforderlich. Bei einer Wiki-Seite wird der Name des Autors benötigt, um festzuhalten, wer die Änderung gemacht hat und evtl. muss der Nutzer auch eine bestimmte Rolle haben, um die Änderung überhaupt durchführen zu können.
Wenn man sich auf Webanwendungen beschränkt, wäre die Verwendung von
javax.servlet.http.HttpServletRequest.getUserPrincipal() und
javax.servlet.http.HttpServletRequest.isUserInRole(String role)
denkbar. Aber ist das so allgemein akzeptiert, dass man darauf in einer vielfältig einsetzbaren Komponente bauen kann?
Wie ist das Verhältnis diese Methoden zu JAAS? Sehe ich es richtig, dass der Servlet-Container JAAS implementiert, da getUserPrincipal() ein Principal-Objekt liefert, das in der (JAAS?)-Schnittstelle java.security.Principal definiert ist. Aber was ist mit den Rollen? Dafür scheint JAAS nichts zu bieten. Stattdessen wird das in HttpServletRequest geregelt. JAAS enthält dafür "Permissions", die für mich als konkurrierender Ansatz erscheinen.
Wie sieht es mit Spring Security aus? Damit kann man zwar alle möglichen Authentifizierungsverfahren nutzen, aber ist die Autorisierung nicht ein eigener Weg, der nichts mit JAAS oder dem Verfahren von HttpServletRequest zu tun hat? Anders gefragt: basiert Spring Security auf allgemein anerkannten Schnittstellen, die eine damit abgesicherte Softwarekomponente leicht in andere Systeme integrierbar machen?
Gruß
Christian
Welche Schnittstelle zur Ermittlung des aktiven Nutzers und dessen Rollen ist für eine Komponente, die in verschiedensten Serveranwendungen eingesetzt werden soll, am geeignetsten?
Die Authentifizierung kann man sicher gut außerhalb eine Komponente erledigen (durch den Container). Aber die Autorisierung muss schon in die Anwendung eingewoben sein. Die Anwendung muss wissen, wer etwas tut und welche Rechte (Rollen) er hat.
Wenn ich zum Beispiel ein Wiki-Modul entwickle, das in verschiedene Anwendungen eingebunden werden können soll, ist ein einheitlicher Ansatz für die Authentifizierung und Autorisierung erforderlich. Bei einer Wiki-Seite wird der Name des Autors benötigt, um festzuhalten, wer die Änderung gemacht hat und evtl. muss der Nutzer auch eine bestimmte Rolle haben, um die Änderung überhaupt durchführen zu können.
Wenn man sich auf Webanwendungen beschränkt, wäre die Verwendung von
javax.servlet.http.HttpServletRequest.getUserPrincipal() und
javax.servlet.http.HttpServletRequest.isUserInRole(String role)
denkbar. Aber ist das so allgemein akzeptiert, dass man darauf in einer vielfältig einsetzbaren Komponente bauen kann?
Wie ist das Verhältnis diese Methoden zu JAAS? Sehe ich es richtig, dass der Servlet-Container JAAS implementiert, da getUserPrincipal() ein Principal-Objekt liefert, das in der (JAAS?)-Schnittstelle java.security.Principal definiert ist. Aber was ist mit den Rollen? Dafür scheint JAAS nichts zu bieten. Stattdessen wird das in HttpServletRequest geregelt. JAAS enthält dafür "Permissions", die für mich als konkurrierender Ansatz erscheinen.
Wie sieht es mit Spring Security aus? Damit kann man zwar alle möglichen Authentifizierungsverfahren nutzen, aber ist die Autorisierung nicht ein eigener Weg, der nichts mit JAAS oder dem Verfahren von HttpServletRequest zu tun hat? Anders gefragt: basiert Spring Security auf allgemein anerkannten Schnittstellen, die eine damit abgesicherte Softwarekomponente leicht in andere Systeme integrierbar machen?
Gruß
Christian