Avvio rapido: app backend Liberty for Java
Con App ID, puoi facilmente proteggere i tuoi endpoint API e garantire la sicurezza delle tue applicazioni di backend Liberty for Java. Grazie alla guida, è possibile mettere in funzione un semplice flusso di autenticazione in meno di 20 minuti.
- Per effettuare una richiesta a una risorsa protetta, un client deve disporre di un token di accesso. Nel passo 1, il client effettua una richiesta a App ID per un token. Per ulteriori informazioni sull'ottenimento di token di accesso, vedi Ottenimento dei token.
- App ID restituisce i token.
- Utilizzando il token di accesso, il client effettua una richiesta per accedere alla risorsa protetta.
- La risorsa convalida il token che include la struttura, la scadenza, la firma, il pubblico e qualsiasi altro campo presente. Se il token non è valido, il server delle risorse nega l'accesso. Se la convalida del token ha esito positivo, restituisce i dati.
Prima di iniziare
Prima di iniziare a utilizzare App ID nell'applicazione back-end Liberty for Java, è necessario disporre dei seguenti prerequisiti:
- Un'istanza di il servizio App ID
- La CLI di IBM Cloud
- Apache Maven 3.5 +
- Java 8 +
Non hai un'applicazione con cui puoi provare il flusso? Nessun problema! App ID fornisce una semplice app di esempio Liberty for Java.
Ottenere le proprie credenziali
Puoi ottenere le tue credenziali in uno dei due modi di seguito indicati.
-
Passando alla scheda Applications del dashboard App ID. Se non ne hai già una, puoi fare clic su Add application per crearne una nuova.
-
Effettuando una richiesta POST all'endpoint
/management/v4/<tenantID>/applications.Request format: ```sh {: codeblock} curl -X POST \ https://us-south.appid.cloud.ibm.com/management/v4/<tenantID>/applications/ \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <IAMToken>' \ -d '{"name": "ApplicationName"}' ``` Example response: ```json {: screen} { "clientId": "xxxxx-34a4-4c5e-b34d-d12cc811c86d", "tenantId": "xxxxx-9b1f-433e-9d46-0a5521f2b1c4", "secret": "ZDk5YWZkYmYt*******", "name": "app1", "oAuthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxx-9b1f-433e-9d46-0a5521f2b1c4", "profilesUrl": "https://us-south.appid.cloud.ibm.com", "discoveryEndpoint": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxxx-9b1f-433e-9d46-0a5521f2b1c4/.well-known/openid-configuration" } ```
Configurare il file server.xml
-
Apri il tuo file
server.xml. -
Aggiungi le seguenti funzioni alla sezione
featureManager. Alcune funzioni potrebbero essere integrate con Liberty. Se si riceve un errore durante l'esecuzione del server, è possibile installarli eseguendo.installUtility install {name_of_server}dalla directory bin dell'installazione di Liberty.<featureManager> <feature>appSecurity-2.0</feature> <feature>openidConnectClient-1.0</feature> <feature>ssl-1.0</feature> <feature>servlet-3.1</feature> </featureManager> -
Configura SSL aggiungendo quanto segue al tuo file
server.xml.<keyStore id="defaultKeyStore" password="{password}"/> <keyStore id="RootCA" password="{password}" location="${server.config.dir}/resources/security/{myTrustStore}"/> <ssl id="{sslID}" keyStoreRef="defaultKeyStore" trustStoreRef="{truststore-ref}"/> -
Crea una funzione Open ID Connect Client e definisci i seguenti segnaposto. Con le credenziali che hai ottenuto, compila i segnaposto.
<openidConnectClient id="oidc-client-simple-liberty-backend-app" inboundPropagation="required" jwkEndpointUrl="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/publickeys" issuerIdentifier="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>" signatureAlgorithm="RS256" audiences="{client-id}" sslRef="oidcClientSSL" />Variabili dell'elemento OIDC per le applicazioni Liberty for Java Variabile Descrizione idIl nome della tua applicazione. inboundPropagationPer propagare le informazioni ricevute nel token, il valore deve essere impostato su "required". jwkEndpointUrlL'endpoint utilizzato per ottenere le chiavi e convalidare il token. Ulteriori informazioni sulle regioni disponibili. Puoi trovare il tuo ID tenant nelle credenziali che hai creato in precedenza. issuerIdentifierL'identificativo dell'emittente definisce il tuo server di autorizzazione. Ulteriori informazioni sulle regioni disponibili. Puoi trovare il tuo ID tenant nelle credenziali che hai creato in precedenza. signatureAlgorithmSpecificata come "RS256". audiencesPer impostazione predefinita, il token viene emesso per il tuo ID client App ID che può essere trovato nelle tue credenziali dell'applicazione. sslRefIl nome della configurazione SSL che vuoi utilizzare. -
Definisci il tuo tipo di oggetto speciale come
ALL_AUTHENTICATED_USERS.<application id="simple-liberty-backend-app" location="location-of-your-war-file" name="simple-liberty-backend-app" type="war"> <application-bnd> <security-role name="myrole"> <special-subject type="ALL_AUTHENTICATED_USERS"/> </security-role> </application-bnd> </application>
Configurare il file web.xml
Nel tuo file web.xml, definisci le aree della tua applicazione che vuoi proteggere.
-
Definisci un ruolo di sicurezza. Questo ruolo deve essere lo stesso definito nel file
server.xml.<security-role> <role-name>myrole</role-name> </security-role> -
Definisci un vincolo di sicurezza.
<security-constraint> <display-name>Security Constraints</display-name> <web-resource-collection> <web-resource-name>ProtectedArea</web-resource-name> <url-pattern>/api/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>myrole</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint>
Test della configurazione
Una volta terminata l'installazione iniziale, è possibile creare l'applicazione e testare la configurazione per assicurarsi che tutto funzioni come previsto.
-
Passa alla directory della tua applicazione.
-
Crea la tua applicazione.
server run -
Effettua una richiesta all'endpoint protetto. Viene restituito un errore.
-
Con il token di accesso che hai ottenuto nel passo precedente, effettua una richiesta all'endpoint. Ora è possibile accedere all'endpoint protetto. Verifica che la risposta contenga quanto previsto.