Applicazioni di backend
Puoi utilizzare gli SDK e le API IBM Cloud® App ID per proteggere i tuoi endpoint e API dell'applicazione di backend.
Descrizione del flusso
Parte dello sviluppo delle applicazioni di backend è di verificare che le tue API siano protette da accessi non autorizzati. Il App ID SDK ti aiuta a proteggere i tuoi endpoint API e a garantire la sicurezza della tua app.
Qual è la base tecnica del flusso?
App ID implementa la specifica OAuth 2.0 e la specifica OIDC, che utilizza token di portatori per l'autenticazione e l'autorizzazione. Questi token sono formattati come JSON Web Token, che sono firmati digitalmente e contengono rivendicazioni che descrivono il soggetto che viene autenticato e il fornitore di identità. Le API della tua applicazione vengono protette dai token di accesso e identità. I client che devono accedere alle tue API, possono autenticarsi con il provider di identità tramite App ID in cambio di questi token. Le affermazioni contenute nei token devono essere convalidate per garantire l'accesso alle API protette.
Per ulteriori informazioni su come vengono utilizzati i token in App ID, consulta Descrizione dei token.
Come si presenta il flusso?
-
Un client esegue una richiesta POST al server di autorizzazione App ID per ottenere un token di accesso. Una richiesta POST normalmente ha la seguente forma:
POST /oauth/v4/<tenantID>/token HTTP/1.1 Content_type: application/x-www-form-urlencoded Authorization header = "Basic" + base64encode(<clientID>:<secret>) FormData = <grantType> -
Se il client soddisfa le qualifiche, il server di autorizzazione restituisce un token di accesso.
-
Il client invia una richiesta alla risorsa protetta. Le richieste possono essere inviate in più modi, a seconda di quale libreria client HTTPS stai utilizzando, ma una richiesta generalmente ha il seguente formato:
curl -H 'Authorization: Bearer <accessToken>' <https://my-protected-resource.com> -
La risorsa protetta o l'API convalida il token. Se il token è valido, viene concesso al client l'accesso alla risorsa. Se il token non può essere convalidato, l'accesso viene negato.
Per informazioni su come configurare la propria app per utilizzare Liberty for Java, consultare Quick start: Liberty for Java backend app tutorial.
Protezione delle risorse utilizzando l'SDK Node.js
Puoi utilizzare gli SDK App ID per implementare autenticazione e autorizzazione per le tue applicazioni lato server. La ApiStrategy interviene nella protezione delle tue risorse di backup richiedendo la convalida di token di accesso
e identità come parte della richiesta. L'SDK App ID Node.js funziona con il framework Passport.
Consulta il seguente video per ottenere ulteriori informazioni sulla protezione delle applicazioni Node di backend con App ID. Quindi, provate voi stessi utilizzando una semplice applicazione di esempio Node.
Prima di iniziare
Prima di iniziare a utilizzare l'SDK Node.js, è necessario disporre dei seguenti prerequisiti.
- Un'istanza di App ID
- NPM versione 4 o superiore
- Node versione 6 o superiore
Installazione dell'SDK Node.js
-
Aggiungi l'SDK App ID Node.js al file
package.jsondella tua applicazione."dependencies": { "ibmcloud-appid": "^7.0.0" } -
Immetti il seguente comando.
npm install
Inizializzazione dell'SDK Node.js
-
Ottieni il tuo
oauth server url.- Passa alla scheda Service Credentials del dashboard App ID.
- Se ancora non hai una serie di credenziali, fai clic su New credential e quindi su Add per creare una nuova serie. Se le hai, salta questo passo.
- Fai clic sul pulsante di attivazione View credentials per visualizzare le tue informazioni.
- Copia il tuo
oauth server urlper utilizzarlo nel prossimo passo.
-
Inizializza la strategia passport App ID come mostrato nel seguente esempio.
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());
Protezione dell'API con la strategia API
Il seguente frammento di codice illustra come utilizzare ApiStrategy in un'applicazione Express per proteggere l'API GET /protected.
Se la tua applicazione Node.js viene eseguita su IBM Cloud ed è associata alla tua istanza di App ID, non c'è bisogno di fornire la configurazione della strategia API. La configurazione di App ID ottiene le informazioni utilizzando la variabile di ambiente VCAP_SERVICES.
app.get('/protected_resource', passport.authenticate('APIStrategy.STRATEGY_NAME', { session: false }), function(request, response){
console.log("Security context", request.appIdAuthorizationContext);
response.send(200, "Success!");
}
);
Dopo la convalida dei token, viene chiamato il successivo middleware nella catena di richieste e viene aggiunta la proprietà appIdAuthorizationContext all'oggetto della richiesta. La proprietà contiene i token di accesso e identità
originali e le informazioni sul payload decodificate dei token.
Protezione delle risorse utilizzando l'SDK Swift
L'SDK App ID lato server Swift fornisce un plug-in middleware per la protezione delle API, utilizzato per proteggere le applicazioni di backend. Associando le tue API al middleware, puoi proteggere la tua applicazione da accessi non autorizzati. Dopo che l'API è protetta, il middleware garantisce che i token generati da App ID siano convalidati. Puoi quindi modificare il comportamento dell'API in base ai risultati della convalida.
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()
}
Proteggere le risorse manualmente
Per garantire la sicurezza delle tue applicazioni di backend e delle tue risorse protette, devi convalidare un token. Quando un client invia una richiesta alla risorsa, è possibile verificare che il token soddisfi le specifiche definite. Il token può includere delle informazioni di identificazione o qualsiasi altra configurazione da te implementata. Puoi convalidare i token di accesso e identità App ID in molti modi. Per un aiuto, consulta Convalida dei token.
Passi successivi
Con App ID installato nella tua applicazione, sei quasi pronto ad iniziare ad autenticare gli utenti. Prova ad eseguire una delle seguenti attività:
- Configura i tuoi provider di identità
- Personalizza e configura il widget di accesso
- Ulteriori informazioni sull'SDK Node.js
- Per saperne di più sul Swift SDK