Java Spring Boot-alkalmazások védelme csoportok és csoportjogcímek használatával
Ez a cikk egy Java Spring Boot-webalkalmazást mutat be, amely a Microsoft Entra ID Spring Boot Starter ügyfélkódtárat használja Java-hoz hitelesítéshez, engedélyezéshez és jogkivonat-beszerzéshez. Az alkalmazás az OpenID Csatlakozás protokoll használatával jelentkezik be a felhasználókba, és korlátozza a lapokhoz való hozzáférést az Azure Active Directory biztonsági csoporttagság alapján.
Az alábbi ábrán az alkalmazás topológiája látható:
Az ügyfélalkalmazás a Java-hoz készült Microsoft Entra ID Spring Boot Starter ügyfélkódtárral jelentkezik be a felhasználókba egy Microsoft Entra ID-bérlőben, és beszerez egy azonosító jogkivonatot a Microsoft Entra ID-ból.
Az azonosító jogkivonat tartalmazza a csoportok jogcímét. Az alkalmazás betölti a jogcímeket a spring GrantedAuthorities
listába a bejelentkezett felhasználó számára. Ezek az értékek határozzák meg, hogy a felhasználó mely oldalakhoz férhet hozzá.
A forgatókönyvet bemutató videóért tekintse meg az alkalmazások engedélyezésének implementálását alkalmazásszerepkörök, biztonsági csoportok, hatókörök és címtárszerepkörök használatával.
Előfeltételek
- JDK 15-ös verzió. Ez a minta java 15-ös rendszeren lett kifejlesztve, de más verziókkal kompatibilis lehet.
- Maven 3
- Java Extension Pack for Visual Studio Code a minta Visual Studio Code-ban való futtatásához ajánlott.
- Egy Microsoft Entra ID-bérlő. További információ: Rövid útmutató: Bérlő beállítása.
- Egy felhasználói fiók a Microsoft Entra ID-bérlőben. Ez a minta nem működik személyes Microsoft-fiókkal. Ezért ha személyes fiókkal jelentkezett be az Azure Portalra , és nem rendelkezik felhasználói fiókkal a címtárban, most létre kell hoznia egyet.
- Két, névvel ellátott
AdminGroup
UserGroup
biztonsági csoport, amely tartalmazza a mintát aláírni és tesztelni kívánt felhasználót vagy felhasználókat. Másik lehetőségként hozzáadhatja a felhasználót két meglévő biztonsági csoporthoz a bérlőben. Ha meglévő csoportokat használ, mindenképpen módosítsa a mintakonfigurációt a meglévő biztonsági csoportok nevének és objektumazonosítójának használatára. - Visual Studio Code
- Azure Tools for Visual Studio Code
Ajánlások
- A Spring Framework néhány ismerete
- A Linux/OSX terminál vagy a Windows PowerShell ismerete
- jwt.ms a jogkivonatok vizsgálatához.
- A Fiddler a hálózati tevékenység figyeléséhez és a hibaelhárításhoz.
- Kövesse a Microsoft Entra ID blogot , hogy naprakész maradjon a legújabb fejlesztésekkel kapcsolatban.
A minta beállítása
Az alábbi szakaszok bemutatják, hogyan állíthatja be a mintaalkalmazást.
A mintaadattár klónozása vagy letöltése
A minta klónozásához nyisson meg egy Bash-ablakot, és használja a következő parancsot:
git clone https://github.com/Azure-Samples/ms-identity-java-spring-tutorial.git
cd ms-identity-java-spring-tutorial
cd 3-Authorization-II/groups
Másik lehetőségként keresse meg az ms-identity-java-spring-tutorial adattárat, majd töltse le .zip fájlként, és bontsa ki a merevlemezre.
Fontos
A Windows fájlelérési útvonalának korlátozásainak elkerülése érdekében klónozza vagy bontsa ki az adattárat a merevlemez gyökerének közelében található könyvtárba.
A mintaalkalmazás regisztrálása az Azure Active Directory-bérlővel
Ebben a mintában egy projekt szerepel. Ha regisztrálni szeretné az alkalmazást az Azure Portalon, kövesse a manuális konfigurációs lépéseket, vagy használjon PowerShell-szkriptet. A szkript a következő feladatokat hajtja végre:
- Létrehozza a Microsoft Entra ID-alkalmazásokat és a kapcsolódó objektumokat, például jelszavakat, engedélyeket és függőségeket.
- Módosítja a projektkonfigurációs fájlokat.
A PowerShell-szkript futtatásához kövesse az alábbi lépéseket:
Windows rendszeren futtassa a PowerShellt rendszergazdaként, és keresse meg a klónozott könyvtár gyökerét.
Ha még nem ismeri az Azure AD PowerShellt, tekintse meg az alkalmazás-létrehozási szkripteket a forrásadattárban, hogy a környezet megfelelően legyen előkészítve.
A PowerShell végrehajtási szabályzatának beállításához használja a következő parancsot:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
A konfigurációs szkript futtatásához használja az alábbi parancsokat:
cd .\AppCreationScripts\ .\Configure.ps1
Feljegyzés
A szkriptek futtatásának egyéb módjait az alkalmazáslétrehozási szkriptek ismertetik. A szkriptek emellett útmutatást nyújtanak az automatikus alkalmazásregisztrációhoz, konfiguráláshoz és eltávolításhoz, ami segíthet a CI/CD-forgatókönyvekben.
A kódminta konfigurálása az alkalmazásregisztrációs és biztonsági csoportok (java-spring-webapp-groups) használatára
Az alkalmazás konfigurálásához kövesse az alábbi lépéseket:
Feljegyzés
A következő lépésekben ugyanaz, ClientID
mint Application ID
vagy AppId
.
Nyissa meg a projektet az IDE-ben.
Nyissa meg az src\main\resources\application.yml fájlt.
Keresse meg a helyőrzőt
Enter_Your_Tenant_ID_Here
, és cserélje le a meglévő értéket a Microsoft Entra-bérlőazonosítóra.Keresse meg a helyőrzőt
Enter_Your_Client_ID_Here
, és cserélje le a meglévő értéket az alkalmazásazonosítóra vagyclientId
azjava-spring-webapp-groups
Azure Portalról másolt alkalmazásra.Keresse meg a helyőrzőt
Enter_Your_Client_Secret_Here
, és cserélje le a meglévő értéket az Azure Portalról másolt példány létrehozásajava-spring-webapp-groups
során mentett értékre.Keresse meg a helyőrzőt
Enter_Your_Admin_Group_ID_Here
, és cserélje le a meglévő értéket aobjectId
Rendszergazda Group értékére.Keresse meg a helyőrzőt
Enter_Your_User_Group_ID_Here
, és cserélje le a meglévő értéket aobjectId
UserGroup értékére.Nyissa meg az src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/SampleController.java fájlt.
Keresse meg a helyőrzőt
Enter_Your_Admin_Group_ID_Here
, és cserélje le a meglévő értéket aobjectId
Rendszergazda Group értékére.Keresse meg a helyőrzőt
Enter_Your_User_Group_ID_Here
, és cserélje le a meglévő értéket aobjectId
UserGroup értékére.
Minta futtatása
Az alábbi szakaszok bemutatják, hogyan helyezheti üzembe a mintát az Azure Spring Appsben.
Előfeltételek
Ha első alkalommal helyez üzembe Azure Spring Apps Enterprise-csomagpéldányt a célelőfizetésben, tekintse meg a Nagyvállalati csomag Követelményei szakaszát az Azure Marketplace-en.
Maven beépülő modul az Azure Spring Appshez. Ha nem a Maven az előnyben részesített fejlesztési eszköz, tekintse meg az alábbi hasonló oktatóanyagokat, amelyek más eszközöket használnak:
A Spring projekt előkészítése
A projekt előkészítéséhez kövesse az alábbi lépéseket:
A projekt létrehozásához használja a következő Maven-parancsot :
mvn clean package
Futtassa helyileg a mintaprojektet az alábbi paranccsal:
mvn spring-boot:run
A Maven beépülő moduljának konfigurálása
Futtassa az alábbi parancsot a projekt gyökerében az alkalmazás Azure Spring Appshez készült Maven beépülő modullal való konfigurálásához:
mvn com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
Az alábbi lista a parancsok interakcióit ismerteti:
- OAuth2-bejelentkezés: Engedélyeznie kell a bejelentkezést az Azure-ba az OAuth2 protokoll alapján.
- Előfizetés kiválasztása: Válassza ki azt az előfizetési listaszámot, ahol létre szeretné hozni az Azure Spring Apps-példányt, amely alapértelmezés szerint a lista első előfizetése. Ha az alapértelmezett számot szeretné használni, nyomja le az Enter billentyűt.
- Adja meg az Azure Spring Apps nevét: Adja meg a létrehozni kívánt Spring Apps-példány nevét. Ha az alapértelmezett nevet szeretné használni, nyomja le az Enter billentyűt.
- Adja meg az erőforráscsoport nevét: Adja meg annak az erőforráscsoportnak a nevét, amelyben létre szeretné hozni a spring apps-példányt. Ha az alapértelmezett nevet szeretné használni, nyomja le az Enter billentyűt.
- Termékváltozat: Válassza ki a spring apps-példányhoz használni kívánt termékváltozatot. Ha az alapértelmezett számot szeretné használni, nyomja le az Enter billentyűt.
- Adja meg az alkalmazás nevét (bemutató): Adjon meg egy alkalmazásnevet. Ha az alapértelmezett projektösszetevő-azonosítót szeretné használni, nyomja le az Enter billentyűt.
- Futtatókörnyezetek: Válassza ki a spring apps-példányhoz használni kívánt futtatókörnyezetet. Ebben az esetben az alapértelmezett számot kell használnia, ezért nyomja le az Enter billentyűt.
- Nyilvános hozzáférés közzététele ehhez az alkalmazáshoz (boot-for-azure): Nyomja le az y billentyűt.
- Ellenőrizze, hogy menti-e a fenti konfigurációkat: Nyomja le az y billentyűt. Ha az n billentyűt lenyomja, a konfiguráció nem lesz mentve a .pom fájlba.
Az alábbi példa az üzembehelyezési folyamat kimenetét mutatja be:
Summary of properties:
Subscription id : 12345678-1234-1234-1234-123456789101
Resource group name : rg-ms-identity-spring-boot-webapp
Azure Spring Apps name : cluster-ms-identity-spring-boot-webapp
Runtime Java version : Java 11
Region : eastus
Sku : Standard
App name : ms-identity-spring-boot-webapp
Public access : true
Instance count/max replicas : 1
CPU count : 1
Memory size(GB) : 2
Confirm to save all the above configurations (Y/n):
[INFO] Configurations are saved to: /home/user/ms-identity-java-spring-tutorial/1-Authentication/sign-in/pom. xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:57 min
[INFO] Finished at: 2024-02-14T13:50:44Z
[INFO] ------------------------------------------------------------------------
Miután megerősítette a választási lehetőségeket, a beépülő modul hozzáadja a szükséges beépülő modulelemet és -beállításokat a projekt pom.xml fájljához, hogy konfigurálja az alkalmazást az Azure Spring Appsben való futtatásra.
A pom.xml fájl releváns részének az alábbi példához hasonlóan kell kinéznie:
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-spring-apps-maven-plugin</artifactId>
<version>1.19.0</version>
<configuration>
<subscriptionId>12345678-1234-1234-1234-123456789101</subscriptionId>
<resourceGroup>rg-ms-identity-spring-boot-webapp</resourceGroup>
<clusterName>cluster-ms-identity-spring-boot-webapp</clusterName>
<region>eastus</region>
<sku>Standard</sku>
<appName>ms-identity-spring-boot-webapp</appName>
<isPublic>true</isPublic>
<deployment>
<cpu>1</cpu>
<memoryInGB>2</memoryInGB>
<instanceCount>1</instanceCount>
<runtimeVersion>Java 11</runtimeVersion>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Az Azure Spring Apps konfigurációit közvetlenül a pom.xml fájlban módosíthatja. Néhány gyakori konfiguráció az alábbi táblázatban található:
Tulajdonság | Kötelező | Leírás |
---|---|---|
subscriptionId |
false | Az előfizetés azonosítója. |
resourceGroup |
true | Az Azure Spring Apps-példány Azure-erőforráscsoportja. |
clusterName |
true | Az Azure Spring Apps-fürt neve. Ha olyan előfizetést és erőforráscsoportot használ, amely már üzembe helyezett Egy Azure Spring Apps-példányt, ezt a meglévő fürtöt is használhatja az üzembe helyezéshez. |
appName |
true | Az alkalmazás neve az Azure Spring Appsben. |
region |
false | Az a régió, amelyben az Azure Spring Apps-példányt üzemeltetni szeretné. Az alapértelmezett érték eastus . Érvényes régiókért lásd: Támogatott régiók. |
sku |
false | Az Azure Spring Apps-példány tarifacsomagja. Az alapértelmezett érték , Basic amely csak fejlesztési és tesztelési környezetekhez használható. |
runtime |
false | A futtatókörnyezet konfigurációja. További információ: Konfiguráció részletei. |
deployment |
false | Az üzembehelyezési konfiguráció. További információ: Konfiguráció részletei. |
A konfigurációk teljes listáját a beépülő modul referenciadokumentációjában találja. Az Összes Azure Maven beépülő modul közös konfigurációkat használ. Ezekről a konfigurációkról a Gyakori konfigurációk című témakörben olvashat. Az Azure Spring Appsre vonatkozó konfigurációkat az Azure Spring Apps: Configuration Details című témakörben találja.
Ügyeljen arra, hogy a későbbi használatra félretehesse az értékeket és appName
az clusterName
értékeket.
Az alkalmazás előkészítése az üzembe helyezéshez
Amikor üzembe helyezi az alkalmazást az Azure Spring Appsben, az átirányítási URL-cím megváltozik az Azure Spring Appsben üzembe helyezett alkalmazáspéldány átirányítási URL-címére. A következő lépésekkel módosíthatja ezeket a beállításokat a application.yml fájlban:
Lépjen az alkalmazás src\main\resources\application.yml fájljára, és módosítsa a telepített alkalmazás tartománynevére az
post-logout-redirect-uri
alábbi példában látható módon. Ha például az előző lépésbenms-identity-spring-boot-webapp
az Azure Spring Apps-példányt és az alkalmazás nevét választottacluster-ms-identity-spring-boot-webapp
, akkor most már használniahttps://cluster-ms-identity-spring-boot-webapp-ms-identity-spring-boot-webapp.azuremicroservices.io
kell azpost-logout-redirect-uri
értéket.post-logout-redirect-uri: https://<cluster-name>-<app-name>.azuremicroservices.io
A fájl mentése után használja az alábbi parancsot az alkalmazás újraépítéséhez:
mvn clean package
Fontos
Az alkalmazás application.yml fájlja jelenleg az ügyfél titkos kódjának értékét tartalmazza a client-secret
paraméterben. Ez az érték nem ajánlott ebben a fájlban tartani. Kockázatot is vállalhat, ha véglegesíti azt egy Git-adattárban.
További biztonsági lépésként tárolhatja ezt az értéket az Azure Key Vaultban, és betöltheti a titkos kulcsot a Key Vaultból, hogy elérhetővé tegye az alkalmazásban.
A Microsoft Entra ID alkalmazásregisztráció frissítése
Mivel az átirányítási URI módosul az Azure Spring Appsben üzembe helyezett alkalmazásra, az átirányítási URI-t is módosítania kell a Microsoft Entra ID-alkalmazásregisztrációjában. A módosítás végrehajtásához kövesse az alábbi lépéseket:
Lépjen a Microsoft Identitásplatform fejlesztőknek Alkalmazásregisztrációk lapra.
A keresőmező használatával keresse meg az alkalmazásregisztrációt – például
java-servlet-webapp-authentication
.Nyissa meg az alkalmazásregisztrációt a nevének kiválasztásával.
Válassza a Hitelesítés lehetőséget a menüben.
A Webes - átirányítási URI-k szakaszban válassza az URI hozzáadása lehetőséget.
Töltse ki az alkalmazás URI-ját, hozzáfűzve
/login/oauth2/code/
példáulhttps://<cluster-name>-<app-name>.azuremicroservices.io/login/oauth2/code/
.Válassza a Mentés lehetőséget.
Az alkalmazás üzembe helyezése
Az alkalmazás üzembe helyezéséhez használja a következő parancsot:
mvn azure-spring-apps:deploy
Az alábbi lista a parancsok közötti interakciót ismerteti:
- OAuth2-bejelentkezés: Engedélyeznie kell a bejelentkezést az Azure-ba az OAuth2 protokoll alapján.
A parancs végrehajtása után a következő naplóüzenetekből láthatja, hogy az üzembe helyezés sikeres volt:
[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:demo-default-x-xxxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:UNREGISTERED
[INFO] InstanceName:demo-default-x-xxxxxxxxx-xxxxx Status:Terminating Reason:null DiscoverStatus:UNREGISTERED
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-demo.azuremicroservices.io
Az alkalmazás ellenőrzése
Az üzembe helyezés befejezése után a kimeneti alkalmazás URL-címével érheti el az alkalmazást. Az alábbi lépésekkel ellenőrizheti az alkalmazás naplóit az üzembehelyezési problémák kivizsgálásához:
A kimeneti alkalmazás URL-címét az Üzembe helyezés szakasz Kimenetek lapján érheti el.
Az Azure Spring Apps-példány áttekintési lapján válassza a Naplók lehetőséget az alkalmazás naplóinak ellenőrzéséhez.
A minta vizsgálata
A minta megismeréséhez kövesse az alábbi lépéseket:
- Figyelje meg a bejelentkezett vagy kijelentkezett állapotot a képernyő közepén.
- Válassza a sarokban található környezetérzékeny gombot. Ez a gomb beolvassa a bejelentkezést az alkalmazás első futtatásakor. Másik lehetőségként válassza ki a jogkivonat részleteit, csak a rendszergazdákat vagy a normál felhasználókat. Mivel ezek a lapok védettek, és hitelesítést igényelnek, a rendszer automatikusan átirányítja a bejelentkezési lapra.
- A következő lapon kövesse az utasításokat, és jelentkezzen be egy fiókkal a Microsoft Entra ID-bérlőben.
- A hozzájárulási képernyőn figyelje meg a kért hatóköröket.
- A bejelentkezési folyamat sikeres befejezése után a rendszer átirányítja a kezdőlapra - amely a bejelentkezési állapotot mutatja - vagy a többi lap egyikére, attól függően, hogy melyik gomb aktiválta a bejelentkezési folyamatot.
- Figyelje meg, hogy a környezetfüggő gomb most kijelentkezik , és megjeleníti a felhasználónevét.
- Ha a kezdőlapon van, válassza az Azonosító jogkivonat részletei lehetőséget az azonosító jogkivonat egyes dekódolt jogcímeinek megtekintéséhez, beleértve a csoportokat is.
- A csak a Rendszergazda lehetőséget választva tekintheti meg a
/admin_only
. Ezt a lapot csak aAdminGroup
biztonsági csoporthoz tartozó felhasználók tekinthetik meg. Ellenkező esetben egy engedélyezési hibaüzenet jelenik meg. - Válassza a Normál felhasználók lehetőséget a
/regular_user
lap megtekintéséhez. Ezt a lapot csak aUserGroup
biztonsági csoporthoz tartozó felhasználók tekinthetik meg. Ellenkező esetben egy engedélyezési hibaüzenet jelenik meg. - A kijelentkezéshez használja a sarokban lévő gombot. Az állapotlap az új állapotot tükrözi.
Tudnivalók a kódról
Ez a minta bemutatja, hogyan használhatja a Java-hoz készült Microsoft Entra ID Spring Boot Starter ügyféloldali kódtárat a felhasználók Microsoft Entra ID-bérlőbe való bejelentkezéséhez. A minta a Spring Oauth2-ügyfél- és Spring Web-rendszerindítókat is használja. A minta a Microsoft Entra-azonosítóból beszerzett azonosító jogkivonatból származó jogcímeket használja a bejelentkezett felhasználó adatainak megjelenítéséhez, valamint egyes lapokhoz való hozzáférés korlátozásához a csoportok engedélykérelménnyel.
Tartalom
Az alábbi táblázat a mintaprojekt mappájának tartalmát mutatja be:
Fájl/mappa | Leírás |
---|---|
AppCreationScripts/ | Szkriptek a Microsoft Entra ID-alkalmazásregisztrációk automatikus konfigurálásához. |
pom.xml | Alkalmazásfüggőségek. |
src/main/resources/templates/ | Thymeleaf Templates for UI. |
src/main/resources/application.yml | Az alkalmazás és a Microsoft Entra ID rendszerindítási kezdőkönyvtárának konfigurációja. |
src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/ | Ez a könyvtár tartalmazza a fő alkalmazásbeléptetési pontot, vezérlőt és konfigurációs osztályokat. |
.../MsIdentitySpringBootWebappApplication.java | Főosztály. |
.../SampleController.java | Vezérlő végpontleképezésekkel. |
.../SecurityConfig.java | Biztonsági konfiguráció – például, hogy mely útvonalak igényelnek hitelesítést. |
.../Utilities.java | Segédprogramosztály – például szűrőazonosító-jogkivonat jogcímek. |
CHANGELOG.md | A minta módosításainak listája. |
CONTRIBUTING.md | Útmutató a mintához való hozzájáruláshoz. |
LICEN Standard kiadás | A minta licence. |
Azonosító jogkivonat jogcíme
A jogkivonat részleteinek kinyeréséhez az alkalmazás a Spring Security AuthenticationPrincipal
és OidcUser
az objektum használatát használja egy kérésleképezésben, ahogyan az az alábbi példában is látható. Az alkalmazás azonosítójogkivonat-jogcímek használatának részletes részleteiért tekintse meg a mintavezérlőt.
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
//...
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
Map<String, Object> claims = principal.getIdToken().getClaims();
}
Csoportok jogcímének feldolgozása az azonosító jogkivonatában
A jogkivonat csoportkövetkeztetése tartalmazza azoknak a csoportoknak a nevét, amelyekhez a bejelentkezett felhasználó hozzá van rendelve, az alábbi példában látható módon:
{
...
"groups": [
"xyz-id-xyz",
"xyz-id-xyz",]
...
}
A csoportnevek elérésének gyakori módja az azonosítójogkivonat jogcímek szakaszában található.
A Microsoft Entra ID Boot Starter 3.5-ös és újabb verziója automatikusan elemzi a csoportok jogcímét Authorities
, és hozzáadja az egyes csoportokat a bejelentkezett felhasználóhoz. Ez a konfiguráció lehetővé teszi a fejlesztők számára, hogy spring PrePost
condition széljegyzetekkel rendelkező csoportokat használjanak a hasAuthority
módszerrel. A SampleController.java például a következő @PreAuthorize
feltételeket találja:
@GetMapping(path = "/admin_only")
@PreAuthorize("hasAuthority('enter-admin-group-id-here')")
public String adminOnly(Model model) {
// restrict to users who belong to AdminGroup
}
@GetMapping(path = "/regular_user")
@PreAuthorize("hasAnyAuthority('enter-user-group-id-here','enter-admin-group-id-here')")
public String regularUser(Model model) {
// restrict to users who belong to any of UserGroup or AdminGroup
}
Az alábbi kód lekéri egy adott felhasználó hatóságainak teljes listáját:
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
Collection<? extends GrantedAuthority> authorities = principal.getAuthorities();
}
Bejelentkezési és bejelentkezési hivatkozások
A bejelentkezéshez az alkalmazás kérést küld az Azure Active Directory bejelentkezési végpontra, amelyet a Java-hoz készült Microsoft Entra ID Spring Boot Starter ügyfélkódtár automatikusan konfigurál, ahogyan az alábbi példában látható:
<a class="btn btn-success" href="/oauth2/authorization/azure">Sign In</a>
Kijelentkezés esetén az alkalmazás POST kérést küld a logout
végpontra, ahogyan az a következő példában is látható:
<form action="#" th:action="@{/logout}" method="post">
<input class="btn btn-warning" type="submit" value="Sign Out" />
</form>
Hitelesítéstől függő felhasználói felületi elemek
Az alkalmazás néhány egyszerű logikával rendelkezik a felhasználói felület sablonlapjain a megjelenítendő tartalom meghatározásához annak alapján, hogy a felhasználó hitelesítése megtörtént-e, ahogy az alábbi példában is látható, a Spring Security Thymeleaf-címkékkel:
<div sec:authorize="isAuthenticated()">
this content only shows to authenticated users
</div>
<div sec:authorize="isAnonymous()">
this content only shows to not-authenticated users
</div>
Útvonalak védelme az AADWebSecurityConfigurerAdapterrel
Alapértelmezés szerint az alkalmazás védi az azonosító jogkivonatának adatait, a Rendszergazda csak a normál felhasználók lapjait, hogy csak a bejelentkezett felhasználók férhessenek hozzá. Az alkalmazás ezeket az útvonalakat a app.protect.authenticated
application.yml fájl tulajdonságával konfigurálja. Az alkalmazás konkrét követelményeinek konfigurálásához kiterjesztheti AADWebSecurityConfigurationAdapter
az egyik osztályát. Például tekintse meg az alkalmazás SecurityConfig osztályát, amely az alábbi kódban látható:
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends AADWebSecurityConfigurerAdapter{
@Value( "${app.protect.authenticated}" )
private String[] protectedRoutes;
@Override
public void configure(HttpSecurity http) throws Exception {
// use required configuration form AADWebSecurityAdapter.configure:
super.configure(http);
// add custom configuration:
http.authorizeRequests()
.antMatchers(protectedRoutes).authenticated() // limit these pages to authenticated users (default: /token_details, /admin_only, /regular_user)
.antMatchers("/**").permitAll(); // allow all other routes.
}
}
A csoportok túlhasználati jogcíme
Annak érdekében, hogy a jogkivonat mérete ne haladja meg a HTTP-fejléc méretkorlátjait, a Microsoft Identitásplatform korlátozza a csoportok jogcímében szereplő objektumazonosítók számát.
A túllépési korlát SAML-jogkivonatok esetén 150, JWT-jogkivonatok esetén 200, egyoldalas alkalmazások esetén 6. Ha egy felhasználó a túlhasználati korlátnál több csoport tagja, akkor a Microsoft Identitásplatform nem bocsátja ki a csoportazonosítókat a jogkivonatban szereplő csoportok jogcímében. Ehelyett tartalmaz egy túlhasználati jogcímet a jogkivonatban, amely azt jelzi az alkalmazásnak, hogy lekérdezi a Microsoft Graph API-t a felhasználó csoporttagságának lekéréséhez.
A Microsoft Entra ID Boot Starter 3.5-ös és újabb verziója automatikusan elemzi a csoportok jogcímét Authorities
, és hozzáadja az egyes csoportokat a bejelentkezett felhasználóhoz. A kezdő automatikusan kezeli a csoportok túlhasználati forgatókönyvét.
Feljegyzés
Javasoljuk, hogy ha lehetséges, használja a csoportszűrési funkciót, hogy elkerülje a túlhasználatot. További információ: Az alkalmazás konfigurálása a csoportok jogcímértékeinek fogadásához olyan szűrt csoportokból, amelyhez a felhasználó hozzárendelhető.
A túlhasználati forgatókönyv létrehozása teszteléshez
Az AppCreationScripts mappában található BulkCreateGroups.ps1 fájllal számos csoportot hozhat létre, és felhasználókat rendelhet hozzájuk. Ez a fájl segít a túlhasználati forgatókönyvek tesztelésében a fejlesztés során. Ne felejtse el módosítani a BulkCreateGroups.ps1 szkriptben megadott felhasználótobjectId
.
A túlhasználat kezeléséhez fel kell hívni a Microsoft Graphot a bejelentkezett felhasználó csoporttagságainak olvasásához, ezért az alkalmazásnak rendelkeznie kell a User.Read és a GroupMember.Read.Read.All engedélyekkel a getMemberGroups függvény sikeres végrehajtásához.
Fontos
A túlhasználati forgatókönyv esetében győződjön meg arról, hogy megadta Admin Consent
a Microsoft Graph API hatókörét GroupMember.Read.All
az ügyfél- és szolgáltatásalkalmazások számára is. További információkért tekintse meg a cikk korábbi, alkalmazásregisztrációs lépéseit.
A Microsoft Entra ID alkalmazásregisztrációjának frissítése (java-spring-webapp-groups)
Az alkalmazásregisztráció frissítéséhez kövesse az alábbi lépéseket:
Lépjen vissza az Azure Portalra.
A navigációs panelen válassza az Azure Active Directoryt, majd válassza a Alkalmazásregisztrációk (előzetes verzió) lehetőséget.
Az eredményként kapott képernyőn válassza ki az
java-spring-webapp-groups
alkalmazást.Az alkalmazás regisztrációs oldalán válassza a Hitelesítés lehetőséget a menüben.
Az Átirányítási URI-k szakaszban frissítse a válasz URL-címeket, hogy megfeleljenek az Azure-üzemelő példány hely URL-címének – például
https://java-spring-webapp-groups.azurewebsites.net/login/oauth2/code/
.
Fontos
Ha az alkalmazás memórián belüli tárterületet használ, a Azure-alkalmazás Services lepörgeti a webhelyet, ha inaktív, és az alkalmazás által tárolt rekordok kiürítve lesznek. Emellett, ha növeli a webhely példányszámát, a kérelmek el lesznek osztva a példányok között. Így az alkalmazásrekordok nem azonosak az egyes példányokon.
További információ
- Microsoft Identitásplatform (Azure Active Directory fejlesztőknek)
- A Microsoft Authentication Library (MSAL) áttekintése
- Gyorsútmutató: Alkalmazás regisztrálása a Microsoft Identitásplatformon
- Rövid útmutató: Ügyfélalkalmazás konfigurálása webes API-k eléréséhez
- A Microsoft Entra ID-alkalmazás hozzájárulási élményének ismertetése
- Felhasználói és rendszergazdai hozzájárulás ismertetése
- Alkalmazás- és szolgáltatásnév-objektumok az Azure Active Directoryban
- Nemzeti felhők
- MSAL-kódminták
További információ az OAuth 2.0 protokollok működéséről ebben a forgatókönyvben és más forgatókönyvekben: Hitelesítési forgatókönyvek a Microsoft Entra ID-hoz.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: