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 handledningen visar hur du aktiverar skydd för REST API:er med Microsoft Entra ID i en Spring Boot-applikation.
I den här artikeln används ett undersökningssystem som exempel. Undersökningssystemet tillhandahåller följande REST-API:er:
-
GET /api/survey/questionär till för att visa undersökningen. -
POST /api/surveyär till för att fylla i undersökningen. -
GET /api/surveyär till för att visa undersökningsresultatet.
I den här artikeln skyddar du dessa API:er genom att tillämpa rollbaserad åtkomstkontroll (RBAC) för att tillämpa följande krav:
-
GET /api/survey/questionär tillgängligt för varje begäran. -
POST /api/surveyär tillgängligt för autentiserade användarbegäranden som innehåller en åtkomsttoken därSCOPE_Survey.User-behörigheten har beviljats. -
GET /api/surveyär tillgängligt för autentiserade administratörsanvändarbegäranden som innehåller en åtkomsttoken med detSCOPE_Survey.Adminbeviljade omfånget.
Förutsättningar
- En Azure prenumeration – skapa en kostnadsfri.
- Java Development Kit (JDK) version 8 eller senare.
- Apache Maven
- Azure CLI
- En instans av Microsoft Entra. Anvisningar om hur du skapar en finns i Quickstart: Skapa en ny klientorganisation i Microsoft Entra ID.
- Ett Spring Boot-program. Om du inte har ett skapar du ett Maven-projekt med Spring Initializr. Se till att välja Maven Project och, under Beroenden, lägg till Spring Web, OAuth2 Resource Server och Microsoft Entra ID beroenden och välj sedan Java version 8 eller senare.
Viktig
Spring Boot version 2.5 eller senare krävs för att slutföra stegen i den här artikeln.
Registrera REST-API:et
Använd följande steg för att registrera webb-API:et i Azure portalen.
Logga in på Azure-portalen.
Om du har åtkomst till flera klientorganisationer, använd filtret Katalog + prenumeration (
) för att välja den klientorganisation i vilken du vill registrera en applikation.Leta upp och välj Microsoft Entra ID.
Under Manage väljer du App registrations>Ny registrering.
Ange ett namn för ditt program i fältet Namn , till exempel
Api-SurveyService. Användare av din app kan se det här namnet och du kan ändra det senare.För Kontotyper som stöds väljer du Konton i valfri organisationskatalog.
Välj Registrera för att skapa programmet.
På appöversiktssidan letar du efter värdet program-ID (klient) och registrerar det för senare användning. Du behöver den för att konfigurera YAML-konfigurationsfilen för det här projektet.
Under Hantera väljer du Exponera ett API>Lägg till ett omfång. Godkänn den föreslagna program-ID-URI:n (
api://{clientId}) genom att välja Spara och fortsätta och ange sedan följande information:- Som Omfångsnamn anger du
Survey.User. - För Vem kan godkännaväljer du Administratörer och användare.
- För visningsnamn för administratörsmedgivande anger du
Access the survey service as a user.. - För Administratörsmedgivandebeskrivning, ange
Allows the users to write data in survey system.. - För Visningsnamn för användarmedgivande, anger du
Access the survey service as a user.. - För Beskrivning av användarmedgivande, anger du
Allows the users to write data in survey system.. - För Tillstånd, håll Aktiverad.
- Välj Lägg till definitionsområde.
- Som Omfångsnamn anger du
Upprepa föregående steg för att lägga till ett annat omfång. När du väljer Lägg till ett omfånganger du följande information:
- Som Omfångsnamn anger du
Survey.Admin. - För Vem kan godkännaväljer du Administratörer och användare.
- För visningsnamn för administratörsmedgivande anger du
Access the survey service as a admin.. - För Administratörsmedgivandebeskrivning, ange
Allows the users to view data in survey system.. - För Visningsnamn för användarmedgivande, anger du
Access the survey service as a admin.. - För Beskrivning av användarmedgivande, anger du
Allows the users to view data in survey system.. - För Tillstånd, håll Aktiverad.
- Välj Lägg till definitionsområde.
- Som Omfångsnamn anger du
Aktivera Spring Cloud Azure Starter-Microsoft Entra ID
Aktivera sedan REST API-skyddet med Spring Cloud Azure.
Lägga till säkerhetsberoenden
Om du vill installera modulen Spring Cloud Azure Starter Azure Active Directory lägger du till följande beroenden i filen pom.xml:
Spring Cloud Azure Materialförteckning (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.4.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Notera
Om du använder Spring Boot 4.0.x anger du
spring-cloud-azure-dependenciesversionen till7.4.0.Om du använder Spring Boot 3.5.x anger du
spring-cloud-azure-dependenciesversionen till6.5.0.Om du använder Spring Boot 3.1.x-3.5.x måste du ange
spring-cloud-azure-dependenciesversionen till5.25.0.Om du använder Spring Boot 2.x måste du ange
spring-cloud-azure-dependenciesversionen till4.20.0.Den här materialspecifikationen (BOM) bör konfigureras i avsnittet
<dependencyManagement>i din pom.xml-fil. Detta säkerställer att alla Spring Cloud-Azure beroenden använder samma version.Mer information om vilken version som används för den här BOM finns genom att läsa Which Version of Spring Cloud Azure Should I Use.
Spring Cloud Azure Starter Microsoft Entra artefakt:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-active-directory</artifactId> </dependency>Spring Boot Starter OAuth2 Resource Server-artefakten:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-resource-server</artifactId> </dependency>
Auktorisera HTTP-begäranden
För att skydda undersökningens REST-API:er lägger du till kommentaren @PreAuthorize("hasAuthority('SCOPE_Survey.xxx')") med ett konkret omfångsnamn för att aktivera skydd, som du ser i följande exempel:
import org.springframework.http.MediaType;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.LinkedHashMap;
import java.util.Map;
@RestController
@RequestMapping("/api/survey")
public class SurveyController {
private static final String QUESTION = "Which sports do you like most?";
private final Map<LocalDateTime, String> surveys = new LinkedHashMap<>();
@GetMapping(value = "/question", produces = MediaType.APPLICATION_JSON_VALUE)
public String question() {
return QUESTION;
}
@PostMapping
@PreAuthorize("hasAuthority('SCOPE_Survey.User')")
public String addAnswer(@RequestParam("answer") String answer) {
if (StringUtils.hasText(answer)) {
surveys.put(LocalDateTime.now(), answer);
return "succeeded";
}
return "Failed";
}
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("hasAuthority('SCOPE_Survey.Admin')")
public Map<LocalDateTime, String> list() {
return surveys;
}
}
Uppdatera YAML-konfigurationen enligt följande exempel:
spring:
cloud:
azure:
active-directory:
enabled: true
credential:
client-id: <your-application-ID-of-Api-SurveyService>
app-id-uri: <your-application-ID-URI-of-Api-SurveyService>
Notera
I v1.0-token kräver konfigurationen klient-ID för API:et, medan du i v2.0-token kan använda klient-ID:t eller program-ID:ts URI i begäran. Du kan konfigurera båda för att slutföra målgruppsverifieringen korrekt.
Distribuera till Azure Spring Apps
När du har kört Spring Boot-programmet lokalt kan du flytta det till produktion. Azure Spring Apps gör det enkelt att distribuera Spring Boot-program till Azure utan några kodändringar. Tjänsten hanterar infrastrukturen för Spring-program så att utvecklare kan fokusera på sin kod. Azure Spring Apps tillhandahåller livscykelhantering med omfattande övervakning och diagnostik, konfigurationshantering, tjänstidentifiering, CI/CD-integrering, blågröna distributioner med mera. Mer information finns i Quickstart: Distribuera ditt första program till Azure Spring Apps.