İstemci kimlik bilgilerini (paylaşılan gizli dizi veya sertifika) kullanarak 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 İstemci Kimlik Bilgileri Verme Akışı, bir web hizmetinin (gizli istemci) başka bir web hizmetini çağırırken kimlik doğrulaması yapmak için kullanıcının kimliğine bürünmek yerine kendi kimlik bilgilerini kullanmasına izin verir. Bu senaryoda istemci genellikle bir orta katman web hizmeti, bir daemon hizmeti veya web sitesidir. Daha yüksek bir güvence düzeyi için Azure AD, çağıran hizmetin kimlik bilgisi olarak bir sertifika (paylaşılan gizli dizi yerine) kullanmasına da izin verir.

İstemci kimlik bilgileri akış diyagramı verme

Aşağıdaki diyagramda, istemci kimlik bilgileri verme akışının Azure Active Directory'de (Azure AD) nasıl çalıştığı açıklanmaktadır.

OAuth2.0 İstemci Kimlik Bilgileri Verme Akışı

  1. İstemci uygulaması, Azure AD belirteci verme uç noktasında kimlik doğrulaması yapar ve erişim belirteci isteğinde bulunur.
  2. Azure AD belirteci verme uç noktası erişim belirtecini döndürür.
  3. Erişim belirteci güvenli kaynakta kimlik doğrulaması yapmak için kullanılır.
  4. Güvenli kaynaktan alınan veriler istemci uygulamasına döndürülür.

Hizmetleri Azure AD'a kaydetme

Hem çağrı hizmetini hem de alma hizmetini Azure Active Directory'ye (Azure AD) kaydedin. Ayrıntılı yönergeler için bkz. Uygulamaları Azure Active Directory ile tümleştirme.

Erişim Belirteci İsteme

Erişim belirteci istemek için kiracıya özgü Azure AD uç noktasına bir HTTP POST kullanın.

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

Hizmet-hizmet erişim belirteci isteği

İstemci uygulamasının paylaşılan bir gizli diziyle mi yoksa bir sertifikayla mı güvenli hale getirileceğine bağlı olarak iki durum vardı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 İstenen verme türünü belirtir. İstemci Kimlik Bilgileri Verme akışında değerin client_credentials olması gerekir.
client_id gerekli Çağıran web hizmetinin Azure AD istemci kimliğini belirtir. Çağıran uygulamanın istemci kimliğini bulmak için, Azure portalAzure Active Directory'ye tıklayın, Uygulama kayıtları'a tıklayın, uygulamaya tıklayın. client_id , Uygulama Kimliği'dir
client_secret gerekli Azure AD'da çağrı yapan web hizmeti veya daemon uygulaması için kayıtlı bir anahtar girin. Anahtar oluşturmak için, Azure portal Azure Active Directory'ye tıklayın, Uygulama kayıtları tıklayın, uygulamaya tıklayın, Ayarlar'a tıklayın, Anahtarlar'a tıklayın ve anahtar ekleyin. Bu gizli diziyi sağlarken URL ile kodlayın.
kaynak gerekli Alıcı web hizmetinin Uygulama Kimliği URI'sini girin. Uygulama Kimliği URI'sini bulmak için, Azure portal Azure Active Directory'ye tıklayın, Uygulama kayıtları'a tıklayın, hizmet uygulamasına ve ardından Ayarlar ve Özellikler'e tıklayın.

Örnek

Aşağıdaki HTTP POST, web hizmeti için bir erişim belirteci istemektedir https://service.contoso.com/ . , client_id erişim belirtecini isteyen web hizmetini tanımlar.

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

grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F

İ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 İstenen yanıt türünü belirtir. İstemci Kimlik Bilgileri Verme akışında değerin client_credentials olması gerekir.
client_id gerekli Çağıran web hizmetinin Azure AD istemci kimliğini belirtir. Çağıran uygulamanın istemci kimliğini bulmak için, Azure portalAzure Active Directory'ye tıklayın, Uygulama kayıtları'a tıklayın, uygulamaya tıklayın. client_id , Uygulama Kimliği'dir
client_assertion_type gerekli Değer şu olmalıdır: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion gerekli Uygulamanızın kimlik bilgileri olarak kaydettiğiniz sertifikayı oluşturmanız ve bu sertifikayla imzalamanız gereken bir onay (JSON Web Belirteci). Sertifikanızı kaydetmeyi ve onaylama biçimini öğrenmek için sertifika kimlik bilgileri hakkında bilgi edinin.
kaynak gerekli Alıcı web hizmetinin Uygulama Kimliği URI'sini girin. Uygulama Kimliği URI'sini bulmak için, Azure portal Azure Active Directory'ye tıklayın, Uygulama kayıtları'a tıklayın, hizmet uygulamasına ve ardından Ayarlar ve Özellikler'e tıklayın.

Client_secret parametresinin iki parametreyle değiştirilmesi dışında paylaşılan gizli dizi tarafından yapılan istek durumundaki parametrelerin neredeyse aynı olduğuna dikkat edin: bir client_assertion_type ve client_assertion.

Örnek

Aşağıdaki HTTP POST, web hizmeti için sertifika içeren https://service.contoso.com/ bir erişim belirteci istemektedir. , client_id erişim belirtecini isteyen web hizmetini tanımlar.

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

resource=https%3A%2F%contoso.onmicrosoft.com%2Ffc7664b4-cdd6-43e1-9365-c2e1c4e1b3bf&client_id=97e0a5b7-d745-40b6-94fe-5f77d35c6e05&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg&grant_type=client_credentials

Hizmet-Hizmet Erişim Belirteci Yanıtı

Başarılı yanıtı, aşağıdaki parametreleri içeren bir JSON OAuth 2.0 yanıtı içerir:

Parametre Açıklama
access_token İstenen erişim belirteci. Çağıran web hizmeti, alıcı web hizmetinde kimlik doğrulaması yapmak için bu belirteci kullanabilir.
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).
expires_in Erişim belirtecinin geçerli olduğu süre (saniye).
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.
not_before Erişim belirtecinin kullanılabilir hale geldiği zaman. Tarih, belirteç için geçerlilik süresine kadar 1970-01-01T0:0:0Z UTC arasındaki saniye sayısı olarak temsil edilir.
kaynak Alıcı web hizmetinin Uygulama Kimliği URI'si.

Yanıt örneği

Aşağıdaki örnekte, web hizmetine erişim belirteci isteğine verilen başarı yanıtı gösterilmektedir.

{
"access_token":"eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}

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

Hizmet, ü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

Ayrıca bkz.