Back-End-Apps
Sie können die IBM Cloud® App ID-SDKs und -APIs zum Schutz Ihrer Back-End-Anwendungsendpunkte und -APIs verwenden.
Informationen zum Ablauf
Ein Bestandteil der Entwicklung von Back-End-Apps besteht darin zu überprüfen, ob Ihre APIs vor unbefugtem Zugriff geschützt sind. Die App ID-SDKs unterstützen Sie beim Schutz Ihrer API-Endpunkte und stellen die Sicherheit Ihrer App sicher.
Was ist die technische Basis des Ablaufs?
{{{site.data.keyword.appid_short_notm}} implementiert die OAuth 2.0 und OIDC-Spezifikation, die Inhaber-Tokens für die Authentifizierung und Autorisierung verwendet. Diese Token sind als JSON-Web-Token formatiert, die digital signiert sind und Angaben enthalten, die das zu authentifizierende Subjekt und den Identitätsanbieter beschreiben. Die APIs Ihrer Anwendung werden durch Zugriffs- und Identitätstoken geschützt. Clients, die Zugriff auf Ihre APIs benötigen, können sich mit dem Identitätsprovider über App ID im Austausch für diese Token authentifizieren. Die Claims in den Token müssen validiert werden, um Zugriff auf die geschützten APIs zu erteilen.
Weitere Informationen dazu, wie Token in App ID verwendet werden, finden Sie unter Informationen zu Token.
Wie sieht der Ablauf aus?
-
Ein Client stellt eine POST-Anforderung an den App ID-Autorisierungsserver, um ein Zugriffstoken zu erhalten. Eine POST-Anforderung hat in der Regel das folgende Format:
POST /oauth/v4/<tenantID>/token HTTP/1.1 Content_type: application/x-www-form-urlencoded Authorization header = "Basic" + base64encode(<clientID>:<secret>) FormData = <grantType>
-
Wenn der Client entsprechend qualifiziert ist, gibt der Autorisierungsserver ein Zugriffstoken zurück.
-
Der Client sendet eine Anforderung an die geschützte Ressource. Anforderungen können auf unterschiedliche Weise gesendet werden. Die Vorgehensweise ist davon abhängig, welche HTTP-Clientbibliothek Sie verwenden. Das Format einer Anforderung ist allerdings immer wie folgt:
curl -H 'Authorization: Bearer <accessToken>' <https://my-protected-resource.com>
-
Die geschützte Ressource oder API validiert das Token. Wenn das Token gültig ist, wird dem Client der Zugriff auf die Ressource gewährt. Wenn das Token nicht validiert werden kann, wird der Zugriff verweigert.
Informationen zur Konfiguration Ihrer App für die Verwendung von Liberty for Java finden Sie unter Schnelleinstieg: Lernprogramm für Liberty for Java -Back-End-Apps.
Ressourcen durch Verwenden des Node.js-SDKs schützen
Sie können die App ID-SDKs verwenden, um die Authentifizierung und Autorisierung für Ihre serverseitigen Anwendungen zu erzwingen. Mit ApiStrategy
können Sie Ihre Back-End-Ressourcen absichern. Dazu wird die Validierung der Zugriffs-
und Identitätstoken im Rahmen der Anforderung zwingend durchgeführt. Das App ID Node.js SDK arbeitet mit dem Passport-Framework.
Sehen Sie sich das folgende Video an, um Informationen zum Schutz von Back-End-Knotenanwendungen mit App ID zu erhalten. Probieren Sie es dann selbst aus, indem Sie eine einfache Node verwenden.
Vorbereitende Schritte
Bevor Sie die Arbeit mit dem Node.js-SDK aufnehmen können, müssen die nachfolgend genannten Voraussetzungen erfüllt sein.
- Eine Instanz von App ID
- NPM Version 4 oder höher
- Node Version 6 oder höher
Node.js-SDK installieren
-
Fügen Sie das App ID-Node.js-SDK zur Datei
package.json
Ihrer App hinzu."dependencies": { "ibmcloud-appid": "^7.0.0" }
-
Führen Sie den folgenden Befehl aus.
npm install
Node.js-SDK initialisieren
-
Rufen Sie Ihre
oauth server url
ab.- Navigieren Sie zur Registerkarte Serviceberechtigungsnachweise des App ID-Dashboards.
- Wenn Sie noch nicht über die erforderlichen Berechtigungsnachweise verfügen, klicken Sie auf Neuer Berechtigungsnachweis und anschließend auf Hinzufügen, um neue Berechtigungsnachweise zu erstellen. Wenn Sie dies tun, überspringen Sie diesen Schritt.
- Klicken Sie auf die Option Berechtigungsnachweise anzeigen, um Ihre Informationen anzuzeigen.
- Kopieren Sie die
oauth server url
, um sie im nächsten Schritt zu verwenden.
-
Initialisieren Sie die App ID-Passport-Strategie, wie dies aus dem folgenden Beispiel hervorgeht.
var express = require('express'); var passport = require('passport'); var APIStrategy = require('ibmcloud-appid').APIStrategy; passport.use(new APIStrategy({ oauthServerUrl: "<oauthServerUrl>" })); var app = express(); app.use(passport.initialize());
API mit der API-Strategie schützen
Das folgende Snippet veranschaulicht, wie Sie ApiStrategy
in einer Express-App verwenden, um die /protected
-GET-API zu schützen.
Wenn Ihre Node.js-App unter IBM Cloud ausgeführt wird und an Ihre Instanz von App ID gebunden ist, muss die API-Strategiekonfiguration nicht bereitgestellt werden. Die App ID-Konfiguration ruft die Informationen unter Verwendung der Umgebungsvariablen VCAP_SERVICES ab.
app.get('/protected_resource', passport.authenticate('APIStrategy.STRATEGY_NAME', { session: false }), function(request, response){
console.log("Security context", request.appIdAuthorizationContext);
response.send(200, "Success!");
}
);
Wenn die Token gültig sind, wird die nächste Middleware in der Anforderungskette aufgerufen und die Eigenschaft appIdAuthorizationContext
wird dem Anforderungsobjekt hinzugefügt. Die Eigenschaft enthält die ursprünglichen Zugriffs-
und Identitätstoken sowie die entschlüsselten Nutzdateninformationen der Token.
Ressourcen durch Verwenden des Swift-SDKs schützen
Das serverseitige Swift SDK von App ID stellt ein Middleware-Plug-in für API-Zugriffsschutz bereit, das zum Schutz Ihrer Back-End-Apps verwendet wird. Durch die Zuordnung Ihrer APIs zur Middleware können Sie Ihre App vor unbefugtem Zugriff schützen. Nachdem die API geschützt ist, stellt die Middleware sicher, dass die Token, die von App ID generiert wurden, validiert werden. Sie können dann das Verhalten der API abhängig von den Validierungsergebnissen ändern.
import Foundation
import Kitura // server
import Credentials // middleware
import IBMCloudAppID // SDK
// setup routes
let router = Router()
// mandatory option to be passed in if app not deployed on IBM Cloud
let options = [
"oauthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/d8438de6-c325-4956-ad34-abd49194affd",
]
let apiCreds = Credentials()
// Minimum macOS version required
if #available(OSX 10.12, *) {
// setup API protection
let apiKituraCredentialsPlugin = APIKituraCredentialsPlugin(options: options)
apiCreds.register(plugin: apiKituraCredentialsPlugin)
// associate route with API protection
router.all(middleware: apiCreds)
// create protected API
router.get("/protectedendpoint") { request, response, next in
response.headers["Content-Type"] = "text/html; charset=utf-8"
do {
if let userProfile = request.userProfile {
try response.status(.OK).send(
"<!DOCTYPE html><html><body>" +
"Welcome " + userProfile.displayName +
"! You are logged in with " + userProfile.provider + "." +
"</body></html>\n\n").end()
next()
return
}
try response.status(.unauthorized).send(
"<!DOCTYPE html><html><body>” + “You are not authorized!" +
"</body></html>\n\n").end()
}
catch {}
next()
}
// Start server
Kitura.addHTTPServer(onPort: 8090, with: router)
Kitura.run()
}
Ressourcen manuell schützen
Um Ihre Back-End-Apps und geschützten Ressourcen zu sichern, müssen Sie ein Token überprüfen. Wenn ein Client eine Anforderung an Ihre Ressource sendet, können Sie überprüfen, ob das Token die definierten Spezifikationen erfüllt. Das Token kann Identifikationsinformationen, den Geltungsbereich oder andere Konfigurationsdaten enthalten, die Sie definiert haben. Sie können App ID-Zugriffs- und Identitätstoken auf verschiedene Arten prüfen. Weitere Informationen zu diesem Thema finden Sie in Token validieren.
Nächste Schritte
Wenn App ID in Ihrer Anwendung installiert ist, sind Sie fast bereit, Benutzer zu authentifizieren. Versuchen Sie als Nächstes, eine der folgenden Aktivitäten auszuführen:
- Konfigurieren Ihrer Identitätsprovider
- Anpassen und Konfigurieren des Anmeldewidgets
- Weitere Informationen zum Node.js SDK
- Erfahren Sie mehr über das Swift SDK