Adına Akışında temsilci kullanıcı kimliği kullanan hizmet-hizmet çağrıları

Uyarı

Bu içerik eski Azure AD v1.0 uç noktasına yöneliktir. Yeni projeler için Microsoft kimlik platformu kullanın.

OAuth 2.0 On-Behalf-Of (OBO) akışı, kullanıcı kimlik doğrulamasını başka bir hizmete veya web API'sine geçirmek için bir hizmet veya web API'sini çağıran bir uygulamayı etkinleştirir. OBO akışı, temsilci olarak atanan kullanıcı kimliğini ve izinlerini istek zinciri aracılığıyla yayılım. Orta katman hizmetinin aşağı akış hizmetine kimliği doğrulanmış istekler yapması için kullanıcı adına Azure Active Directory'den (Azure AD) bir erişim belirtecinin güvenliğini sağlamalıdır.

Önemli

Mayıs 2018 itibarıyla, id_token Adına Akış için kullanılamaz. Tek sayfalı uygulamaların (SPA) OBO akışlarını gerçekleştirmek için orta katman gizli istemcisine erişim belirteci geçirmesi gerekir. On-Behalf-Of çağrıları gerçekleştirebilen istemciler hakkında daha fazla ayrıntı için bkz. sınırlamalar.

Adına akış diyagramı

OBO akışı, OAuth 2.0 yetkilendirme kodu verme akışını kullanan bir uygulamada kullanıcının kimliği doğrulandıktan sonra başlar. Bu noktada uygulama, kullanıcının A API'sine erişim taleplerini ve onayını içeren orta katman web API'sine (A belirteci) bir erişim belirteci (A belirteci) gönderir. Ardından API A, aşağı akış web API'sine (API B) kimliği doğrulanmış bir istekte bulunur.

Bu adımlar, Adına Bağlı akışını oluşturur: OAuth2.0 Adına Akıştaki adımları gösterir

  1. İstemci uygulaması, A belirteci ile API A'ya bir istekte bulunur.
  2. API A, Azure AD belirteci verme uç noktasında kimlik doğrulaması yapar ve API B'ye erişmek için bir belirteç istemektedir.
  3. Azure AD belirteci verme uç noktası, A belirteci ile API A'nın kimlik bilgilerini doğrular ve API B için erişim belirtecini (B belirteci) sağlar.
  4. API B isteği yetkilendirme üst bilgisinde B belirtecini içerir.
  5. API B, güvenli kaynaktan veri döndürür.

Not

Aşağı akış hizmeti için belirteç istemek için kullanılan erişim belirtecindeki hedef kitle talebi, OBO isteğinde bulunan hizmetin kimliği olmalıdır. Belirtecin Azure Active Directory genel imzalama anahtarıyla da imzalanması gerekir (portalda Uygulama kayıtları aracılığıyla kaydedilen uygulamalar için varsayılan değerdir).

Uygulamayı ve hizmeti Azure AD'a kaydetme

Hem orta katman hizmetini hem de istemci uygulamasını Azure AD'a kaydedin.

Orta katman hizmetini kaydetme

  1. Azure Portal’ında oturum açın.
  2. Üst çubukta hesabınızı seçin ve Dizin listesinin altına bakarak uygulamanız için bir Active Directory kiracısı seçin.
  3. Sol bölmede Diğer Hizmetler'i ve ardından Azure Active Directory'yi seçin.
  4. Uygulama kayıtları ve ardından Yeni kayıt'ı seçin.
  5. Uygulama için kolay bir ad girin ve uygulama türünü seçin.
  6. Desteklenen hesaptürleri'nin altında herhangi bir kuruluş dizinindeki hesaplar ve kişisel Microsoft hesapları'nı seçin.
  7. Yeniden yönlendirme URI'sini temel URL'ye ayarlayın.
  8. Uygulamayı kaydetmek için Kaydet'i seçin.
  9. Azure portal uygulamanızı seçin ve Ardından Sertifikalar & gizli diziler'i seçin.
  10. Yeni gizli dizi'yi seçin ve bir yıl veya iki yıl süresine sahip bir gizli dizi ekleyin.
  11. Bu sayfayı kaydettiğinizde, Azure portal gizli dizi değerini görüntüler. Gizli dizi değerini kopyalayıp güvenli bir konuma kaydedin.
  12. Uygulamanızın API'sini kullanıma sunma sayfasında uygulamanızda bir kapsam oluşturun ve "Kapsam ekle" seçeneğine tıklayın. Portal bir uygulama kimliği URI'si de oluşturmanızı gerektirebilir.

