Azure Uygulama Hizmeti’nde kimlik doğrulaması ve yetkilendirmeAuthentication and authorization in Azure App Service

Not

Şu anda AAD V2 (MSAL dahil) desteklenmez Azure App Services ve Azure işlevleri için.At this time, AAD V2 (including MSAL) is not supported for Azure App Services and Azure Functions. Lütfen geri güncelleştirmeleri denetleyin.Please check back for updates.

Azure App Service, yerleşik kimlik doğrulama ve yetkilendirme destekler, böylece kullanıcılarının oturumunu ve en az yazma ya da web uygulaması, RESTful API ve mobil arka uç, kod erişim verileri sağlar ve ayrıca Azure işlevleri.Azure App Service provides built-in authentication and authorization support, so you can sign in users and access data by writing minimal or no code in your web app, RESTful API, and mobile back end, and also Azure Functions. Bu makalede, App Service'nın kimlik doğrulama ve uygulamanız için yetkilendirme basitleştirmek nasıl yardımcı olduğunu açıklar.This article describes how App Service helps simplify authentication and authorization for your app.

Güvenli kimlik doğrulaması ve yetkilendirme gerektirir derin bir anlayış, Federasyon dahil olmak üzere güvenlik, şifreleme, JSON web belirteçleri (JWT) Yönetimi verme türlerinive benzeri.Secure authentication and authorization require deep understanding of security, including federation, encryption, JSON web tokens (JWT) management, grant types, and so on. App Service bu yardımcı programlar sağladığından müşterinize iş değeri sağlama hakkında daha fazla zaman ve enerji harcar.App Service provides these utilities so that you can spend more time and energy on providing business value to your customer.

Not

App Service kimlik doğrulama ve yetkilendirme için kullanmak zorunda değilsiniz.You're not required to use App Service for authentication and authorization. Birçok web çerçeveleri ile güvenlik özellikleri paketlenir ve isterseniz kullanabilirsiniz.Many web frameworks are bundled with security features, and you can use them if you like. App Service sağladığından daha fazla esneklik gerekiyorsa kendi yardımcı programları da yazabilirsiniz.If you need more flexibility than App Service provides, you can also write your own utilities.

Yerel mobil uygulamalar için özel bilgiler için bkz: kullanıcı kimlik doğrulaması ve Azure App Service ile mobil uygulamalar için yetkilendirme.For information specific to native mobile apps, see User authentication and authorization for mobile apps with Azure App Service.

Nasıl çalışır?How it works

Kimlik doğrulama ve yetkilendirme modülü uygulama kodunuz aynı sanal çalıştırır.The authentication and authorization module runs in the same sandbox as your application code. Etkinleştirildiğinde, gelen her HTTP isteği aracılığıyla uygulama kodunuz tarafından işlenen önce geçirir.When it's enabled, every incoming HTTP request passes through it before being handled by your application code.

Bu modül, uygulamanız için birkaç şey işler:This module handles several things for your app:

  • Belirtilen sağlayıcı ile kullanıcıların kimliğini doğrularAuthenticates users with the specified provider
  • Doğrular, depolar ve belirteçleri yenilerValidates, stores, and refreshes tokens
  • Kimliği doğrulanan oturum yönetirManages the authenticated session
  • İstek üst bilgisini kimlik eklerInjects identity information into request headers

Modül, uygulama kodunuz içinden ayrı olarak çalışır ve uygulama ayarlarını kullanarak yapılandırılır.The module runs separately from your application code and is configured using app settings. Hiçbir SDK'ları, belirli diller veya uygulama kodunuzda değişiklikler gereklidir.No SDKs, specific languages, or changes to your application code are required.

Kullanıcı talepleriUser claims

Tüm dil çerçeveleri için App Service kullanıcı talepleri istek üst bilgileri düzeyine ekleyerek kodunuzu kullanılmasını sağlar.For all language frameworks, App Service makes the user's claims available to your code by injecting them into the request headers. ASP.NET 4.6 apps için App Service doldurur ClaimsPrincipal.Current kimliği doğrulanmış kullanıcının talepleri ile standart .NET kod desenini izleyebilmeniz dahil olmak üzere [Authorize] özniteliği.For ASP.NET 4.6 apps, App Service populates ClaimsPrincipal.Current with the authenticated user's claims, so you can follow the standard .NET code pattern, including the [Authorize] attribute. Benzer şekilde, App Service için PHP uygulamaları, doldurur _SERVER['REMOTE_USER'] değişkeni.Similarly, for PHP apps, App Service populates the _SERVER['REMOTE_USER'] variable. Java uygulamaları için taleplerdir Tomcat servlet erişilebilir.For Java apps, the claims are accessible from the Tomcat servlet.

