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.
Bir bakışta
Hedef: Entra auth ile CRUD API simülasyonu
Süre: 20 dakika
Eklentiler:CrudApiPlugin
Önkoşullar:Geliştirme Ara Sunucusunu Ayarlama
Uygulama oluştururken genellikle arka uç API'leriyle etkileşim kurarsınız. Bazen bu API'ler henüz kullanılamamaktadır veya diğer ekipler bunları en son gereksinimleri karşılayacak şekilde güncelleştirmektedir. Beklemekten kaçınmak için genellikle ihtiyacınız olan verileri döndüren bir sahte API oluşturursunuz. Bu yaklaşım engellemenizi kaldırsa da, sonunda yerine gerçek api'yi koyabileceğiniz bir API oluşturmak için zaman harcamanız gerekir. Microsoft Entra ile API'nizin güvenliğini sağlamanız gerektiğinde daha da karmaşık hale gelir. Zaman kaybetmemek için, CRUD API'si simülasyonu yapmak ve geliştirmeyi hızlandırmak için Dev Proxy kullanabilirsiniz.
CrudApiPluginkullanarak, bellek içi veri deposuyla CRUD (Oluşturma, Okuma, Güncelleştirme, Silme) API'sinin benzetimini yapabilirsiniz. Basit bir yapılandırma dosyası kullanarak sahte API'nizin hangi URL'leri desteklediğini ve hangi verileri döndürdüğü tanımlayabilirsiniz. Eklenti, istemci tarafı uygulamalardan etki alanları arası kullanım için CORS'yi de destekler. Eklenti ayrıca Microsoft Entra kimlik doğrulamasını da desteklediğinden sahte API'nizin güvenliğini Microsoft Entra ile sağlayabilir ve uygulamanız için üretim ortamınızdaki kimlik doğrulama akışını uygulayabilirsiniz.
Senaryo
Örneğin, kullanıcıların müşterileri yönetmesine olanak tanıyan bir uygulama oluşturuyorsunuz. Verileri almak için arka uç API'sinin /customers uç noktasını çağırmanız gerekir. API' nin güvenliği Microsoft Entra ile sağlanır. Arka uç ekibinin çalışmalarını bitirmesini beklememek için API'nin benzetimini yapmak ve ihtiyacınız olan verileri döndürmek için Dev Proxy kullanmaya karar verirsiniz.
Başlamadan önce
Müşteri verileriyle sanal crud API'si oluşturarak işe başlarsınız. API'nin çalıştığını onayladıktan sonra Microsoft Entra ile güvenliğini sağlayabilirsiniz.
Örnek 1: Tek bir kapsam kullanarak Microsoft Entra ile güvenliği sağlanan bir CRUD API'sini simüle edin
İlk örnekte, api'nin tamamının güvenliğini tek bir kapsamla sağlarsınız. Kullanıcıların müşteriler hakkında bilgi alması veya güncelleştirmesi gerekip gerekmediğinin önemi yoktur, aynı izni kullanırlar.
customers-api.json dosyasına Entra hakkında bilgi ekleyin.
Dosya:customers-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"]
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
auth özelliğini entra olarak ayarlayarak API'nin Microsoft Entra ile güvenceye alındığını belirtirsiniz. özelliğinde entraAuthConfig yapılandırma ayrıntılarını belirtirsiniz.
audience özelliği API'nin hedef kitlesini, issuer özelliği belirteçlerin verenini ve scopes özelliği de API'ye erişmek için gereken kapsamları belirtir. API dosyasının kök düzeyinde tanımladığınız scopes için tüm eylemler aynı kapsamı gerektirir.
Hedef kitle, sağlayıcı ve kapsamları belirtilmiş bir belirteç olmadan API'yi çağırmaya çalışırsanız, bir 401 Unauthorized yanıt alırsınız.
Not
Bu aşamada Dev Proxy belirteci doğrulamaz. Yalnızca belirtecin mevcut olup olmadığını ve gerekli hedef kitleye, verene ve kapsamlara sahip olup olmadığını denetler. Henüz gerçek bir Microsoft Entra uygulama kaydınız olmadığında ve bu yüzden gerçek bir belirteç alamadığınız erken geliştirme aşamalarında bu kullanışlıdır.
Örnek 2: Farklı eylemler için farklı kapsamlar kullanarak Microsoft Entra ile güvenliği sağlanan bir CRUD API'sini simüle edin
Çoğu durumda, farklı API işlemleri farklı izinler gerektirir. Örneğin, müşteriler hakkında bilgi almak için güncelleştirmeden farklı bir izin gerekebilir. Bu örnekte, farklı kapsamlara sahip farklı API eylemlerinin güvenliğini sağlarsınız.
Dosyayı aşağıdaki gibi güncelleştirin customers-api.json :
Dosya:customers-api.json (eylem düzeyi kapsamları)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com"
},
"actions": [
{
"action": "getAll",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "create",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
}
]
}
Bu kez, API dosyasının kök düzeyinde scopes belirtmeniz gerekmiyor. Bunun yerine, bunları her eylem için belirtirsiniz. Bu şekilde, farklı kapsamlarla farklı eylemlerin güvenliğini sağlayabilirsiniz. Örneğin, müşteriler hakkında bilgi almak için api://contoso.com/customer.read kapsamı gerekirken, müşterileri güncelleştirmek için api://contoso.com/customer.write kapsamı gereklidir.
Belirteçleri doğrulama
Geliştirme Proxy'si, Microsoft Entra ile güvenliği sağlanan bir CRUD API'sini simüle etmenizi ve geçerli bir belirteç kullanıp kullanmadığınızı denetlemenizi sağlar. Microsoft Entra'da bir uygulama kaydınız olduğunda, ancak ekip hala API'yi geliştiriyorsa, belirteci doğrulamak kullanışlıdır. Uygulamanızı daha doğru bir şekilde test etmenizi sağlar.
Dev Proxy'nin erişim belirtecini doğrulamasını istiyorsanız, entraAuthConfig özelliğine validateSigningKey özelliğini ekleyin ve bunu true olarak ayarlayın.
Dosya:customers-api.json (belirteç doğrulama ile)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"],
"validateSigningKey": true
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
API'yi kendi kendine oluşturulmuş bir belirteçle çağırmaya çalışırsanız bir 401 Unauthorized yanıt alırsınız. Geliştirme Proxy'si yalnızca Microsoft Entra tarafından verilen geçerli bir belirteci olan isteklere izin verir.
Sonraki adım
CrudApiPlugin hakkında daha fazla bilgi edinin.
Örnekler
Ayrıca ilgili Dev Proxy örneklerine de bakın: