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 a cikk bemutatja, hogyan hozhat létre bejelentkezési képességgel rendelkező Java-alkalmazást Spring Initializr a Microsoft Entra-azonosítóhoz készült Spring Boot Starter használatával.
Ebben az oktatóanyagban a következőket sajátíthatja el:
- Java-alkalmazás létrehozása a Spring Initializr használatával
- Az Azure Active Directory B2C konfigurálása
- Az alkalmazás védelme Spring Boot-osztályokkal és széljegyzetekkel
- Java-alkalmazás létrehozása és tesztelése
Microsoft Entra ID a Microsoft felhőalapú vállalati identitáskezelési megoldása. Azure Active Directory B2C kiegészíti a Microsoft Entra-azonosító funkciókészletét, amely lehetővé teszi az ügyfelek, a fogyasztók és a polgárok hozzáférésének kezelését a vállalatközi (B2C) alkalmazásokhoz.
Előfeltételek
- Egy Azure-előfizetés. Ha még nem rendelkezik ilyen fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot.
- Egy támogatott Java Development Kit (JDK). Az Azure-beli fejlesztés során használható JDK-kkal kapcsolatos további információkért lásd Java-támogatást az Azure-ban és az Azure Stack.
- Apache Maven3.0-s vagy újabb verziója.
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.
Alkalmazás létrehozása a Spring Initializr használatával
Ugrás a https://start.spring.io/-hoz.
Töltse ki az értékeket az útmutatónak megfelelően. A címkék és az elrendezés eltérhet az itt láthatótól.
- A Projectterületen válassza Maven Projectlehetőséget.
- A Nyelvalatt válassza a Javalehetőséget.
- A Spring Bootalatt válassza a 2.7.11lehetőséget.
- A csoport, a összetevő és a név mezőbe is írja be ugyanazt az értéket egy rövid leíró szöveggel. Előfordulhat, hogy a felhasználói felület gépelés közben automatikusan kitölt néhány mezőt.
- A Függőségek panelen válassza a Függőségek hozzáadásalehetőséget. A felhasználói felületen adjon hozzá függőségeket: Spring Web és Spring Security.
Jegyzet
A Spring Security 5.5.1, 5.4.7, 5.3.10 és 5.2.11 verziókat kiadták a következő CVE-jelentés kezelése érdekében: CVE-2021-22119: Szolgáltatásmegtagadásos támadás a spring-security-oauth2-client használatával. Ha a régebbi verziót használja, frissítse azt.
Válassza Projekt létrehozásalehetőséget, majd töltse le a projektet a helyi számítógépen található elérési útra. Helyezze át a letöltött fájlt a projektről elnevezett könyvtárba, és bontsa ki a fájlt. A fájlelrendezésnek az alábbihoz hasonlóan kell kinéznie, az Ön által megadott csoport értéke pedig
yourProjecthelyére kerül.. ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main │ ├── java │ │ └── yourProject │ │ └── yourProject │ │ └── YourProjectApplication.java │ └── resources │ ├── application.properties │ ├── static │ └── templates └── test └── java └── yourProject └── yourProject └── YourProjectApplicationTests.java
Microsoft Entra-példány létrehozása és inicializálása
Az Active Directory-példány létrehozása
Jelentkezzen be https://portal.azure.com.
Válassza az Erőforrás létrehozásalehetőséget. Keressen Azure Active Directory B2C.
Válassza létrehozása lehetőséget.
Válassza Új Azure AD B2C-bérlő létrehozásalehetőséget.
Szervezetnév és Kezdeti tartománynévesetén adja meg a megfelelő értékeket, majd válassza a létrehozása lehetőséget.
Amikor az Active Directory létrehozása befejeződött, válassza ki a fiókját a jobb felső sarokban, válassza a Könyvtárváltáslehetőséget, majd válassza ki a létrehozott könyvtárat. A rendszer átirányítja az új bérlő kezdőlapjára. Ezután keressen
b2c, és válassza Azure AD B2C.
Alkalmazásregisztráció hozzáadása a Spring Boot-alkalmazáshoz
A kezelése panelen válassza az Alkalmazásregisztrációklehetőséget, majd válassza Új regisztrációslehetőséget.
A Név mezőben adja meg az alkalmazás nevét, majd válassza a Regisztráláslehetőséget.
A Kezelés panelen válassza Alkalmazásregisztrációklehetőséget, majd válassza ki a létrehozott alkalmazásnevet.
Válassza a Hitelesítéslehetőséget, majd a Platform hozzáadása és végül a Weblehetőséget. Állítsa a Átirányítási URI-k
http://localhost:8080/login/oauth2/code/értékre, majd válassza a konfigurálása lehetőséget.
Alkalmazás titkos kulcsainak hozzáadása az alkalmazáshoz
Válassza tanúsítványok & titkos kulcsok, majd Új titkos ügyfélkódok. Adja meg a titkos kód leírását, majd válassza a hozzáadása lehetőséget. A titkos kód létrehozása után válassza a titkos kulcs melletti másolás ikont a cikk későbbi részében használandó érték másolásához.
Jegyzet
Ha elhagyja a tanúsítványok & titkos kulcsok szakaszt, és visszatér, nem fogja látni a titkos értéket. Ebben az esetben létre kell hoznia egy másik titkos kulcsot, és ki kell másolnia későbbi használatra.
Előfordulhat, hogy a létrehozott titkos érték olyan karaktereket tartalmaz, amelyek problémát okozhatnak a application.yml fájlba való beillesztéskor, például fordított perjel vagy fordított aposztróf. Ebben az esetben dobja el ezt a titkos kulcsot, és hozzon létre egy másikat.
Felhasználói folyamat hozzáadása
Lépjen a bérlő főoldalára. A bal oldali panel Házirendek szakaszában válassza a Felhasználói folyamatoklehetőséget, majd válassza Új felhasználói folyamatlehetőséget.
Most elhagyja ezt az oktatóanyagot, végrehajt egy másik oktatóanyagot, és visszatér ehhez az oktatóanyaghoz, amikor elkészült. Íme néhány dolog, amit szem előtt kell tartani, amikor a másik oktatóanyagra mész.
- Kezdje azzal a lépéssel, amely Új felhasználói folyamatkiválasztását kéri.
- Amikor ez az oktatóanyag
webapp1-ra hivatkozik, használja inkább a csoport megadott értékét. - Amikor a folyamatokból való visszatérésre vonatkozó jogcímeket választja ki, győződjön meg arról, hogy Megjelenítendő név van kiválasztva. E jogcím nélkül az oktatóanyagban létrehozott alkalmazás nem fog működni.
- Amikor a rendszer felkéri a felhasználói folyamatok futtatására, a korábban megadott átirányítási URL még nem aktív. Továbbra is futtathatja a folyamatokat, de az átirányítás nem fejeződik be sikeresen. Ez várható.
- A "Következő lépések" elérésekor térjen vissza ehhez az oktatóanyaghoz.
Kövesse oktatóanyag összes lépését: Felhasználói folyamatok létrehozása az Azure Active Directory B2C-ben felhasználói folyamatok létrehozásához a "regisztráció és bejelentkezés", a "profilszerkesztés" és a "jelszó-visszaállítás" érdekében.
Az Azure AD B2C támogatja a helyi fiókokat és a közösségi identitásszolgáltatókat. GitHub-identitásszolgáltató létrehozására példa: Regisztráció és bejelentkezés beállítása GitHub-fiókkal az Azure Active Directory B2Chasználatával.
Az alkalmazás konfigurálása és fordítása
Most, hogy létrehozta az Azure AD B2C-példányt és néhány felhasználói folyamatot, csatlakoztatni fogja a Spring-alkalmazást az Azure AD B2C-példányhoz.
A parancssorból cd-n lépjen a könyvtárba, ahol kibontotta a Spring Initializrből letöltött .zip fájlt.
Lépjen a projekt szülőmappájába, és nyissa meg a pom.xml Maven-projektfájlt egy szövegszerkesztőben.
Adja hozzá a Spring OAuth2 biztonság függőségeit a pom.xml:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-active-directory-b2c</artifactId> <version>See Below</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>See Below</version> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> <version>See Below</version> </dependency>A(z)
spring-cloud-azure-starter-active-directory-b2c-hoz, használja a legújabb elérhető verziót. Lehetséges, hogy a mvnrepository.com használatával is megkeresheti ezt.A(z)
spring-boot-starter-thymeleafesetében használja a fent kiválasztott Spring Boot verziójának megfelelő verziót, például2.3.4.RELEASE.A
thymeleaf-extras-springsecurity5esetén használd a legújabb elérhető verziót. Lehetséges, hogy a mvnrepository.com használatával is megkeresheti ezt. A jelen írás idején a legújabb verzió a3.0.4.RELEASE.Mentse és zárja be a pom.xml fájlt.
- A
mvn -DskipTests clean installfuttatásával ellenőrizze, hogy a függőségek helyesek-e. Ha nem látjaBUILD SUCCESS, a folytatás előtt oldja meg és hárítsa el a problémát.
- A
Lépjen a projekt src/main/resources mappájára, és hozzon létre egy application.yml fájlt egy szövegszerkesztőben.
Adja meg az alkalmazásregisztráció beállításait a korábban létrehozott értékekkel; például:
spring: cloud: azure: active-directory: b2c: enabled: true base-uri: https://<your-tenant-initial-domain-name>.b2clogin.com/<your-tenant-initial-domain-name>.onmicrosoft.com/ credential: client-id: <your-application-ID> client-secret: '<secret-value>' login-flow: sign-up-or-sign-in logout-success-url: <your-logout-success-URL> user-flows: sign-up-or-sign-in: <your-sign-up-or-sign-in-user-flow-name> profile-edit: <your-profile-edit-user-flow-name> password-reset: <your-password-reset-user-flow-name> user-name-attribute-name: <your-user-name-attribute-name>Figyelje meg, hogy a
client-secretérték egyetlen idézőjelben van megadva. Erre azért van szükség, mert a<secret-value>értéke szinte biztosan tartalmaz néhány karaktert, amelyeknél a YAML-ben való megjelenítéshez egyetlen idézőjelre van szükség.Jegyzet
Az írástól kezdődően az Active Directory B2C Spring Integration-értékek teljes listája, amelyek application.yml használhatók, a következők:
spring: cloud: azure: active-directory: b2c: enabled: true base-uri: credential: client-id: client-secret: login-flow: logout-success-url: user-flows: sign-up-or-sign-in: profile-edit: # optional password-reset: # optional user-name-attribute-name:A application.yml fájl a GitHubon a spring-cloud-azure-starter-active-directory-b2c mintában érhető el: aad-b2c-web-application.
Mentse és zárja be a application.yml fájlt.
Hozzon létre egy vezérlő nevű mappát asrc/main/java/<yourGroupId>/<yourGroupId>könyvtárban, és cserélje le a
<yourGroupId>-at a Csoportmegadott értékére.Hozzon létre egy WebController.java nevű új Java-fájlt a vezérlőben mappában, és nyissa meg egy szövegszerkesztőben.
Írja be a következő kódot, módosítsa a
yourGroupIdmegfelelően, majd mentse és zárja be a fájlt:package yourGroupId.yourGroupId.controller; import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class WebController { private void initializeModel(Model model, OAuth2AuthenticationToken token) { if (token != null) { final OAuth2User user = token.getPrincipal(); model.addAttribute("grant_type", user.getAuthorities()); model.addAllAttributes(user.getAttributes()); } } @GetMapping(value = "/") public String index(Model model, OAuth2AuthenticationToken token) { initializeModel(model, token); return "home"; } @GetMapping(value = "/greeting") public String greeting(Model model, OAuth2AuthenticationToken token) { initializeModel(model, token); return "greeting"; } @GetMapping(value = "/home") public String home(Model model, OAuth2AuthenticationToken token) { initializeModel(model, token); return "home"; } }Mivel a vezérlő minden metódusa meghívja
initializeModel(), és ez a metódus meghívjamodel.addAllAttributes(user.getAttributes());, a src/main/resources/templates bármely HTML-lapja, hozzáférhet ezen attribútumok bármelyikéhez, például${name},${grant_type}vagy${auth_time}. Auser.getAttributes()visszaadott értékek valójában a hitelesítésid_tokenigényei. Az elérhető jogcímek teljes listája Microsoft identitásplatform-azonosító jogkivonataiban.Hozzon létre egy biztonság nevű mappát a src/main/java/ mappában a<yourGroupId>/<yourGroupId>útvonalon, helyettesítve a
yourGroupIdhelyértékét a Csoportszámára megadott értékkel.Hozzon létre egy WebSecurityConfiguration.java nevű új Java-fájlt a biztonsági mappában, és nyissa meg egy szövegszerkesztőben.
Írja be a következő kódot, módosítsa a
yourGroupIdmegfelelően, majd mentse és zárja be a fájlt:package yourGroupId.yourGroupId.security; import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cOidcLoginConfigurer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @EnableWebSecurity public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { private final AadB2cOidcLoginConfigurer configurer; public WebSecurityConfiguration(AadB2cOidcLoginConfigurer configurer) { this.configurer = configurer; } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest() .authenticated() .and() .apply(configurer) ; } }Másolja a home.html fájlt spring-cloud-azure-starter-active-directory-b2c mintából: aad-b2c-web-applicationsrc/main/resources/templates, és cserélje le a
${your-profile-edit-user-flow}és${your-password-reset-user-flow}a korábban létrehozott felhasználói folyamatok nevére.
Az alkalmazás létrehozása és tesztelése
Nyisson meg egy parancssort, és módosítsa a könyvtárat arra a mappára, amelyben az alkalmazás pom.xml fájlja található.
Hozza létre Spring Boot-alkalmazását a Mavennel, és futtassa; például:
Jegyzet
Rendkívül fontos, hogy a rendszerórának megfelelő idő, amely alatt a helyi spring boot alkalmazás fut, pontos legyen. Az OAuth 2.0 használatakor az óraeltérés nagyon kis tűréshatárt jelent. Akár három percnyi időbeli pontatlanság is okozhatja, hogy a bejelentkezés egy a
[invalid_id_token] An error occurred while attempting to decode the Jwt: Jwt used before 2020-05-19T18:52:10Zhibához hasonló hibával sikertelen lehet. Jelen pillanatban a time.gov oldalon van egy jelző arról, hogy az órád mennyire tér el a tényleges időtől. Az alkalmazás sikeresen lefutott +0,019 másodperces eltéréssel.mvn -DskipTests clean package mvn -DskipTests spring-boot:runMiután a Maven elkészítette és elindította az alkalmazást, nyissa meg a
http://localhost:8080/egy webböngészőben; a bejelentkezési oldalra kell átirányítani.
Válassza ki a bejelentkezéshez kapcsolódó szöveget tartalmazó hivatkozást. A hitelesítési folyamat elindításához átirányítani kell az Azure AD B2C-t.
Miután sikeresen bejelentkezett, látnia kell a böngészőben megjelenő minta
home page-t.
Hibaelhárítás
A következő szakaszok ismertetik, hogyan oldhatók meg az esetlegesen felmerülő problémák.
Hiányzó attribútumnév az attribútumokban
A minta futtatása közben kivétel fordulhat elő a Missing attribute 'name' in attributesüzenettel. A kivétel naplója a következő kimenethez hasonlóan fog kinézni:
java.lang.IllegalArgumentException: Missing attribute 'name' in attributes
at org.springframework.security.oauth2.core.user.DefaultOAuth2User.<init>(DefaultOAuth2User.java:67) ~[spring-security-oauth2-core-5.3.6.RELEASE.jar:5.3.6.RELEASE]
at org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser.<init>(DefaultOidcUser.java:89) ~[spring-security-oauth2-core-5.3.6.RELEASE.jar:5.3.6.RELEASE]
at org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService.loadUser(OidcUserService.java:144) ~[spring-security-oauth2-client-5.3.6.RELEASE.jar:5.3.6.RELEASE]
at org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService.loadUser(OidcUserService.java:63) ~[spring-security-oauth2-client-5.3.6.RELEASE.jar:5.3.6.RELEASE]
Ha ezt a hibát kapja, ellenőrizze duplán a oktatóanyagban létrehozott felhasználói munkafolyamatot: Felhasználói folyamatok létrehozása az Azure Active Directory B2C. A felhasználói munkafolyamat létrehozásakor a Felhasználói attribútumok és jogcímekesetében mindenképpen válassza ki a megfelelő attribútumokat és jogcímeket a Megjelenítendő névhez. Emellett ügyeljen arra, hogy megfelelően konfigurálja a user-name-attribute-name a application.yml fájlban.
Bejelentkezés hurkokkal a B2C-végpontra
Ez a probléma valószínűleg a localhostkörnyezetszennyezett cookie-jának köszönhető. Törölje a localhost cookie-kat, és próbálkozzon újra.
Összefoglalás
Ebben az oktatóanyagban létrehozott egy új Java-webalkalmazást az Azure Active Directory B2C starter használatával, konfigurált egy új Azure AD B2C-bérlőt, és regisztrált benne egy új alkalmazást, majd úgy konfigurálta az alkalmazást, hogy a Spring-széljegyzetek és -osztályok használatával védje a webalkalmazást.
Erőforrások törlése
Ha már nincs rá szükség, a Azure Portal használatával törölheti a cikkben létrehozott erőforrásokat a váratlan költségek elkerülése érdekében.
Következő lépések
Ha többet szeretne megtudni a Springről és az Azure-ról, lépjen tovább a Spring on Azure dokumentációs központjába.