İ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.
- İstemci uygulaması, Azure AD belirteci verme uç noktasında kimlik doğrulaması yapar ve erişim belirteci isteğinde bulunur.
- Azure AD belirteci verme uç noktası erişim belirtecini döndürür.
- Erişim belirteci güvenli kaynakta kimlik doğrulaması yapmak için kullanılır.
- 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