Önemli

Uygulamanızdaki uygulama ayarlarını yapılandırmak için gizli diziye ihtiyacınız vardır. Bu gizli dizi değeri yeniden görüntülenmez ve başka bir yolla alınamaz. Azure portal görünür olduğunda kaydedin.

İstemci uygulamasını kaydetme

  1. Azure Portal’ında oturum açın.
  2. Üst çubukta hesabınızı seçin ve Dizin listesinin altına bakarak uygulamanız için bir Active Directory kiracısı seçin.
  3. Sol bölmede Diğer Hizmetler'i ve ardından Azure Active Directory'yi seçin.
  4. Uygulama kayıtları ve ardından Yeni kayıt'ı seçin.
  5. Uygulama için kolay bir ad girin ve uygulama türünü seçin.
  6. Desteklenen hesaptürleri'nin altında herhangi bir kuruluş dizinindeki hesaplar ve kişisel Microsoft hesapları'nı seçin.
  7. Yeniden yönlendirme URI'sini temel URL'ye ayarlayın.
  8. Uygulamayı kaydetmek için Kaydet'i seçin.
  9. Uygulamanız için izinleri yapılandırın. API izinleri bölümünde İzin ekle'yi ve ardından API'lerim'i seçin.
  10. Metin alanına orta katman hizmetinin adını yazın.
  11. İzinleri Seç'i seçin ve ardından orta katmanı kaydetmenin son adımında oluşturduğunuz kapsamı seçin.

Bilinen istemci uygulamalarını yapılandırma

Bu senaryoda, orta katman hizmetinin kullanıcı etkileşimi olmadan aşağı akış API'sine erişmek için kullanıcının onayını alması gerekir. Aşağı akış API'sine erişim verme seçeneği, kimlik doğrulaması sırasında onay adımının bir parçası olarak öne sunulmalıdır.

İstemci uygulamasının Azure AD kaydını orta katman hizmetinin kaydıyla açıkça bağlamak için aşağıdaki adımları izleyin. Bu işlem hem istemci hem de orta katman için gereken onayı tek bir iletişim kutusunda birleştirir.

  1. Bildirim düzenleyicisini açmak için orta katman hizmet kaydına gidin ve Bildirim'i seçin.
  2. knownClientApplications Dizi özelliğini bulun ve istemci uygulamasının istemci kimliğini öğe olarak ekleyin.
  3. Kaydet'i seçerek bildirimi kaydedin.

Hizmet-hizmet erişim belirteci isteği

Erişim belirteci istemek için, kiracıya özgü Azure AD uç noktasına aşağıdaki parametrelerle bir HTTP POST oluşturun:

https://login.microsoftonline.com/<tenant>/oauth2/token

İstemci uygulamasının güvenliği paylaşılan bir gizli diziyle veya bir sertifikayla sağlanır.

İlk durum: Paylaşılan gizli diziyle erişim belirteci isteği

Paylaşılan bir gizli dizi kullanılırken, hizmet-hizmet erişim belirteci isteği aşağıdaki parametreleri içerir:

Parametre Tür Description
grant_type gerekli Belirteç isteğinin türü. OBO isteği JSON Web Belirteci (JWT) kullandığından değerin urn:ietf:params:oauth:grant-type:jwt-bearer olması gerekir.
Iddia gerekli İstekte kullanılan erişim belirtecinin değeri.
client_id gerekli Azure AD kaydı sırasında çağrı hizmetine atanan uygulama kimliği. uygulama kimliğini Azure portal bulmak için Active Directory'yi seçin, dizini seçin ve ardından uygulama adını seçin.
client_secret gerekli Azure AD'da çağrı hizmeti için kaydedilen anahtar. Bu değerin kayıt sırasında belirtilmesi gerekir.
kaynak gerekli Alıcı hizmetin (güvenli kaynak) uygulama kimliği URI'si. uygulama kimliği URI'sini Azure portal bulmak için Active Directory'yi seçin ve dizini seçin. Uygulama adını seçin, Tüm ayarlar'ı ve ardından Özellikler'i seçin.
requested_token_use gerekli İsteğin nasıl işlenmesi gerektiğini belirtir. Adına Akışta değerin on_behalf_of olması gerekir.
scope gerekli Belirteç isteği için boşlukla ayrılmış kapsam listesi. OpenID Connect için openid kapsamı belirtilmelidir.

Örnek

Aşağıdaki HTTP POST, web API'sine https://graph.microsoft.com yönelik bir erişim belirteci istemektedir. erişim client_id belirtecini isteyen hizmeti tanımlar.

// line breaks for legibility only

POST /oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&client_id=625391af-c675-43e5-8e44-edd3e30ceb15
&client_secret=0Y1W%2BY3yYb3d9N8vSjvm8WrGzVZaAaHbHHcGbcgG%2BoI%3D
&resource=https%3A%2F%2Fgraph.microsoft.com
&assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.ewogICJhdWQiOiAiaHR0cHM6Ly9ncmFwaC5taWNyb3NvZnQuY29tIiwKICAiaXNzIjogImh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzI2MDM5Y2NlLTQ4OWQtNDAwMi04MjkzLTViMGM1MTM0ZWFjYi8iLAogICJpYXQiOiAxNDkzNDIzMTY4LAogICJuYmYiOiAxNDkzNDIzMTY4LAogICJleHAiOiAxNDkzNDY2OTUxLAogICJhY3IiOiAiMSIsCiAgImFpbyI6ICJBU1FBMi84REFBQUE1NnZGVmp0WlNjNWdBVWwrY1Z0VFpyM0VvV2NvZEoveWV1S2ZqcTZRdC9NPSIsCiAgImFtciI6IFsKICAgICJwd2QiCiAgXSwKICAiYXBwaWQiOiAiNjI1MzkxYWYtYzY3NS00M2U1LThlNDQtZWRkM2UzMGNlYjE1IiwKICAiYXBwaWRhY3IiOiAiMSIsCiAgImVfZXhwIjogMzAyNjgzLAogICJmYW1pbHlfbmFtZSI6ICJUZXN0IiwKICAiZ2l2ZW5fbmFtZSI6ICJOYXZ5YSIsCiAgImlwYWRkciI6ICIxNjcuMjIwLjEuMTc3IiwKICAibmFtZSI6ICJOYXZ5YSBUZXN0IiwKICAib2lkIjogIjFjZDRiY2FjLWI4MDgtNDIzYS05ZTJmLTgyN2ZiYjFiYjczOSIsCiAgInBsYXRmIjogIjMiLAogICJwdWlkIjogIjEwMDMzRkZGQTEyRUQ3RkUiLAogICJzY3AiOiAiVXNlci5SZWFkIiwKICAic3ViIjogIjNKTUlaSWJlYTc1R2hfWHdDN2ZzX0JDc3kxa1l1ekZKLTUyVm1Zd0JuM3ciLAogICJ0aWQiOiAiMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiIiwKICAidW5pcXVlX25hbWUiOiAibmF2eWFAZGRvYmFsaWFub3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLAogICJ1cG4iOiAibmF2eWFAZGRvYmFsaWFub3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLAogICJ1dGkiOiAieEN3ZnpoYS1QMFdKUU9MeENHZ0tBQSIsCiAgInZlciI6ICIxLjAiCn0.cqmUVjfVbqWsxJLUI1Z4FRx1mNQAHP-L0F4EMN09r8FY9bIKeO-0q1eTdP11Nkj_k4BmtaZsTcK_mUygdMqEp9AfyVyA1HYvokcgGCW_Z6DMlVGqlIU4ssEkL9abgl1REHElPhpwBFFBBenOk9iHddD1GddTn6vJbKC3qAaNM5VarjSPu50bVvCrqKNvFixTb5bbdnSz-Qr6n6ACiEimiI1aNOPR2DeKUyWBPaQcU5EAK0ef5IsVJC1yaYDlAcUYIILMDLCD9ebjsy0t9pj_7lvjzUSrbMdSCCdzCqez_MSNxrk1Nu9AecugkBYp3UVUZOIyythVrj6-sVvLZKUutQ
&requested_token_use=on_behalf_of
&scope=openid

