Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u Java-specifieke beveiligingsinstellingen configureert in App Service. Java-toepassingen die worden uitgevoerd in App Service, hebben dezelfde set aanbevolen beveiligingsprocedures als andere toepassingen.
Azure App Service voert Java-webtoepassingen uit in drie typen op een volledig beheerde service:
- Java Standard Edition (SE). Java SE kan een app uitvoeren die is geïmplementeerd als een Java-archiefpakket (JAR) dat een ingesloten server bevat, zoals Spring Boot, Quarkus, Dropwizard of een app met een ingesloten Tomcat- of Jetty-server.
- Tomcat. De ingebouwde Tomcat-server kan een app uitvoeren die is geïmplementeerd als een WAR-pakket (Web Application Archive).
- JBoss Enterprise Application Platform (EAP): de ingebouwde JBoss EAP-server kan een app uitvoeren die is geïmplementeerd als een WAR- of Enterprise Archive-pakket (EAR). Deze optie wordt ondersteund voor Linux-apps in een set prijscategorieën met Gratis, Premium v3 en Isolated v2.
Opmerking
JBoss EAP in App Service ondersteunt nu BYOL-facturering (Bring Your Own License). MET BYOL kunnen klanten met bestaande Red Hat-abonnementen deze licenties rechtstreeks toepassen op hun JBoss EAP-implementaties in Azure App Service. Zie BYOL-ondersteuning voor JBoss EAP in App Service voor meer informatie.
Gebruikers verifiëren (Easy Auth)
Stel app-verificatie in Azure Portal in met de optie Verificatie en autorisatie . Hier kunt u verificatie inschakelen met behulp van Microsoft Entra ID of sociale aanmeldingen, zoals Facebook, Google of GitHub. Azure Portal-configuratie werkt alleen bij het configureren van één verificatieprovider. Zie Uw App Service-app configureren voor het gebruik van microsoft Entra-aanmelding en de gerelateerde artikelen voor andere id-providers voor meer informatie. Als u meerdere aanmeldingsproviders wilt inschakelen, raadpleegt u Aanmeldingen en afmelden aanpassen.
Spring Boot-ontwikkelaars kunnen de Microsoft Entra Spring Boot-starter gebruiken om toepassingen te beveiligen met vertrouwde Spring Security-aantekeningen en API's. Zorg ervoor dat u de maximale headergrootte in het bestand application.properties verhoogt. We stellen een waarde voor 16384.
Uw Tomcat-toepassing heeft rechtstreeks vanuit de servlet toegang tot de claims van de gebruiker door het principal-object naar een kaartobject te casten. Het Map object wijst elk claimtype toe aan een verzameling van de claims voor dat type. In het volgende codevoorbeeld request is dit een exemplaar van HttpServletRequest.
Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();
Nu kunt u het Map object controleren op een specifieke claim. Het volgende codefragment doorloopt bijvoorbeeld alle claimtypen en drukt de inhoud van elke verzameling af.
for (Object key : map.keySet()) {
Object value = map.get(key);
if (value != null && value instanceof Collection {
Collection claims = (Collection) value;
for (Object claim : claims) {
System.out.println(claims);
}
}
}
Als u gebruikers wilt afmelden, gebruikt u het /.auth/ext/logout pad. Zie Aanmeldingen en afmeldingen aanpassen om andere acties uit te voeren. Er is ook officiële documentatie over de Tomcat HttpServletRequest-interface en de bijbehorende methoden. De volgende servlet-methoden worden eveneens gehydrateerd op basis van uw App Service configuratie.
public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()
Als u deze functie wilt uitschakelen, maakt u een toepassingsinstelling met de naam WEBSITE_AUTH_SKIP_PRINCIPAL met de waarde .1 Als u alle servlet-filters wilt uitschakelen die door App Service zijn toegevoegd, maakt u een instelling met de naam WEBSITE_SKIP_FILTERS met de waarde .1
Zie het tabblad Tomcat voor JBoss EAP.
TLS configureren
Zie HTTPS inschakelen voor een aangepast domein in Azure App Service om een bestaand TLS-certificaat te uploaden en dit te binden aan de domeinnaam van uw toepassing. U kunt de app ook configureren om TLS af te dwingen.
Azure Key Vault-verwijzingen gebruiken
Azure Key Vault biedt gecentraliseerd geheimbeheer met toegangsbeleid en controlegeschiedenis. U kunt geheimen, zoals wachtwoorden of verbindingsreeksen, opslaan in een sleutelkluis. U kunt deze geheimen in uw toepassing openen via omgevingsvariabelen.
Verleen eerst uw app toegang tot een sleutelkluis en maak een Key Vault-verwijzing naar uw wachtwoord in een toepassingsinstelling. U kunt controleren of de verwijzing naar het geheim leidt door de omgevingsvariabele weer te geven terwijl u op afstand toegang hebt tot de App Service-terminal.
Zie Extern geconfigureerde configuratie voor Spring-configuratiebestanden.
Als u deze geheimen in uw Spring-configuratiebestand wilt injecteren, gebruikt u syntaxis voor omgevingsvariabeleinjectie (${MY_ENV_VAR}).
Als u deze geheimen wilt injecteren in uw Tomcat-configuratiebestand, gebruikt u de syntaxis van de omgevingsvariabele injectie (${MY_ENV_VAR}).
Het Java-sleutelarchief gebruiken in Linux
Standaard worden openbare of persoonlijke certificaten die naar App Service Linux zijn geüpload , geladen in de respectieve Java-sleutelarchieven wanneer de container wordt gestart. Nadat u uw certificaat hebt geüpload, moet u uw App Service opnieuw starten om het te laden in het Java-sleutelarchief. Openbare certificaten worden geladen in het sleutelarchief op $JRE_HOME/lib/security/cacerts. Persoonlijke certificaten worden opgeslagen in $JRE_HOME/lib/security/client.jks.
Er kan meer configuratie nodig zijn voor het versleutelen van uw JDBC-verbinding met certificaten in het Java-sleutelarchief:
Het Java-sleutelarchief initialiseren in Linux
Als u het import java.security.KeyStore object wilt initialiseren, laadt u het sleutelarchiefbestand met het wachtwoord. Het standaardwachtwoord voor beide sleutelarchieven is changeit.
KeyStore keyStore = KeyStore.getInstance("jks");
keyStore.load(
new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/cacerts"),
"changeit".toCharArray());
KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(
new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/client.jks"),
"changeit".toCharArray());
Het sleutelarchief handmatig laden in Linux
U kunt certificaten handmatig laden in het sleutelarchief. Als u wilt uitschakelen dat App Service de certificaten automatisch in het sleutelarchief laadt, maakt u een app-instelling, SKIP_JAVA_KEYSTORE_LOADmet de waarde .1 Alle openbare certificaten die zijn geüpload naar App Service met behulp van Azure Portal, worden opgeslagen onder /var/ssl/certs/. Persoonlijke certificaten worden opgeslagen onder /var/ssl/private/.
Als u wilt communiceren of fouten wilt opsporen in het Java-sleutelprogramma, opent u een SSH-verbinding met uw App Service en voert u de opdracht keytooluit. Raadpleeg de documentatie van het Key Tool voor een lijst met commando's. Zie Class KeyStore voor meer informatie over de KeyStore-API.
Verwante inhoud
Ga naar het Azure voor Java-ontwikkelaarscentrum om azure-snelstartgidsen, zelfstudies en Java-referentiedocumentatie te vinden.