Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, Spring Boot uygulamasında Microsoft Entra ID ile REST API korumasını etkinleştirme işlemi gösterilmektedir.
Bu makalede örnek olarak bir anket sistemi kullanılır. Anket sistemi aşağıdaki REST API'leri sağlar:
-
GET /api/survey/questionanketi görüntülemek içindir. -
POST /api/surveyanketi doldurmak içindir. -
GET /api/surveyanket sonucunu görüntülemek içindir.
Bu makalede, aşağıdaki gereksinimleri zorunlu kılmak için rol tabanlı erişim denetimi (RBAC) uygulayarak bu API'leri korursunuz:
-
GET /api/survey/questionher istek için kullanılabilir. -
POST /api/surveyverilen kapsama sahipSCOPE_Survey.Userbir erişim belirteci içeren kimliği doğrulanmış kullanıcı istekleri için kullanılabilir. -
GET /api/surveykimliği doğrulanmış yönetici kullanıcı istekleri için,SCOPE_Survey.Adminkapsamı tanınmış bir erişim belirteci içerirse kullanılabilir.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik .
- Java Geliştirme Seti (JDK) sürüm 8 veya üzeri.
- Apache Maven
- Azure CLI
- Microsoft Entra örneği. Oluşturma yönergeleri için bkz. Quickstart: Microsoft Entra ID'da yeni kiracı oluşturma.
- Spring Boot uygulaması. Eğer bir tane yoksa, Spring Initializr ile bir Maven projesi oluşturun. Maven Project ve Dependencies, Spring Web, OAuth2 Resource Server ve Microsoft Entra ID bağımlılıklarını ekleyin ve ardından Java sürüm 8 veya üzerini seçin.
Önemli
Bu makaledeki adımları tamamlamak için Spring Boot sürüm 2.5 veya üzeri gereklidir.
REST API'yi kaydetme
Web API'nizi Azure portalına kaydetmek için aşağıdaki adımları kullanın.
Azure portalında oturum açın.
Birden çok kiracıya erişiminiz varsa, bir uygulamayı kaydetmek istediğiniz kiracıyı seçmek için Dizin + abonelik
filtresini ( ) kullanın.Microsoft Entra ID bulun ve seçin.
Manage altında Uygulama kayıtları>Yeni kayıt öğesini seçin.
Ad alanına uygulamanız Uygulamanızın kullanıcıları bu adı görebilir ve daha sonra değiştirebilirsiniz.
Desteklenen hesap türleri içinherhangi bir kuruluş dizinindeki Hesaplar'ı seçin.
Uygulamayı kaydetmek için Kaydet'i seçin.
Uygulamaya Genel Bakış sayfasında Uygulama (istemci) kimliği değerini bulun ve daha sonra kullanmak üzere kaydedin. Bu proje için YAML yapılandırma dosyasını yapılandırmak için bu dosyaya ihtiyacınız vardır.
Yönet'ialtında Api'yi kullanıma sunma>Kapsam ekleöğesini seçin.
api://{clientId}devam et'i seçerek önerilen Uygulama Kimliği URI'sini () kabul edin ve ardından aşağıdaki bilgileri girin:-
Kapsam adı olarak
Survey.Usergirin. - Kim onaylayabilir? içinYöneticiler ve kullanıcılar'ı seçin.
-
Yönetici onayı görünen adı için girin
Access the survey service as a user.. -
Yönetici onayı açıklamasını girin
Allows the users to write data in survey system.. -
Kullanıcı onayı görünen adı için girin
Access the survey service as a user.. -
Kullanıcı onayı açıklaması için girin
Allows the users to write data in survey system.. - Durum için Etkin'i tutun.
- Kapsam ekle'yi seçin.
-
Kapsam adı olarak
Başka bir kapsam eklemek için önceki adımı yineleyin. Kapsam ekle'yi seçtiğinizde aşağıdaki bilgileri girin:
-
Kapsam adı olarak
Survey.Admingirin. - Kim onaylayabilir? içinYöneticiler ve kullanıcılar'ı seçin.
-
Yönetici onayı görünen adı için girin
Access the survey service as a admin.. -
Yönetici onayı açıklamasını girin
Allows the users to view data in survey system.. -
Kullanıcı onayı görünen adı için girin
Access the survey service as a admin.. -
Kullanıcı onayı açıklaması için girin
Allows the users to view data in survey system.. - Durum için Etkin'i tutun.
- Kapsam ekle'yi seçin.
-
Kapsam adı olarak
Spring Cloud Azure Starter Microsoft Entra ID etkinleştirme
Ardından Spring Cloud Azure ile REST API korumasını etkinleştirin.
Güvenlik bağımlılıkları ekleme
Spring Cloud Azure Starter Azure Active Directory modülünü yüklemek için pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:
Spring Cloud Azure Ürün Reçetesi( BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.3.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Uyarı
Spring Boot 4.0.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü7.3.0olarak ayarladığınızdan emin olun.Spring Boot 3.5.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü6.4.0olarak ayarladığınızdan emin olun.Spring Boot 3.1.x-3.5.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü5.25.0olarak ayarladığınızdan emin olun.Eğer Spring Boot 2.x kullanıyorsanız,
spring-cloud-azure-dependenciessürümünü4.20.0olarak ayarladığınızdan emin olun.Bu Parça Listesi (BOM),
<dependencyManagement>bölümünde pom.xml dosyanızda yapılandırılmalıdır. Bu, tüm Spring Cloud Azure bağımlılıklarının aynı sürümü kullanmasını sağlar.Bu ürün reçetesi için kullanılan sürüm hakkında daha fazla bilgi için bkz: Hangi Spring Cloud Azure Sürümünü Kullanmalıyım.
Spring Cloud Azure Starter Microsoft Entra bileşeni:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-active-directory</artifactId> </dependency>Spring Boot Starter OAuth2 Kaynak Sunucusu eki:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-resource-server</artifactId> </dependency>
HTTP isteklerini yetkilendirme
Anket REST API'lerini korumak için aşağıdaki örnekte gösterildiği gibi korumayı etkinleştirmek için ek açıklamayı @PreAuthorize("hasAuthority('SCOPE_Survey.xxx')") somut bir kapsam adıyla ekleyin:
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;
}
}
YAML yapılandırmasını aşağıdaki örnekte gösterildiği gibi güncelleştirin:
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>
Uyarı
v1.0 belirteçlerinde yapılandırma api'nin istemci kimliğini gerektirirken v2.0 belirteçlerinde istekte istemci kimliğini veya uygulama kimliği URI'sini kullanabilirsiniz. her ikisini de izleyici doğrulamasını düzgün bir şekilde tamamlayacak şekilde yapılandırabilirsiniz.
Azure Spring Apps'e dağıtım yapma
Spring Boot uygulamasını yerel olarak çalıştırdıktan sonra üretime taşıyabilirsiniz. Azure Spring Apps Spring Boot uygulamalarını kod değişikliği olmadan Azure dağıtmayı kolaylaştırır. Hizmet, geliştiricilerin kodlarına odaklanabilmesi için Spring uygulamalarının altyapısını yönetir. Azure Spring Apps kapsamlı izleme ve tanılama, yapılandırma yönetimi, hizmet bulma, CI/CD tümleştirmesi, mavi-yeşil dağıtımlar ve daha fazlasını kullanarak yaşam döngüsü yönetimi sağlar. Daha fazla bilgi için bkz. Quickstart: İlk uygulamanızı Azure Spring Apps'a dağıtma.
Sonraki adımlar
Spring geliştiricileri için AzureSpring Cloud Microsoft Entra ID Örnekleri