İkinci durum: Sertifikayla belirteç isteğine erişme

Bir sertifikaya sahip hizmet-hizmet erişim belirteci isteği aşağıdaki parametreleri içerir:

Parametre Tür Description
grant_type gerekli Belirteç isteğinin türü. OBO isteği JWT erişim belirteci kullandığından değerin urn:ietf:params:oauth:grant-type:jwt-bearer olması gerekir.
Iddia gerekli İstekte kullanılan belirtecin değeri.
client_id gerekli Azure AD kaydı sırasında çağrı hizmetine atanan uygulama kimliği. uygulama kimliğini Azure portal bulmak için Active Directory'yi seçin, dizini seçin ve ardından uygulama adını seçin.
client_assertion_type gerekli Değer şu olmalıdır: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion gerekli Oluşturduğunuz ve uygulamanız için kimlik bilgileri olarak kaydettiğiniz sertifikayla imzaladığınız bir JSON Web Belirteci. Onay biçimi ve sertifikanızı kaydetme hakkında bilgi edinmek için sertifika kimlik bilgilerine bakın.
kaynak gerekli Alıcı hizmetin (güvenli kaynak) uygulama kimliği URI'si. uygulama kimliği URI'sini Azure portal bulmak için Active Directory'yi seçin ve dizini seçin. Uygulama adını seçin, Tüm ayarlar'ı ve ardından Özellikler'i seçin.
requested_token_use gerekli İsteğin nasıl işlenmesi gerektiğini belirtir. Adına Akışta değerin on_behalf_of olması gerekir.
scope gerekli Belirteç isteği için boşlukla ayrılmış kapsam listesi. OpenID Connect için openid kapsamı belirtilmelidir.

Bu parametreler paylaşılan gizli dizi tarafından yapılan istekle neredeyse aynıdır, ancak client_secret parameter iki parametreyle değiştirilir: client_assertion_type ve client_assertion.

Örnek

Aşağıdaki HTTP POST, bir sertifikaya sahip web API'sine https://graph.microsoft.com yönelik bir erişim belirteci istemektedir. erişim client_id belirtecini isteyen hizmeti tanımlar.

// line breaks for legibility only

POST /oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&client_id=625391af-c675-43e5-8e44-edd3e30ceb15
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg
&resource=https%3A%2F%2Fgraph.microsoft.com
&assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.eyJhdWQiOiJodHRwczovL2Rkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tLzE5MjNmODYyLWU2ZGMtNDFhMy04MWRhLTgwMmJhZTAwYWY2ZCIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzI2MDM5Y2NlLTQ4OWQtNDAwMi04MjkzLTViMGM1MTM0ZWFjYi8iLCJpYXQiOjE0OTM0MjMxNTIsIm5iZiI6MTQ5MzQyMzE1MiwiZXhwIjoxNDkzNDY2NjUyLCJhY3IiOiIxIiwiYWlvIjoiWTJaZ1lCRFF2aTlVZEc0LzM0L3dpQndqbjhYeVp4YmR1TFhmVE1QeG8yYlN2elgreHBVQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiJiMzE1MDA3OS03YmViLTQxN2YtYTA2YS0zZmRjNzhjMzI1NDUiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MzAyNDAwLCJmYW1pbHlfbmFtZSI6IlRlc3QiLCJnaXZlbl9uYW1lIjoiTmF2eWEiLCJpcGFkZHIiOiIxNjcuMjIwLjEuMTc3IiwibmFtZSI6Ik5hdnlhIFRlc3QiLCJvaWQiOiIxY2Q0YmNhYy1iODA4LTQyM2EtOWUyZi04MjdmYmIxYmI3MzkiLCJwbGF0ZiI6IjMiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJEVXpYbkdKMDJIUk0zRW5pbDFxdjZCakxTNUllQy0tQ2ZpbzRxS1MzNEc4IiwidGlkIjoiMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiIiwidW5pcXVlX25hbWUiOiJuYXZ5YUBkZG9iYWxpYW5vdXRsb29rLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6Im5hdnlhQGRkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0.R-Ke-XO7lK0r5uLwxB8g5CrcPAwRln5SccJCfEjU6IUqpqcjWcDzeDdNOySiVPDU_ZU5knJmzRCF8fcjFtPsaA4R7vdIEbDuOur15FXSvE8FvVSjP_49OH6hBYqoSUAslN3FMfbO6Z8YfCIY4tSOB2I6ahQ_x4ZWFWglC3w5mK-_4iX81bqi95eV4RUKefUuHhQDXtWhrSgIEC0YiluMvA4TnaJdLq_tWXIc4_Tq_KfpkvI004ONKgU7EAMEr1wZ4aDcJV2yf22gQ1sCSig6EGSTmmzDuEPsYiyd4NhidRZJP4HiiQh-hePBQsgcSgYGvz9wC6n57ufYKh2wm_Ti3Q
&requested_token_use=on_behalf_of
&scope=openid

