Trust Association Interceptor
improve this page | report issueÜbersicht
Die IBM Mobile Foundation stellt eine Java-Bibliothek zur Vereinfachung der Authentifizierung externer Ressourcen mit WebSphere Trust Association Interceptors zur Verfügung.
Die Java-Bibliothek wird als JAR-Datei (com.ibm.mfp.oauth.tai-8.0.0.jar) bereitgestellt.
Dieses Lernprogramm zeigt, wie ein einfaches Java-Servlet (TAI/GetBalance
) mit einem Gültigkeitsbereich
(accessRestricted
) geschützt wird.
Voraussetzungen:
- Gehen Sie das Lernprogramm Externe Ressource mit MobileFirst Server authentifizieren durch.
- Machen Sie sich mit dem Sicherheitsframework der Mobile Foundation vertraut.
Server-Setup
- Öffnen Sie in der MobileFirst Operations Console das Download-Center und die Registerkarte Tools, um die ZIP-Datei mit den Sicherheitstools herunterzuladen. Sie erhalten ein
Archiv
mfp-oauth-tai.zip
. Entpacken Sie diese ZIP-Datei. - Fügen Sie die Datei
com.ibm.mfp.oauth.tai.jar
in der WebSphere-Application-Server-Instanz zum Verzeichnis usr/extension/lib hinzu. - Fügen Sie die Datei
OAuthTai.mf
in der WebSphere-Application-Server-Instanz zum Verzeichnis usr/extension/lib/features hinzu.
Setup für web.xml
Fügen Sie eine Integritätsbedingung für die Sicherheit und eine Sicherheitsrolle zur Datei
web.xml
der WebSphere-Application-Server-Instanz hinzu.
<security-constraint>
<web-resource-collection>
<web-resource-name>TrustAssociationInterceptor</web-resource-name>
<url-pattern>/TAI/GetBalance</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TAIUserRole</role-name>
</auth-constraint>
</security-constraint>
<security-role id="SecurityRole_TAIUserRole">
<description>This is the role that Mobile Foundation OAuthTAI uses to protect the resource, and it is mandatory to map it to 'All Authenticated in Application' in WebSphere Application Server full profile and to 'ALL_AUTHENTICATED_USERS' in WebSphere Application Server Liberty.</description>
<role-name>TAIUserRole</role-name>
</security-role>
server.xml
Passen Sie die WebSphere-Application-Server-Datei server.xml
an Ihre externe Ressource an.
-
Konfigurieren Sie den Feature-Manager so, dass er die folgenden Features enthält:
<featureManager> <feature>jsp-2.2</feature> <feature>appSecurity-2.0</feature> <feature>usr:OAuthTai-8.0</feature> <feature>servlet-3.0</feature> <feature>jndi-1.0</feature> </featureManager>
-
Fügen Sie eine Sicherheitsrolle in Form einer Klassenannotation zu Ihrem Java-Servlet hinzu:
@ServletSecurity(@HttpConstraint(rolesAllowed = "TAIUserRole"))
Wenn Sie servlet-2.x verwenden, müssen Sie die Sicherheitsrolle wie folgt in Ihrer Datei web.xml definieren:
<application contextRoot="TAI" id="TrustAssociationInterceptor" location="TAI.war" name="TrustAssociationInterceptor"/>
<application-bnd>
<security-role name="TAIUserRole">
<special-subject type="ALL_AUTHENTICATED_USERS"/>
</security-role>
</application-bnd>
</application>
-
Konfigurieren Sie den OAuthTAI, in dem der Schutz Ihrer URLs festgelegt wird:
<usr_OAuthTAI id="myOAuthTAI" authorizationURL="http://localhost:9080/mfp/api" clientId="ExternalResourceId" clientSecret="ExternalResourcePass" cacheSize="500"> <securityConstraint httpMethods="GET POST" scope="accessRestricted" securedURLs="/GetBalance"></securityConstraint> </usr_OAuthTAI>
-
authorizationURL: Ihr MobileFirst Server (
http(s):/Name_Ihres_Hosts:Port/Laufzeitname/api
) oder ein externer Autorisierungsserver wie IBM DataPower. -
clientID: Der Ressourcenserver muss ein registrierter vertraulicher Client sein. Im Lernprogramm Vertrauliche Clients erfahren Sie, wie ein vertraulicher Client registriert wird. *Der vertrauliche Client MUSS den zulässigen Bereich
authorization.introspect
haben, damit er Token validieren kann. - clientSecret: Der Ressourcenserver muss ein registrierter vertraulicher Client sein. Im Lernprogramm Vertrauliche Clients erfahren Sie, wie ein vertraulicher Client registriert wird.
-
cacheSize (optional): Der TAI verwendet den Java-Token-Validator-Cache, um Token und Introspektionsdaten als Werte zwischenzuspeichern, damit ein Token, das in der Anforderung vom Client kommt, nicht innerhalb einer kurzen Zeit erneut inspiziert werden muss.
Die Standardgröße liegt bei 50.000 Token.
Wenn Sie garantieren möchten, dass die Token bei jeder Anforderung inspiziert werden, setzen Sie den Cachewert auf 0.
- scope: Der Ressourcenserver führt die Authentifizierung anhand von Gültigkeitsbereichen durch. Ein Bereich kann eine Sicherheitsüberprüfung oder ein Sicherheitsüberprüfungen zugeordnetes Element “scope” sein.
-
Tokenintrospektionsdaten vom TAI verwenden
Vielleicht möchten Sie von Ihrer Ressource aus auf die Tokeninformationen zugreifen, die vom TAI abgefangen und validiert wurden. Die Liste der für das Token gefundenen Daten ist in den API-Referenzinformationen enthalten. Mit der API WSSubject können Sie diese Daten abrufen:
Map<String, String> credentials = WSSubject.getCallerSubject().getPublicCredentials(Hashtable.class).iterator().next();
JSONObject securityContext = new JSONObject(credentials.get("securityContext"));
...
securityContext.get('mfp-device')
Beispielanwendung
Sie können das Projekt in unterstützten Anwendungsservern (WebSphere Application Server Full Profile und WebSphere Application Server Liberty Profile) implementieren.
Laden Sie das einfache Java-Servlet herunter.
Verwendung des Beispiels
- Sie müssen den vertraulichen Client und die geheimen Schlüssel in der MobileFirst Operations Console aktualisieren.
- Implementieren Sie eine der Sicherheitsüberprüfungen: UserLogin oder PinCodeAttempts.
- Registrieren Sie die passende Anwendung.
- Ordnen Sie der Sicherheitsüberprüfung den Bereich
accessRestricted
zu. - Aktualisieren Sie die Clientanwendung so, dass
WLResourceRequest
Ihre Servlet-URL ist. - Legen Sie securityConstraint als Ihren Bereich für die Sicherheitsüberprüfung fest, die Ihre Clients für ihre Authentifizierung durchlaufen müssen.
Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.