JAX-RS-Anwendungen im Web-Container sichern
Sie können die Sicherheitsservices, die über den Web-Container verfügbar sind, verwenden, um REST-Ressourcen zu sichern. Sie können Sicherheitsverfahren konfigurieren, die die Benutzerauthentifizierung, die Transportsicherheit, die Berechtigungsprüfung und die Zuordnungen von Benutzern zu Rollen definieren.
Vorbereitende Schritte
Um Sicherheitsvorgaben richtig zu definieren, ist es wichtig, dass Sie mit der Anwendung und den RESTful-Ressourcen, die sie verfügbar machen, vertraut sind. Dieses Wissen hilft Ihnen, entsprechende Sicherheitsrollen, die für Ihre Anwendung erforderlich sind, und einzelne Ressourcen, die von der Anwendung verfügbar gemacht werden, zu bestimmen.
In diesem Artikel wird eine REST-Beispielanwendung mit dem Namen "AddressBookApp" verwendet, die veranschaulichen sollen, wie eine REST-Anwendung gesichert wird.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_1255468655347">
<display-name>Sample REST Web Application</display-name>
<servlet>
<servlet-name>AddressBookApp</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.AddressBookApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>AddressBookApp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
In diesem Beispiel zeigt die Servlet-Zuordnung an, dass die REST-Ressourcen im Verzeichnis
/Stammkontext_der_Anwendung/rest bereitgestellt werden.
Stammkontext_der_Anwendung bezeichnet das, was Sie bei der Installation der Anwendung konfiguriert haben. Der Standardstammkontext ist /. Sie müssen die Sicherheit für WebSphere Application Server aktivieren.
Informationen zu diesem Vorgang
Sie können den Web-Container verwenden, um die Authentifizierung durchzuführen, oder Sie können Berechtigungsvorgaben für eine REST-Anwendung festlegen, die in der Anwendungsserverumgebung ausgeführt wird. Die Berechtigung ist eine grundlegende Sicherheitsanforderung für geschäftliche REST-Ressourcen, die ein Mindestmaß an Sicherheit erfordern und möglicherweise Ressourcen basierend auf der Identität des Callers (Aufrufenden) schützen müssen.
- Festlegen, dass Benutzer sich nur über die HTTP-Basisauthentifizierung oder die Formularanmeldung für Ihre Anwendung authentifizieren dürfen
- Die Anwendung so konfigurieren, dass sie beim Aufrufen von REST-Ressourcen einen SSL-Kanal für den Transport verwendet
- Rollenbasierte Berechtigungsvorgaben für Ihre REST-Ressourcenmuster definieren
- Die programmgesteuerte Verwendung des annotierten Objekts "SecurityContext" zur Bestimmung von Benutzeridentität und Rollen implementieren
Vorgehensweise
Ergebnisse
Nachdem Sie Sicherheitsvorgaben definiert haben, ist der Zugriff auf die REST-Ressourcen, die in Ihrer Anwendung definiert sind, nur nach einer erfolgreichen Benutzerauthentifizierung möglich. Außerdem haben Sie Rollenvorgaben für verschiedene Ressourcen-URL-Muster angewendet, um einen rollenbasierten Zugriff auf diese Ressourcen zu ermöglichen.
Beispiel
<web-app id="WebApp_1255468655347">
<display-name>Sample REST Web Application</display-name>
<servlet>
<servlet-name>AddressBookApp</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.AddressBookApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>AddressBookApp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<security-constraint id="SecurityConstraint_1">
<web-resource-collection id="WebResourceCollection_1">
<web-resource-name>AddressBookApp</web-resource-name>
<description>Protection area for Rest Servlet</description>
<url-pattern>/rest/addresses</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint id="AuthConstraint_1">
<description>Role1 for this rest servlet</description>
<role-name>Role1</role-name>
</auth-constraint>
<user-data-constraint id="UserDataConstraint_1">
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint id="SecurityConstraint_2">
<web-resource-collection id="WebResourceCollection_2">
<web-resource-name>AddressBookApp</web-resource-name>
<description>Protection area for Rest Servlet</description>
<url-pattern>/rest/addresses/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint id="AuthConstraint_2">
<description>Role2 for this rest servlet</description>
<role-name>Role2</role-name>
</auth-constraint>
<user-data-constraint id="UserDataConstraint_1">
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role id="SecurityRole_1">
<description>This is Role1</description>
<role-name>Role1</role-name>
</security-role>
<security-role id="SecurityRole_2">
<description>This is Role2</description>
<role-name>Role2</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/logon.jsp</form-login-page>
<form-error-page>/logonError.jsp</form-error-page>
</form-login-config>
</login-config>
</web-app>
Nächste Schritte
Verwalten Sie die Sicherheit für Ihre JAX-RS-Anwendung über die Administrationskonsole.