Dynamische Annotationen für Servletsicherheit

Wenn Sie die programmgesteuerten APIs für das Hinzufügen oder Erstellen eines Servlets verwenden, können die Sicherheitsannotationen "RunAs", "declareRoles" und "ServletSecurity" dynamisch mit der Methode "setRunAsRole()", "declareRoles()" bzw. "setServletSecurity()" dynamisch aktualisiert werden.

Anmerkung: Die Unterstützung für die dynamische Aktualisierung der Annotationen "RunAs", "declareRoles" und "ServletSecurity" für die Servletsicherheit ist neu in diesem Release von WebSphere Application Server.

Wenn eine Anwendung gestartet wird, untersucht der Web-Container alle Servlets mit den Annotationen "RunAs", "declareRoles" und "ServletSecurity" und setzt diese Annotationen in der Methode "setServletSecurity()" der Annotation "ServletRegistration". Der Web-Container weist die Sicherheitskomponente an, alle Annotationen "ServletRegistration" mit URL-Mustern und Sicherheitsvorgaben zu untersuchen. Daraufhin stellt die Sicherheitskomponente fest, ob ein URL-Muster im Implementierungsdeskriptor definiert ist. Wenn bereits eine exakte Übereinstimmung im Implementierungsdeskriptor definiert ist, werden die Sicherheitsvorgaben und die RunAs-Rolle im URL-Muster des Implementierungsdeskriptors anstelle der dynamischen Daten verwendet.

Fehler vermeiden Fehler vermeiden: Wenn die dynamischen Sicherheitsannotationen "declareRoles", "setRunAs" und "rolesAllowed" verwendet werden, muss der Rollenname über den Implementierungsdeskriptor oder über die Annotationen "declareRoles" und "RunAs" in der Servletklasse vordefiniert worden sein. Während der Implementierung können Sie die Administrationskonsole verwenden, um einen Benutzer oder eine Gruppe dieser Rolle zuzuordnen.gotcha

Wenn Sie eine exakte URL-Musterübereinstimmung für die Annotation "ServletSecurity" in der dynamischen Annotation für die Sicherheit haben, hat die Integritätsbedingung für die Sicherheit des URL-Musters in der dynamischen Annotation für die Sicherheit Vorrang. Wenn Sie die Methode "setServletSecurity()" mehrfach mit demselben URL-Muster aufrufen, hat die jeweils letzte Vorrang.

  • ServletRegistration.Dynamic.setRunAsRole(String roleName) legt den Namen der RunAs-Rolle für diese Servletregistrierung fest.
  • ServletContext.declareRoles(String roleNames) deklariert die Rollennamen, die für die Methode "isUserInRole()" getestet werden.
  • ServletRegistration.Dynmaic.setServletSecurity(ServletSecurityElement constraint) legt das ServletSecurityElement für diese Servletregistrierung fest.
Anmerkung: Ist die Systemeigenschaft "com.ibm.wsspi.security.web.webAuthReq" für die Webauthentifizierung auf persisting gesetzt, können Sie sich bei einem ungesicherten URL anmelden, wenn ein gültiger Benutzername und ein gültiges Kennwort angegeben werden.

Die folgenden beiden Beispiele können verwendet werden, um die Integritätsbedingungen für die Sicherheit und die RunAs-Rolle für dynamische Servlets mit der Methode "setServletSecurity()" zu definieren.

In diesem Beispiel erfordern alle HTTP-Elemente die Zugehörigkeit zur Rolle "Employee" für die PUT-Methode. Für die PUT-Methode erfordert das Element <auth-constraint> die Zugehörigkeit zur Rolle "Manager" und die Vertraulichkeitseinstellung für TransportGuarantee.
HttpConstraintElement constraint = new HttpConstraintElement(TransportGuarantee.NONE,
new String[]{"Employee"});
List<HttpMethodConstraintElement> methodConstraints =
new ArrayList<HttpMethodConstraintElement>();
methodConstraints.add(new HttpMethodConstraintElement("PUT",
new HttpConstraintElement(TransportGuarantee.CONFIDENTIAL, new String[]{"Manager"})));
ServletSecurityElement servletSecurity =
new ServletSecurityElement(constraint, methodConstraints);
In diesem Beispiel sind alle HTTP-Methoden mit Ausnahme der Methoden CUSTOM und GET zulässig. Für die Methode CUSTOM erfordert das Element <auth-constraint> die Zugehörigkeit zur Rolle "Manager". Für die Methode GET erfordert das Element <auth-constraint> die Zugehörigkeit zur Rolle "Employee" und die Vertraulichkeitseinstellung für TransportGuarantee.
HttpConstraintElement constraint = new HttpConstraintElement();
List<HttpMethodConstraintElement> methodConstraints = 
new ArrayList<HttpMethodConstraintElement>();
methodConstraints.add(new HttpMethodConstraintElement("CUSTOM", 
new HttpConstraintElement(TransportGuarantee.NONE, new String[]{"Manager"})));
methodConstraints.add(new HttpMethodConstraintElement("GET", 
new HttpConstraintElement(TransportGuarantee.CONFIDENTIAL, new String[]{"Employee"})));
ServletSecurityElement servletSecurity = new ServletSecurityElement(constraint, 
methodConstraints);

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_dynamic_annotations
Dateiname:csec_dynamic_annotations.html