Hizmet-hizmet erişim belirteci yanıtı

Başarılı bir yanıt, aşağıdaki parametrelere sahip bir JSON OAuth 2.0 yanıtıdır:

Parametre Açıklama
token_type Belirteç türü değerini gösterir. Azure AD'in desteklediği tek tür Taşıyıcı'dır. Taşıyıcı belirteçler hakkında daha fazla bilgi için bkz. OAuth 2.0 Authorization Framework: Taşıyıcı Belirteç Kullanımı (RFC 6750).
scope Belirteçte verilen erişim kapsamı.
expires_in Erişim belirtecinin geçerli olduğu süre (saniye cinsinden).
expires_on Erişim belirtecinin süresinin dolduğu saat. Tarih, son kullanma tarihine kadar 1970-01-01T0:0:0Z UTC arasındaki saniye sayısı olarak temsil edilir. Bu değer, önbelleğe alınan belirteçlerin yaşam ömrünü belirlemek için kullanılır.
kaynak Alıcı hizmetin (güvenli kaynak) uygulama kimliği URI'si.
access_token İstenen erişim belirteci. Çağıran hizmet, alıcı hizmette kimlik doğrulaması yapmak için bu belirteci kullanabilir.
id_token İstenen kimlik belirteci. Çağıran hizmet, kullanıcının kimliğini doğrulamak ve kullanıcıyla oturum başlatmak için bu belirteci kullanabilir.
refresh_token İstenen erişim belirtecinin yenileme belirteci. Çağıran hizmet, geçerli erişim belirtecinin süresi dolduktan sonra başka bir erişim belirteci istemek için bu belirteci kullanabilir.

Başarı yanıtı örneği

Aşağıdaki örnekte web API'sine yönelik erişim belirteci isteğine verilen başarı yanıtı gösterilmektedir https://graph.microsoft.com .