İçin Azure işlevleri, ClaimsPrincipal.Current .NET kodu için aktarıldıktan değildir ancak yine de kullanıcı taleplerini istek üst bilgilerinde bulabilirsiniz.For Azure Functions, ClaimsPrincipal.Current is not hydrated for .NET code, but you can still find the user claims in the request headers.

Daha fazla bilgi için erişim kullanıcı taleplerini.For more information, see Access user claims.

Belirteç DeposuToken store

App Service web uygulamaları, API'leri, yerel mobil uygulamalar veya kullanıcılarla ilişkili belirteçleri deposudur yerleşik bir belirteç deposu sağlar.App Service provides a built-in token store, which is a repository of tokens that are associated with the users of your web apps, APIs, or native mobile apps. Herhangi bir sağlayıcı ile kimlik doğrulaması etkinleştirdiğinizde, bu belirteç deposu uygulamanıza hemen kullanılabilir.When you enable authentication with any provider, this token store is immediately available to your app. Uygulama kodunuzun verileri kullanıcının adına bu sağlayıcılardan gibi erişmesi gerekiyorsa:If your application code needs to access data from these providers on the user's behalf, such as:

  • Kimliği doğrulanmış kullanıcının Facebook zaman tünelinde Yayınlapost to the authenticated user's Facebook timeline
  • Azure Active Directory Graph API'sini ya da Microsoft Graph bile kullanıcının şirket verilerini okuyunread the user's corporate data from the Azure Active Directory Graph API or even the Microsoft Graph

Genellikle toplamak, depolamak ve bu belirteçler, uygulamanızda yenileme için kod yazmanız gerekir.You typically must write code to collect, store, and refresh these tokens in your application. Belirteç Deposu ile yeni belirteçlerini almak gerektiğinde bunları ve yenilemek için App Service söyleyin zaman haline gelmeden geçersiz.With the token store, you just retrieve the tokens when you need them and tell App Service to refresh them when they become invalid.

Kimliği doğrulanan oturum için kimliği belirteçleri, erişim belirteci ve yenileme belirteçleri önbelleğe ve bunlar yalnızca ilişkili kullanıcı tarafından erişilebilir.The id tokens, access tokens, and refresh tokens cached for the authenticated session, and they're accessible only by the associated user.

Uygulamanızda belirteçlerle çalışma gerekmiyorsa, belirteç deposu devre dışı bırakabilirsiniz.If you don't need to work with tokens in your app, you can disable the token store.

Günlüğe kaydetme ve izlemeLogging and tracing

Varsa, Uygulama günlüğünü etkinleştirin, kimlik doğrulama ve yetkilendirme izlemeleri doğrudan günlük dosyalarınızı görürsünüz.If you enable application logging, you will see authentication and authorization traces directly in your log files. Beklemediğiniz bir kimlik doğrulama hatası görürseniz, mevcut uygulama günlüklerinizi bakarak tüm ayrıntılarını kolayca bulabilirsiniz.If you see an authentication error that you didn’t expect, you can conveniently find all the details by looking in your existing application logs. Etkinleştirirseniz başarısız istek izlemeyigördüğünüz tam olarak hangi rolü kimlik doğrulaması ve yetkilendirme modülü, başarısız bir istek içinde yürütülen.If you enable failed request tracing, you can see exactly what role the authentication and authorization module may have played in a failed request. Başvurular adlı bir modül için izleme günlüklerine bakın EasyAuthModule_32/64.In the trace logs, look for references to a module named EasyAuthModule_32/64.

Kimlik sağlayıcılarıIdentity providers

App Service kullanan Federasyon kimliği, hangi üçüncü taraf kimlik sağlayıcısı kullanıcı kimliklerini ve kimlik doğrulama akışı, yönetir.App Service uses federated identity, in which a third-party identity provider manages the user identities and authentication flow for you. Beş adet kimlik sağlayıcısı, varsayılan olarak kullanılabilir:Five identity providers are available by default:

SağlayıcıProvider Oturum açma uç noktasıSign-in endpoint
Azure Active DirectoryAzure Active Directory /.auth/login/aad
Microsoft HesabıMicrosoft Account /.auth/login/microsoftaccount
FacebookFacebook /.auth/login/facebook
GoogleGoogle /.auth/login/google
TwitterTwitter /.auth/login/twitter

Kimlik doğrulaması ve yetkilendirme ile bu sağlayıcılardan birini etkinleştirdiğinizde, oturum açma uç noktası sağlayıcıdan kimlik doğrulama belirteçleri doğrulama ve kullanıcı kimlik doğrulaması için kullanılabilir.When you enable authentication and authorization with one of these providers, its sign-in endpoint is available for user authentication and for validation of authentication tokens from the provider. Bu oturum açma seçenekleri herhangi bir sayıda ile kullanıcılarınıza kolayca sağlayabilir.You can provide your users with any number of these sign-in options with ease. Başka bir kimlik sağlayıcısı tümleştirebilirler veya kendi özel kimlik çözümünüz.You can also integrate another identity provider or your own custom identity solution.

