Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du konfigurerar Java-specifika säkerhetsinställningar i App Service. Java-program som körs i App Service har samma uppsättning rekommenderade säkerhetsmetoder som andra program.
Azure App Service kör Java-webbprogram i tre typer på en fullständigt hanterad tjänst:
- Java Standard Edition (SE). Java SE kan köra en app som distribueras som ett Java-arkivpaket (JAR) som innehåller en inbäddad server, till exempel Spring Boot, Quarkus, Dropwizard eller en app med en inbäddad Tomcat- eller Jetty-server.
- Tomcat. Den inbyggda Tomcat-servern kan köra en app som distribueras som ett WAR-paket (Web Application Archive).
- JBoss Enterprise Application Platform (EAP): Den inbyggda JBoss EAP-servern kan köra en app som distribueras som ett WAR- eller företagsarkivpaket (EAR). Det här alternativet stöds för Linux-appar i en uppsättning prisnivåer som inkluderar Kostnadsfri, Premium v3 och Isolerad v2.
Anmärkning
JBoss EAP på App Service stöder nu BYOL-fakturering (Bring Your Own License). BYOL gör det möjligt för kunder som har befintliga Red Hat-prenumerationer att tillämpa dessa licenser direkt på sina JBoss EAP-distributioner i Azure App Service. Mer information finns i BYOL-stöd för JBoss EAP på App Service.
Autentisera användare (Enkel autentisering)
Konfigurera appautentisering i Azure Portal med alternativet Autentisering och auktorisering. Därifrån kan du aktivera autentisering med hjälp av Microsoft Entra-ID eller sociala inloggningar som Facebook, Google eller GitHub. Azure Portal konfiguration fungerar bara när du konfigurerar en enda autentiseringsprovider. Mer information finns i Konfigurera din App Service-app så att den använder Microsoft Entra-inloggning och relaterade artiklar för andra identitetsprovidrar. Om du behöver aktivera flera inloggningsleverantörer kan du läsa Anpassa inloggningar och utloggningar.
Spring Boot-utvecklare kan använda Microsoft Entra Spring Boot Starter för att skydda program med välbekanta Spring Security-anteckningar och API:er. Se till att öka den maximala sidhuvudstorleken i filen application.properties . Vi föreslår värdet 16384.
Ditt Tomcat-program kan komma åt användarens anspråk direkt från servleten genom att casta objektet Principal till ett Map-objekt. Objektet Map mappar varje anspråkstyp till en samling anspråk för den typen. I följande kodexempel request är en instans av HttpServletRequest.
Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();
Nu kan du inspektera objektet Map angående ett specifikt krav. Följande kodfragment itererar till exempel genom alla anspråkstyper och skriver ut innehållet i varje samling.
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);
}
}
}
Om du vill logga ut användare använder du /.auth/ext/logout sökvägen. Information om hur du utför andra åtgärder finns i Anpassa inloggningar och utloggningar. Det finns också officiell dokumentation om Tomcat HttpServletRequest-gränssnittet och dess metoder. Följande servlet-metoder är också hydratiserade baserat på din App Service-konfiguration:
public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()
Om du vill inaktivera den här funktionen skapar du en programinställning med namnet WEBSITE_AUTH_SKIP_PRINCIPAL med värdet 1. Om du vill inaktivera alla servlet-filter som lagts till av App Service skapar du en inställning med namnet WEBSITE_SKIP_FILTERS med värdet 1.
Information om JBoss EAP finns på fliken Tomcat.
Konfigurera TLS
Information om hur du laddar upp ett befintligt TLS-certifikat och binder det till programmets domännamn finns i Aktivera HTTPS för en anpassad domän i Azure App Service. Du kan också konfigurera appen för att framtvinga TLS.
Använda Azure Key Vault-referenser
Azure Key Vault tillhandahåller centraliserad hantering av hemligheter med åtkomstprinciper och granskningshistorik. Du kan lagra hemligheter, till exempel lösenord eller anslutningssträngar, i ett nyckelvalv. Du kan komma åt dessa hemligheter i ditt program via miljövariabler.
Ge först din app åtkomst till ett nyckelvalv och gör en Key Vault-referens till din hemlighet i en programinställning. Du kan kontrollera att referensen matchar hemligheten genom att skriva ut miljövariabeln vid fjärråtkomst till App Service-terminalen.
För Spring-konfigurationsfiler, se Externalized Configuration.
Om du vill mata in dessa hemligheter i springkonfigurationsfilen använder du syntaxen för miljövariabelinmatning (${MY_ENV_VAR}).
Om du vill mata in dessa hemligheter i tomcat-konfigurationsfilen använder du syntax för miljövariabelinmatning (${MY_ENV_VAR}).
Använda Java-nyckelarkivet i Linux
Som standard läses alla offentliga eller privata certifikat som laddas upp till App Service Linux in i respektive Java-nyckellager när containern startar. När du har laddat upp certifikatet måste du starta om App Service för att det ska läsas in i Java-nyckelarkivet. Offentliga certifikat läses in i nyckellagret på $JRE_HOME/lib/security/cacerts. Privata certifikat lagras i $JRE_HOME/lib/security/client.jks.
Det kan krävas mer konfiguration för att kryptera din JDBC-anslutning med certifikat i Java-nyckelarkivet:
Initiera Java-nyckelarkivet i Linux
Om du vill initiera import java.security.KeyStore objektet läser du in keystore-filen med lösenordet. Standardlösenordet för båda nyckelarkiven är 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());
Läs in nyckelarkivet manuellt i Linux
Du kan manuellt ladda certifikat till nyckelarkivet. Om du vill inaktivera App Service från att läsa in certifikaten i nyckelarkivet automatiskt skapar du en appinställning, SKIP_JAVA_KEYSTORE_LOAD, med värdet 1. Alla offentliga certifikat som laddas upp till App Service med hjälp av Azure-portalen lagras under /var/ssl/certs/. Privata certifikat lagras under /var/ssl/private/.
Om du vill interagera eller felsöka Java Key Tool öppnar du en SSH-anslutning till Din App Service och kör kommandot keytool. En lista över kommandon finns i dokumentationen för nyckelverktyget. Mer information om KeyStore-API:et finns i Class KeyStore.
Relaterat innehåll
Besök Azure for Java Developers Center för att hitta Azure-snabbstarter, självstudier och Java-referensdokumentation.