{
    "token_type":"Bearer",
    "scope":"User.Read",
    "expires_in":"43482",
    "ext_expires_in":"302683",
    "expires_on":"1493466951",
    "not_before":"1493423168",
    "resource":"https://graph.microsoft.com",
    "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.eyJhdWQiOiJodHRwczovL2dyYXBoLndpbmRvd3MubmV0IiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiLyIsImlhdCI6MTQ5MzQyMzE2OCwibmJmIjoxNDkzNDIzMTY4LCJleHAiOjE0OTM0NjY5NTEsImFjciI6IjEiLCJhaW8iOiJBU1FBMi84REFBQUE1NnZGVmp0WlNjNWdBVWwrY1Z0VFpyM0VvV2NvZEoveWV1S2ZqcTZRdC9NPSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI2MjUzOTFhZi1jNjc1LTQzZTUtOGU0NC1lZGQzZTMwY2ViMTUiLCJhcHBpZGFjciI6IjEiLCJlX2V4cCI6MzAyNjgzLCJmYW1pbHlfbmFtZSI6IlRlc3QiLCJnaXZlbl9uYW1lIjoiTmF2eWEiLCJpcGFkZHIiOiIxNjcuMjIwLjEuMTc3IiwibmFtZSI6Ik5hdnlhIFRlc3QiLCJvaWQiOiIxY2Q0YmNhYy1iODA4LTQyM2EtOWUyZi04MjdmYmIxYmI3MzkiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzNGRkZBMTJFRDdGRSIsInNjcCI6IlVzZXIuUmVhZCIsInN1YiI6IjNKTUlaSWJlYTc1R2hfWHdDN2ZzX0JDc3kxa1l1ekZKLTUyVm1Zd0JuM3ciLCJ0aWQiOiIyNjAzOWNjZS00ODlkLTQwMDItODI5My01YjBjNTEzNGVhY2IiLCJ1bmlxdWVfbmFtZSI6Im5hdnlhQGRkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tIiwidXBuIjoibmF2eWFAZGRvYmFsaWFub3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLCJ1dGkiOiJ4Q3dmemhhLVAwV0pRT0x4Q0dnS0FBIiwidmVyIjoiMS4wIn0.cqmUVjfVbqWsxJLUI1Z4FRx1mNQAHP-L0F4EMN09r8FY9bIKeO-0q1eTdP11Nkj_k4BmtaZsTcK_mUygdMqEp9AfyVyA1HYvokcgGCW_Z6DMlVGqlIU4ssEkL9abgl1REHElPhpwBFFBBenOk9iHddD1GddTn6vJbKC3qAaNM5VarjSPu50bVvCrqKNvFixTb5bbdnSz-Qr6n6ACiEimiI1aNOPR2DeKUyWBPaQcU5EAK0ef5IsVJC1yaYDlAcUYIILMDLCD9ebjsy0t9pj_7lvjzUSrbMdSCCdzCqez_MSNxrk1Nu9AecugkBYp3UVUZOIyythVrj6-sVvLZKUutQ",
    "refresh_token":"AQABAAAAAABnfiG-mA6NTae7CdWW7QfdjKGu9-t1scy_TDEmLi4eLQMjJGt_nAoVu6A4oSu1KsRiz8XyQIPKQxSGfbf2FoSK-hm2K8TYzbJuswYusQpJaHUQnSqEvdaCeFuqXHBv84wjFhuanzF9dQZB_Ng5za9xKlUENrNtlq9XuLNVKzxEyeUM7JyxzdY7JiEphWImwgOYf6II316d0Z6-H3oYsFezf4Xsjz-MOBYEov0P64UaB5nJMvDyApV-NWpgklLASfNoSPGb67Bc02aFRZrm4kLk-xTl6eKE6hSo0XU2z2t70stFJDxvNQobnvNHrAmBaHWPAcC3FGwFnBOojpZB2tzG1gLEbmdROVDp8kHEYAwnRK947Py12fJNKExUdN0njmXrKxNZ_fEM33LHW1Tf4kMX_GvNmbWHtBnIyG0w5emb-b54ef5AwV5_tGUeivTCCysgucEc-S7G8Cz0xNJ_BOiM_4bAv9iFmrm9STkltpz0-Tftg8WKmaJiC0xXj6uTf4ZkX79mJJIuuM7XP4ARIcLpkktyg2Iym9jcZqymRkGH2Rm9sxBwC4eeZXM7M5a7TJ-5CqOdfuE3sBPq40RdEWMFLcrAzFvP0VDR8NKHIrPR1AcUruat9DETmTNJukdlJN3O41nWdZOVoJM-uKN3uz2wQ2Ld1z0Mb9_6YfMox9KTJNzRzcL52r4V_y3kB6ekaOZ9wQ3HxGBQ4zFt-2U0mSszIAA",
    "id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiI2MjUzOTFhZi1jNjc1LTQzZTUtOGU0NC1lZGQzZTMwY2ViMTUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8yNjAzOWNjZS00ODlkLTQwMDItODI5My01YjBjNTEzNGVhY2IvIiwiaWF0IjoxNDkzNDIzMTY4LCJuYmYiOjE0OTM0MjMxNjgsImV4cCI6MTQ5MzQ2Njk1MSwiYW1yIjpbInB3ZCJdLCJmYW1pbHlfbmFtZSI6IlRlc3QiLCJnaXZlbl9uYW1lIjoiTmF2eWEiLCJpcGFkZHIiOiIxNjcuMjIwLjEuMTc3IiwibmFtZSI6Ik5hdnlhIFRlc3QiLCJvaWQiOiIxY2Q0YmNhYy1iODA4LTQyM2EtOWUyZi04MjdmYmIxYmI3MzkiLCJwbGF0ZiI6IjMiLCJzdWIiOiJEVXpYbkdKMDJIUk0zRW5pbDFxdjZCakxTNUllQy0tQ2ZpbzRxS1MzNEc4IiwidGlkIjoiMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiIiwidW5pcXVlX25hbWUiOiJuYXZ5YUBkZG9iYWxpYW5vdXRsb29rLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6Im5hdnlhQGRkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tIiwidXRpIjoieEN3ZnpoYS1QMFdKUU9MeENHZ0tBQSIsInZlciI6IjEuMCJ9."
}

Hata yanıtı örneği

Azure AD belirteci uç noktası, Koşullu Erişim ilkesiyle ayarlanmış bir aşağı akış API'sine (örneğin, çok faktörlü kimlik doğrulaması) yönelik bir erişim belirteci almaya çalıştığında bir hata yanıtı döndürür. Orta katman hizmeti, istemci uygulamasının Koşullu Erişim ilkesini karşılamak için kullanıcı etkileşimi sağlayabilmesi için bu hatayı istemci uygulamasına sunmalıdır.

{
    "error":"interaction_required",
    "error_description":"AADSTS50079: Due to a configuration change made by your administrator, or because you moved to a new location, you must enroll in multi-factor authentication to access 'bf8d80f9-9098-4972-b203-500f535113b1'.\r\nTrace ID: b72a68c3-0926-4b8e-bc35-3150069c2800\r\nCorrelation ID: 73d656cf-54b1-4eb2-b429-26d8165a52d7\r\nTimestamp: 2017-05-01 22:43:20Z",
    "error_codes":[50079],
    "timestamp":"2017-05-01 22:43:20Z",
    "trace_id":"b72a68c3-0926-4b8e-bc35-3150069c2800",
    "correlation_id":"73d656cf-54b1-4eb2-b429-26d8165a52d7",
    "claims":"{\"access_token\":{\"polids\":{\"essential\":true,\"values\":[\"9ab03e19-ed42-4168-b6b7-7001fb3e933a\"]}}}"
}

Güvenli kaynağa erişmek için erişim belirtecini kullanma

Orta katman hizmeti, üst bilgideki belirteci ayarlayarak aşağı akış web API'sine kimliği doğrulanmış istekler yapmak için alınan erişim belirtecini Authorization kullanabilir.

Örnek

GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw

OAuth2.0 OBO akışıyla alınan SAML onayları

Bazı OAuth tabanlı web hizmetlerinin etkileşimli olmayan akışlarda SAML onaylarını kabul eden diğer web hizmeti API'lerine erişmesi gerekir. Azure Active Directory, hedef kaynak olarak SAML tabanlı bir web hizmeti kullanan Bir Adına Akışa yanıt olarak SAML onayı sağlayabilir.

Not

Bu, OAuth 2.0 On-Behalf-Of akışının, OAuth2 tabanlı bir uygulamanın SAML belirteçlerini kullanan web hizmeti API'si uç noktalarına erişmesine olanak tanıyan standart olmayan bir uzantıdır.

İpucu

Bir ön uç web uygulamasından SAML korumalı bir web hizmetini çağırdığınızda, API'yi çağırabilir ve kullanıcının mevcut oturumuyla normal bir etkileşimli kimlik doğrulama akışı başlatabilirsiniz. OBO akışını yalnızca hizmet-hizmet çağrısı kullanıcı bağlamı sağlamak için SAML belirteci gerektirdiğinde kullanmanız gerekir.

Paylaşılan gizli diziyle OBO isteği kullanarak SAML belirteci alma

SAML onayı için hizmet-hizmet isteği aşağıdaki parametreleri içerir:

