Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az oktatóanyag bemutatja, hogyan engedélyezheti a REST API-k védelmét Microsoft Entra ID egy Spring Boot-alkalmazásban.
Ez a cikk egy felmérési rendszert használ példaként. A felmérési rendszer a következő REST API-kat biztosítja:
-
GET /api/survey/questiona felmérés megtekintésére használható. -
POST /api/surveya felmérés kitöltésére használható. -
GET /api/surveya felmérés eredményének megtekintésére használható.
Ebben a cikkben a szerepköralapú hozzáférés-vezérlés (RBAC) alkalmazásával védheti ezeket az API-kat a következő követelmények érvényre juttatásához:
-
GET /api/survey/questionminden kéréshez elérhető. -
POST /api/surveya megadottSCOPE_Survey.Userhatókörrel rendelkező hozzáférési jogkivonatot tartalmazó hitelesített felhasználói kérelmekhez érhető el. -
GET /api/surveyolyan hitelesített rendszergazdai felhasználói kérésekhez érhető el, amelyek a megadottSCOPE_Survey.Adminhatókörrel rendelkező hozzáférési jogkivonatot tartalmaznak.
Előfeltételek
- Egy Azure előfizetés – ingyenes előfizetés.
- Java Fejlesztői készlet (JDK) 8-os vagy újabb verzió.
- Apache Maven
- Azure parancssori felület
- Egy Microsoft Entra példány. A létrehozással kapcsolatos utasításokért lásd: Gyorsútmutató: Új bérlő létrehozása a Microsoft Entra ID-ban.
- Egy Spring Boot-alkalmazás. Ha még nem rendelkezik ilyennel, hozzon létre egy Maven-projektet a Spring Initializrsegítségével. Mindenképpen válassza a Maven Project lehetőséget, és a Dependencies területen adja hozzá a Spring Web, OAuth2 erőforráskiszolgáló és Microsoft Entra ID függőségeket, majd válassza ki Java 8- vagy újabb verziót.
Fontos
A cikkben ismertetett lépések elvégzéséhez a Spring Boot 2.5-ös vagy újabb verziójára van szükség.
A REST API regisztrálása
Az alábbi lépésekkel regisztrálhatja a webes API-t a Azure portálon.
Jelentkezzen be a Azure portálra.
Ha több bérlőhöz van hozzáférése, a Címtár + előfizetés szűrővel (
) válassza ki azt a bérlőt, amelyben regisztrálni szeretne egy alkalmazást.Keresse meg és válassza ki a Microsoft Entra ID.
A Manage területen válassza a Alkalmazásregisztrációk>Új regisztráció lehetőséget.
Adja meg például az alkalmazás nevét a Név mezőben
Api-SurveyService. Előfordulhat, hogy az alkalmazás felhasználói látják ezt a nevet, és később módosíthatja.Támogatott fióktípusok esetén válassza a Bármely szervezeti címtárban lévő Fiókok lehetőséget.
Válassza a Regisztráció lehetőséget az alkalmazás létrehozásához.
Az Alkalmazás áttekintése lapon keresse meg az alkalmazás (ügyfél) azonosítójának értékét, majd jegyezze fel későbbi használatra. A projekt YAML-konfigurációs fájljának konfigurálásához szükség van rá.
A Kezelés alatt válassza az API kitevés>Hatókör hozzáadása lehetőséget. Fogadja el a javasolt alkalmazásazonosító URI-ját (
api://{clientId}) a Mentés és folytatás gombra kattintva, majd adja meg a következő adatokat:- A Hatókör neve mezőbe írja be a következőt
Survey.User: - A Ki tud hozzájárulni lehetőséghez válassza a Rendszergazdák és felhasználók lehetőséget.
-
rendszergazdai hozzájárulás megjelenítendő neve, írja be
Access the survey service as a user.. - A rendszergazdai hozzájárulás leírásáhozírja be:
Allows the users to write data in survey system.. -
Felhasználói hozzájárulás megjelenítendő neve, írja be a következő értéket:
Access the survey service as a user.. - A felhasználói hozzájárulás leírásához írja be a
Allows the users to write data in survey system.. - Állapot alatt tartsa bekapcsolva.
- Válassza a Hatókör hozzáadása lehetőséget.
- A Hatókör neve mezőbe írja be a következőt
Ismételje meg az előző lépést egy másik hatókör hozzáadásához. Ha a Hatókör hozzáadásalehetőséget választja, adja meg a következő adatokat:
- A Hatókör neve mezőbe írja be a következőt
Survey.Admin: - A Ki tud hozzájárulni lehetőséghez válassza a Rendszergazdák és felhasználók lehetőséget.
-
rendszergazdai hozzájárulás megjelenítendő neve, írja be
Access the survey service as a admin.. - A rendszergazdai hozzájárulás leírásáhozírja be:
Allows the users to view data in survey system.. -
Felhasználói hozzájárulás megjelenítendő neve, írja be a következő értéket:
Access the survey service as a admin.. - A felhasználói hozzájárulás leírásához írja be a
Allows the users to view data in survey system.. - Állapot alatt tartsa bekapcsolva.
- Válassza a Hatókör hozzáadása lehetőséget.
- A Hatókör neve mezőbe írja be a következőt
A Microsoft Entra ID Spring Cloud Azure Starter engedélyezése
Ezután engedélyezze a REST API-védelmet a Spring Cloud Azure.
Biztonsági függőségek hozzáadása
A Spring Cloud Azure Starter Azure Active Directory modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzék (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>Megjegyzés
Ha Spring Boot 4.0.x-et használ, állítsa a verziót a
spring-cloud-azure-dependencieskövetkezőre7.4.0: .Ha a Spring Boot 3.5.x-et használja, állítsa a verziót a
spring-cloud-azure-dependencieskövetkezőre6.5.0: .Ha a Spring Boot 3.1.x-3.5.x verziót használja, mindenképpen állítsa be a verziót
spring-cloud-azure-dependencies-ra/c1.Ha a Spring Boot 2.x-et használja, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót4.20.0-re.Ezt az anyagjegyzéket (BOM) a
<dependencyManagement>fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud-Azure függőség ugyanazt a verziót használja.Az ebben az anyagjegyzékben használt verzióval kapcsolatos további információkért lásd: Melyik Spring Cloud Azure verziót érdemes használnom.
A Spring Cloud Azure Starter Microsoft Entra összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-active-directory</artifactId> </dependency>A Spring Boot Starter OAuth2 erőforráskiszolgáló összetevő:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-resource-server</artifactId> </dependency>
HTTP-kérések engedélyezése
A felmérés REST API-inak védelméhez adja hozzá a széljegyzetet @PreAuthorize("hasAuthority('SCOPE_Survey.xxx')") egy konkrét hatókörnévvel a védelem engedélyezéséhez, ahogyan az a következő példában látható:
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;
}
}
Frissítse a YAML-konfigurációt az alábbi példában látható módon:
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>
Megjegyzés
Az 1.0-s verziójú jogkivonatok esetében a konfigurációhoz az API ügyfél-azonosítója szükséges, míg a 2.0-s verziójú jogkivonatokban használhatja az ügyfél-azonosítót vagy az alkalmazásazonosító URI-ját a kérelemben. Mindkettőt konfigurálhatja úgy, hogy megfelelően végezze el a célközönség érvényesítését.
Üzembe helyezés a Azure Spring Apps
Miután helyi környezetben futtatja a Spring Boot alkalmazást, áthelyezheti éles környezetbe. Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások Azure való üzembe helyezését kódmódosítások nélkül. A szolgáltatás kezeli a Spring-alkalmazások infrastruktúráját, hogy a fejlesztők a kódjukra összpontosíthassanak. Azure Spring Apps teljes körű monitorozás és diagnosztika, konfigurációkezelés, szolgáltatásfelderítés, CI/CD-integráció, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. További információ: Gyorsútmutató: Az első alkalmazás üzembe helyezése az Azure Spring Apps szolgáltatásban.