Kimlik doğrulama akışıAuthentication flow

Kimlik doğrulama akışı, tüm sağlayıcılar için aynıdır, ancak oturum sağlayıcısının SDK imzalamak istediğinize bağlı olarak farklılık gösterir:The authentication flow is the same for all providers, but differs depending on whether you want to sign in with the provider's SDK:

  • SDK sağlayıcısı: Federasyon oturum açma için App Service uygulama atar.Without provider SDK: The application delegates federated sign-in to App Service. Sağlayıcının oturum açma sayfasının kullanıcıya sunabilir tarayıcı uygulamaları, durum genellikle budur.This is typically the case with browser apps, which can present the provider's login page to the user. Ayrıca çağrıldığı için sunucu kodunu oturum açma işlemi yönetir sunucu yönlendirilmiş akış veya sunucu akışı.The server code manages the sign-in process, so it is also called server-directed flow or server flow. Bu durumda, tarayıcı uygulamaları için geçerlidir.This case applies to browser apps. SDK'sı App Service kimlik doğrulaması kullanıcıların oturum açmak için bir web görünümü açar çünkü Mobile Apps istemci SDK'sı kullanarak kullanıcıların oturum yerel uygulamalar için de geçerlidir.It also applies to native apps that sign users in using the Mobile Apps client SDK because the SDK opens a web view to sign users in with App Service authentication.
  • SDK sağlayıcısı ile: Uygulama, kullanıcıların sağlayıcısına el ile imzalar ve ardından App Service doğrulaması için kimlik doğrulama belirteci gönderir.With provider SDK: The application signs users in to the provider manually and then submits the authentication token to App Service for validation. Sağlayıcının oturum açma sayfasının, kullanıcıya sunmak olamaz, tarayıcı olmayan uygulamaları ile durum genellikle budur.This is typically the case with browser-less apps, which can't present the provider's sign-in page to the user. Ayrıca çağrıldığı için uygulama kodu oturum açma işlemini yönetir istemci yönlendirilmiş akış veya istemci akışı.The application code manages the sign-in process, so it is also called client-directed flow or client flow. Bu durumda REST API'leri için geçerli Azure işlevlerive JavaScript tarayıcı istemcilerinin, hem de tarayıcı uygulamaları, oturum açma işleminde daha fazla esnekliğe ihtiyacınız.This case applies to REST APIs, Azure Functions, and JavaScript browser clients, as well as browser apps that need more flexibility in the sign-in process. Sağlayıcının SDK'sını kullanarak kullanıcıların oturum yerel mobil uygulamalar için de geçerlidir.It also applies to native mobile apps that sign users in using the provider's SDK.

Not

App Service güvenilen tarayıcı uygulamasında çağrılarından App Service'te başka bir REST API çağrıları veya Azure işlevleri sunucu yönlendirilmiş akışını kullanarak kimlik doğrulaması yapılabilir.Calls from a trusted browser app in App Service calls another REST API in App Service or Azure Functions can be authenticated using the server-directed flow. Daha fazla bilgi için özelleştirme kimlik doğrulaması ve yetkilendirme App Service'te.For more information, see Customize authentication and authorization in App Service.

Aşağıdaki tabloda kimlik doğrulama akışının adımları gösterilmektedir.The table below shows the steps of the authentication flow.

AdımStep SDK sağlayıcısıWithout provider SDK SDK sağlayıcısı ileWith provider SDK
1. Kullanıcı olarak oturum açın1. Sign user in İstemciye yönlendirir /.auth/login/<provider>.Redirects client to /.auth/login/<provider>. İstemci kodu doğrudan sağlayıcısının SDK ile kullanıcı oturum açtığında ve bir kimlik doğrulama belirteci alır.Client code signs user in directly with provider's SDK and receives an authentication token. Bilgi için sağlayıcının belgelerine bakın.For information, see the provider's documentation.
2. Kimlik doğrulaması sonrası2. Post-authentication Sağlayıcı istemciye yönlendirir /.auth/login/<provider>/callback.Provider redirects client to /.auth/login/<provider>/callback. İstemci kodu sağlayıcısından belirteç gönderir için /.auth/login/<provider> doğrulama için.Client code posts token from provider to /.auth/login/<provider> for validation.
3. Kimliği doğrulanmış oturumu3. Establish authenticated session App Service, kimliği doğrulanmış bir tanımlama bilgisi yanıta ekler.App Service adds authenticated cookie to response. App Service, istemci kodu için kendi kimlik doğrulama belirteci döndürür.App Service returns its own authentication token to client code.
4. Kimliği doğrulanmış içerik sunma4. Serve authenticated content İstemci kimlik doğrulama tanımlama bilgisi (tarayıcı tarafından otomatik olarak işlenir) sonraki istekleri içerir.Client includes authentication cookie in subsequent requests (automatically handled by browser). İstemci kodu sunan kimlik doğrulaması belirtecinde X-ZUMO-AUTH üst bilgisi (Mobile Apps istemci SDK'ları tarafından otomatik olarak işlenir).Client code presents authentication token in X-ZUMO-AUTH header (automatically handled by Mobile Apps client SDKs).

İstemci tarayıcıları için App Service otomatik olarak tüm kimliği doğrulanmamış kullanıcılar için yönlendirebilir /.auth/login/<provider>.For client browsers, App Service can automatically direct all unauthenticated users to /.auth/login/<provider>. Kullanıcıların bir veya daha fazla sunabilir /.auth/login/<provider> seçtiğiniz sağlayıcının kullanarak uygulamanıza oturum açmak için bağlantılar.You can also present users with one or more /.auth/login/<provider> links to sign in to your app using their provider of choice.

Yetkilendirme davranışıAuthorization behavior

İçinde Azure portalında, App Service yetkilendirme davranışları bir dizi yapılandırabilirsiniz.In the Azure portal, you can configure App Service authorization with a number of behaviors.

Aşağıdaki başlıklar seçenekleri açıklanmaktadır.The following headings describe the options.

(Varsayılan) tüm isteklere izin verAllow all requests (default)

Kimlik doğrulama ve yetkilendirme (Kapalı) App Service tarafından yönetilmez.Authentication and authorization are not managed by App Service (turned off).

Kimlik doğrulama ve yetkilendirme ihtiyacınız yoksa veya kendi kimlik doğrulama ve yetkilendirme kodu yazmak istiyorsanız bu seçeneği belirleyin.Choose this option if you don't need authentication and authorization, or if you want to write your own authentication and authorization code.

Yalnızca kimliği doğrulanmış isteklere izin verAllow only authenticated requests

Seçenek oturum açmada <sağlayıcısı > .The option is Log in with <provider>. App Service, tüm anonim isteklere yönlendiren /.auth/login/<provider> seçtiğiniz sağlayıcısı.App Service redirects all anonymous requests to /.auth/login/<provider> for the provider you choose. Anonim İstek yerel mobil uygulamadan geliyorsa, döndürülen yanıt bir HTTP 401 Unauthorized.If the anonymous request comes from a native mobile app, the returned response is an HTTP 401 Unauthorized.

Bu seçenek belirtilmişse, uygulamanızda kimlik doğrulaması kod yazmaya gerek yoktur.With this option, you don't need to write any authentication code in your app. Role özgü yetkilendirme gibi hassas yetkilendirme, kullanıcı talepleri inceleyerek işlenebilir (bkz erişim kullanıcı taleplerini).Finer authorization, such as role-specific authorization, can be handled by inspecting the user's claims (see Access user claims).

Tüm isteklere izin ver, ancak kimliği doğrulanmış istekler doğrulaAllow all requests, but validate authenticated requests

Seçenek Anonime istekleri.The option is Allow Anonymous requests. Bu seçenek, kimlik doğrulama ve yetkilendirme App Service'te açar, ancak uygulama kodunuzda yetkilendirme kararlarını erteleyen.This option turns on authentication and authorization in App Service, but defers authorization decisions to your application code. Kimliği doğrulanmış istekler için App Service kimlik doğrulama bilgilerini HTTP üstbilgileri boyunca ayrıca geçirir.For authenticated requests, App Service also passes along authentication information in the HTTP headers.

Bu seçenek, anonim isteklerin işlenmesinden daha fazla esneklik sağlar.This option provides more flexibility in handling anonymous requests. Örneğin, sağlar birden çok oturum açma sağlayıcısı sunmak kullanıcılarınıza.For example, it lets you present multiple sign-in providers to your users. Ancak, kod yazmanız gerekir.However, you must write code.

Daha fazla kaynakMore resources

Öğretici: Kimlik doğrulama ve kullanıcıları uçtan uca (Windows) Azure App Service'te yetkilendirmeTutorial: Authenticate and authorize users end-to-end in Azure App Service (Windows)
Öğretici: Kimlik doğrulama ve kullanıcıları uçtan uca Azure App Service'te Linux için yetkilendirmeTutorial: Authenticate and authorize users end-to-end in Azure App Service for Linux
Kimlik doğrulama ve yetkilendirme App Service'te özelleştirmeCustomize authentication and authorization in App Service

Sağlayıcıya özgü nasıl yapılır kılavuzları:Provider-specific how-to guides: