Anteckning
Å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 på en fullständigt hanterad tjänst i tre varianter:
- Java Standard Edition (SE): Kan köra en app som distribueras som ett Java Archive-paket (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). Stöds för Linux-appar i en uppsättning prisnivåer som innehåller Kostnadsfri, Premium v3 och Isolerad v2.gti
Anmärkning
JBoss EAP på App Service stöder nu BYOL-fakturering (Bring Your Own License), vilket gör att kunder med befintliga Red Hat-prenumerationer kan tillämpa dessa licenser direkt på sina JBoss EAP-distributioner i Azure App Service. Läs mer.
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 följer du anvisningarna i 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. Om du vill utföra andra åtgärder kan du läsa dokumentationen om 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/SSL
Om du vill ladda upp ett befintligt TLS/SSL-certifikat och binda det till ditt programs domännamn följer du anvisningarna i Skydda ett anpassat DNS-namn med en TLS/SSL-bindning i Azure App Service. Du kan också konfigurera appen för att framtvinga TLS/SSL.
Använda KeyVault-referenser
Azure KeyVault tillhandahåller centraliserad hantering av hemligheter med åtkomstprinciper och granskningshistorik. Du kan lagra hemligheter (till exempel lösenord eller anslutningssträng) i KeyVault och få åtkomst till dessa hemligheter i ditt program via miljövariabler.
Följ först anvisningarna för att ge din app åtkomst till ett nyckelvalv och göra en KeyVault-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.
Information om Spring-konfigurationsfiler finns i den här dokumentationen om externaliserade konfigurationer.
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 nyckelarkivet på $JRE_HOME/lib/security/cacertsoch 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. Se dokumentationen för din valda JDBC-drivrutin.
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. Skapa en appinställning, SKIP_JAVA_KEYSTORE_LOAD, med värdet 1 för att inaktivera App Service från att läsa in certifikaten i nyckelarkivet automatiskt. Alla offentliga certifikat som laddas upp till App Service via Azure Portal lagras under /var/ssl/certs/. Privata certifikat lagras under /var/ssl/private/.
Du kan interagera eller felsöka Java Key Tool genom att öppna en SSH-anslutning till Din App Service och köra kommandot keytool. En lista över kommandon finns i dokumentationen  för nyckelverktyget. Mer information om KeyStore-API :et finns i den officiella dokumentationen.
Relaterat innehåll
Besök Azure for Java Developers Center för att hitta Azure-snabbstarter, självstudier och Java-referensdokumentation.