Parametre Tür Description
grant_type gerekli Belirteç isteğinin türü. JWT kullanan bir istek için değerin urn:ietf:params:oauth:grant-type:jwt-bearer olması gerekir.
Iddia gerekli İstekte kullanılan erişim belirtecinin değeri.
client_id gerekli Azure AD kaydı sırasında çağrı hizmetine atanan uygulama kimliği. uygulama kimliğini Azure portal bulmak için Active Directory'yi seçin, dizini seçin ve ardından uygulama adını seçin.
client_secret gerekli Azure AD'da çağrı hizmeti için kaydedilen anahtar. Bu değerin kayıt sırasında belirtilmesi gerekir.
kaynak gerekli Alıcı hizmetin (güvenli kaynak) uygulama kimliği URI'si. Bu, SAML belirtecinin Hedef Kitlesi olacak kaynaktır. uygulama kimliği URI'sini Azure portal bulmak için Active Directory'yi seçin ve dizini seçin. Uygulama adını seçin, Tüm ayarlar'ı ve ardından Özellikler'i seçin.
requested_token_use gerekli İsteğin nasıl işlenmesi gerektiğini belirtir. Adına Akışta değerin on_behalf_of olması gerekir.
requested_token_type gerekli İstenen belirteç türünü belirtir. Değer, erişilen kaynağın gereksinimlerine bağlı olarak urn:ietf:params:oauth:token-type:saml2 veya urn:ietf:params:oauth:token-type:saml1 olabilir.

Yanıt, UTF8 ve Base64url ile kodlanmış bir SAML belirteci içerir.

  • OBO çağrısından kaynaklanan saml onaylama işlemi için SubjectConfirmationData: Hedef uygulama SubjectConfirmationData içinde bir alıcı değeri gerektiriyorsa, değer kaynak uygulaması yapılandırmasında joker karakter olmayan bir Yanıt URL'si olmalıdır.

  • SubjectConfirmationData düğümü: Düğüm, SAML yanıtının parçası olmadığından InResponseTo özniteliği içeremez. SAML belirtecini alan uygulamanın InResponseTo özniteliği olmadan SAML onayını kabul edebilmesi gerekir.

  • Onay: OAuth akışında kullanıcı verilerini içeren bir SAML belirteci almak için onay verilmiş olmalıdır. İzinler ve yönetici onayı alma hakkında bilgi için bkz. Azure Active Directory v1.0 uç noktasında izinler ve onay.

SAML onay ile yanıt

Parametre Açıklama
token_type Belirteç türü değerini gösterir. Azure AD'in desteklediği tek tür Taşıyıcı'dır. Taşıyıcı belirteçler hakkında daha fazla bilgi için bkz. OAuth 2.0 Authorization Framework: Taşıyıcı Belirteç Kullanımı (RFC 6750).
scope Belirteçte verilen erişim kapsamı.
expires_in Erişim belirtecinin geçerli olduğu süre (saniye cinsinden).
expires_on Erişim belirtecinin süresinin dolduğu saat. Tarih, son kullanma tarihine kadar 1970-01-01T0:0:0Z UTC arasındaki saniye sayısı olarak temsil edilir. Bu değer, önbelleğe alınan belirteçlerin yaşam ömrünü belirlemek için kullanılır.
kaynak Alıcı hizmetin (güvenli kaynak) uygulama kimliği URI'si.
access_token SAML onayını döndüren parametre.
refresh_token Yenileme belirteci. Çağıran hizmet, geçerli SAML onay süresi dolduktan sonra başka bir erişim belirteci istemek için bu belirteci kullanabilir.
  • token_type: Taşıyıcı
  • expires_in: 3296
  • ext_expires_in: 0
  • expires_on: 1529627844
  • Kaynak: https://api.contoso.com
  • access_token: <SAML onayı>
  • issued_token_type: urn:ietf:params:oauth:token-type:saml2
  • refresh_token: <Belirteci yenileme>

İstemci sınırlamaları

Joker karakter yanıt URL'lerine sahip genel istemciler OBO akışları için kullanamaz id_token . Ancak gizli istemci, genel istemcide joker karakter yeniden yönlendirme URI'sinin kayıtlı olması durumunda bile örtük izin akışı aracılığıyla alınan erişim belirteçlerini kullanmaya devam edebilir.

Sonraki adımlar

OAuth 2.0 protokolü ve istemci kimlik bilgilerini kullanan hizmet-hizmet kimlik doğrulaması gerçekleştirmenin başka bir yolu hakkında daha fazla bilgi edinin: