Microsoft Identity platform ve OAuth 2,0 SAML taşıyıcı onaylama akışıMicrosoft identity platform and OAuth 2.0 SAML bearer assertion flow

OAuth 2,0 SAML taşıyıcı onaylama akışı, bir istemcinin var olan bir güven ilişkisini kullanması gerektiğinde bir SAML onaylama işlemi kullanarak bir OAuth erişim belirteci istemesini sağlar.The OAuth 2.0 SAML bearer assertion flow allows you to request an OAuth access token using a SAML assertion when a client needs to use an existing trust relationship. SAML onaylaması 'na uygulanan imza, yetkili uygulamanın kimlik doğrulamasını sağlar.The signature applied to the SAML assertion provides authentication of the authorized app. SAML onaylama, bir kimlik sağlayıcısı tarafından verilen ve bir hizmet sağlayıcısı tarafından tüketilen bir XML güvenlik belirtecidir.A SAML assertion is an XML security token issued by an identity provider and consumed by a service provider. Hizmet sağlayıcı, güvenlikle ilgili amaçlar için onay konusunun konusunu belirlemek üzere içeriğine bağımlıdır.The service provider relies on its content to identify the assertion’s subject for security-related purposes.

SAML onaylama, OAuth belirteci uç noktasına gönderilir.The SAML assertion is posted to the OAuth token endpoint. Uç nokta onay işlemini işler ve uygulamanın önceki onayına göre bir erişim belirteci yayınlar.The endpoint processes the assertion and issues an access token based on prior approval of the app. İstemcinin bir yenileme belirteci olması veya depolaması veya belirteç uç noktasına geçirilmesi gereken istemci sırrı olması gerekmez.The client isn’t required to have or store a refresh token, nor is the client secret required to be passed to the token endpoint.

SAML taşıyıcı onaylama akışı, kullanıcıdan kimlik bilgileri istemeden Microsoft Graph API 'lerden (yalnızca temsilci izinleri destekler) veri getirilirken faydalıdır.SAML Bearer Assertion flow is useful when fetching data from Microsoft Graph APIs (which only support delegated permissions) without prompting the user for credentials. Bu senaryoda, arka plan işlemlerinde tercih edilen istemci kimlik bilgileri verme işlemi çalışmaz.In this scenario the client credentials grant, which is preferred for background processes, does not work.

Bir SAML onaylama işlemi almak ve ardından OAuth korumalı bir API 'ye (Microsoft Graph gibi) erişim eklemek için etkileşimli tarayıcı tabanlı oturum açma kullanan uygulamalar için, API için bir erişim belirteci almak üzere bir OAuth isteği yapabilirsiniz.For applications that do interactive browser-based sign-in to get a SAML assertion and then want to add access to an OAuth protected API (such as Microsoft Graph), you can make an OAuth request to get an access token for the API. Tarayıcı, kullanıcının kimliğini doğrulamak için Azure AD 'ye yeniden yönlendirildiğinde, tarayıcı, SAML oturum açma işleminden oturumu seçer ve kullanıcının kimlik bilgilerini girmesi gerekmez.When the browser is redirected to Azure AD to authenticate the user, the browser will pick up the session from the SAML sign-in and the user doesn't need to enter their credentials.

OAuth SAML taşıyıcı onaylama akışı, Azure Active Directory Federal Active Directory Federasyon Hizmetleri (AD FS) (ADFS) gibi kimlik sağlayıcılarıyla kimlik doğrulaması yapan kullanıcılar için de desteklenir.The OAuth SAML Bearer Assertion flow is also supported for users authenticating with identity providers such as Active Directory Federation Services (ADFS) federated to Azure Active Directory. ADFS 'den edinilen SAML onaylama işlemi, kullanıcının kimliğini doğrulamak için bir OAuth akışında kullanılabilir.The SAML assertion obtained from ADFS can be used in an OAuth flow to authenticate the user.

OAuth akışı

SAML taşıyıcı onaylama kullanarak Graph çağırmaCall Graph using SAML bearer assertion

Artık SAML onaylama program aracılığıyla 'ı gerçekten nasıl getirdiğimiz hakkında anladık.Now let us understand on how we can actually fetch SAML assertion programatically. Bu yaklaşım, ADFS ile test edilmiştir.This approach is tested with ADFS. Ancak, bu, SAML onaylama program aracılığıyla dönüşü destekleyen herhangi bir kimlik sağlayıcısıyla birlikte kullanılır.However, this works with any identity provider that supports the return of SAML assertion programatically. Temel süreç: bir SAML onaylama işlemi alın, erişim belirteci alın ve Microsoft Graph erişin.The basic process is: get a SAML assertion, get an access token, and access Microsoft Graph.

Ön koşullarPrerequisites

Yetkilendirme sunucusu/ortam (Microsoft 365) ile kimlik sağlayıcısı ya da SAML 2,0 taşıyıcı onaylama (ADFS) veren arasında bir güven ilişkisi oluşturun.Establish a trust relationship between the authorization server/environment (Microsoft 365) and the identity provider, or issuer of the SAML 2.0 bearer assertion (ADFS). ADFS 'yi çoklu oturum açma ve kimlik sağlayıcısı olarak yapılandırmak için Bu makaleyebaşvurabilirsiniz.To configure ADFS for single sign-on and as an identity provider you may refer to this article.

Uygulamayı portalakaydedin:Register the application in the portal:

  1. Portalın uygulama kaydı dikey penceresinde oturum açın (lütfen Graph API için v 2.0 uç noktalarını kullandığınızı ve bu nedenle uygulamayı Bu portalda kaydetmesi gerektiğini unutmayın.Sign in to the app registration blade of the portal (Please note that we are using the v2.0 endpoints for Graph API and hence need to register the application in this portal. Aksi halde Azure Active Directory 'de kayıtları kullandık.Otherwise we could have used the registrations in Azure active directory).
  2. Yeni kayıtseçeneğini belirleyin.Select New registration.
  3. Bir uygulamayı kaydet sayfası göründüğünde, uygulamanızın kayıt bilgilerini girin:When the Register an application page appears, enter your application's registration information:
    1. Ad - Uygulama kullanıcılarına gösterilecek anlamlı bir uygulama adı girin.Name - Enter a meaningful application name that will be displayed to users of the app.
    2. Desteklenen hesap türleri - Uygulamanızın desteklemesini istediğiniz hesapları seçin.Supported account types - Select which accounts you would like your application to support.
    3. Yeniden yönlendirme URI 'si (isteğe bağlı) -oluşturmakta olduğunuz uygulamanın türünü, Web veya ortak istemciyi (mobil & Masaüstü) seçin ve ardından uygulamanızın YENIDEN yönlendirme URI 'sini (veya yanıt URL 'si) girin.Redirect URI (optional) - Select the type of app you're building, Web, or Public client (mobile & desktop), and then enter the redirect URI (or reply URL) for your application.
    4. Bittiğinde Kaydet’i seçin.When finished, select Register.
  4. Uygulama (istemci) KIMLIĞINI bir yere getirin.Make a note of the application (client) ID.
  5. Sol bölmede sertifikalar & gizlilikler' ı seçin.In the left pane, select Certificates & secrets. İstemci gizli dizileri bölümünde yeni istemci parolası ' na tıklayın.Click New client secret in the Client secrets section. Yeni istemci parolasını kopyalayarak dikey pencereyi bıraktığınızda alamazsınız.Copy the new client secret, you won't be able to retrieve when you leave the blade.
  6. Sol bölmede, API izinleri ' ni seçin ve izin ekleyin.In the left pane, select API permissions and then Add a permission. Microsoft Graphve ardından temsilci izinleri' ni seçin ve ardından Görevler. read ' i seçerek Outlook Graph API kullanmayı planladık.Select Microsoft Graph, then delegated permissions, and then select Tasks.read since we intend to use the Outlook Graph API.

Örnek istekleri test etmek için gereken bir araç olan Postman'ı yükleme.Install Postman, a tool required to test the sample requests. Daha sonra, istekleri koda dönüştürebilirsiniz.Later, you can convert the requests to code.

ADFS 'den SAML onaylama işlemi alGet the SAML assertion from ADFS

SAML onaylama işlemini getirmek için SOAP Zarfı kullanarak ADFS uç noktasına bir POST isteği oluşturun:Create a POST request to the ADFS endpoint using SOAP envelope to fetch the SAML assertion:

SAML onaylama al

Üst bilgi değerleri:Header values:

Üst bilgi değerleri

ADFS istek gövdesi:ADFS request body:

ADFS istek gövdesi

Bu istek başarıyla gönderildikten sonra, ADFS 'den bir SAML onaylama işlemi almalısınız.Once this request is posted successfully, you should receive a SAML assertion from ADFS. Yalnızca saml: onaylama etiketi verileri gereklidir, daha fazla istekte kullanmak için Base64 kodlamaya dönüştürün.Only the SAML:Assertion tag data is required, convert it to base64 encoding to use in further requests.

SAML onaylama işlemi kullanarak OAuth2 belirtecini alınGet the OAuth2 token using the SAML assertion

Bu adımda, ADFS onaylama yanıtını kullanarak bir OAuth2 belirteci getirin.In this step, fetch an OAuth2 token using the ADFS assertion response.

  1. Aşağıda gösterildiği gibi, üst bilgi değerleriyle bir POST isteği oluşturun:Create a POST request as shown below with the header values:

    POST isteği

  2. İsteğin gövdesinde, client_id, client_secretve onaylama 'yı (Base64 kodlamalı SAML onaylaması önceki adımı aldı) değiştirin:In the body of the request, replace client_id, client_secret, and assertion (the base64 encoded SAML assertion obtained the previous step):

    İstek gövdesi

  3. İstek başarıyla tamamlandığında, Azure Active Directory 'den bir erişim belirteci alacaksınız.Upon successful request, you will receive an access token from Azure active directory.

OAuth belirteci ile verileri alGet the data with the Oauth token

Erişim belirtecini aldıktan sonra, Graph API 'Lerini (Bu örnekteki Outlook görevleri) çağırın.After receiving the access token, call the Graph APIs (Outlook tasks in this example).

  1. Önceki adımda getirilen erişim belirtecine sahip bir GET isteği oluşturun:Create a GET request with the access token fetched in the previous step:

    İsteği al

  2. Başarılı istek üzerine bir JSON yanıtı alırsınız.Upon successful request, you will receive a JSON response.

Sonraki adımlarNext steps

Farklı kimlik doğrulama akışları ve uygulama senaryolarıhakkında bilgi edinin.Learn about the different authentication flows and application scenarios.