Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services
Önemli
Azure DevOps OAuth, 2026'da kullanımdan kaldırılıyor. Bu bilgiler yalnızca mevcut Azure DevOps OAuth uygulamalarına yöneliktir. Yeni uygulamalar oluşturmak için Microsoft Entra ID OAuth kullanarak Azure DevOps ile tümleştirin. Nisan 2025'den itibaren yeni Azure DevOps OAuth uygulamalarını kabul etmeyi durduracağız. Blog gönderimizden daha fazla bilgi edinin.
Azure DevOps, OAuth 2.0 uygulamaları için bir kimlik sağlayıcısıdır. OAuth 2.0 uygulamamız, geliştiricilerin uygulamalarını kullanıcılar için yetkilendirmesine ve Azure DevOps kaynakları için erişim belirteçleri almasına olanak tanır.
Azure DevOps OAuth'u kullanmaya başlama
1. Uygulamanızı kaydetme
Uygulamanızı kaydetmek için adresine
https://app.vsaex.visualstudio.com/app/register
gidin.Uygulamanızın ihtiyaç duyduğu kapsamları seçin ve uygulamanızı yetkilerken aynı kapsamları kullanın. Uygulamanızı önizleme API'lerini kullanarak kaydettiyseniz, kullandığınız kapsamlar artık kullanım dışı olduğundan yeniden kaydedin.
Uygulama oluştur'u seçin.
Uygulama ayarları sayfası görüntülenir.
Azure DevOps Services yetkilendirme onay sayfasını kullanıcınıza sunduğunda şirketinizin adını, uygulama adını ve açıklamalarını kullanır. Ayrıca şirketinizin web sitesi, uygulama web sitesi ve hizmet koşulları ile gizlilik bildirimleri için URL'leri kullanır.
Azure DevOps Services bir kullanıcının yetkilendirmesini istediğinde ve kullanıcı bunu onayladığında, kullanıcının tarayıcısı yetkilendirme koduyla yetkilendirme geri çağırma URL'nize yönlendirilir. Kodu uygulamaya geri aktarmak ve uygulamanızda kayıtlı URL ile tam olarak eşleştirmek için geri arama URL'si güvenli bir bağlantı (https) olmalıdır. Aksi takdirde, kullanıcıdan uygulamanıza yetkilendirme vermesini isteyen bir sayfa yerine 400 hata sayfası görüntülenir.
Bir kullanıcının uygulamanızı kuruluşuna erişmesi için yetkilendirmesini istediğinizde yetkilendirme URL'sini çağırın ve uygulama kimliğinizi ve yetkili kapsamlarınızı geçirin. Azure DevOps Services REST API'sini çağırmak için erişim belirteci almak istediğinizde erişim belirteci URL'sini çağırın.
Kaydettiğiniz her uygulamanın ayarlarına profilinizden https://app.vssps.visualstudio.com/profile/view
ulaşabilirsiniz.
2. Uygulamanızı yetkilendirme
- Kullanıcınız uygulamanıza kuruluşuna erişim yetkisi vermemişse yetkilendirme URL'sini çağırın. Kullanıcı yetkilendirmeyi onaylarsa sizi bir yetkilendirme koduyla geri çağırır.
https://app.vssps.visualstudio.com/oauth2/authorize
?client_id={app ID}
&response_type={Assertion}
&state={state}
&scope={scope}
&redirect_uri={callback URL}
Parametre | Türü | Notlar |
---|---|---|
müşteri_kimliği | GUID | Kayıtlıyken uygulamanıza atanan kimlik. |
yanıt_tipi | Dize | Assertion |
devlet | Dize | Herhangi bir değer olabilir. Genellikle, geri çağırmayı ilişkili yetkilendirme isteğiyle ilişkilendiren oluşturulan bir dize değeridir. |
kapsam | Dize | Uygulamaya kayıtlı kapsamlar. Boşlukla ayrılmış. Kullanılabilir kapsamlara bakın. |
yönlendirme_uri | URL | Uygulamanız için geri arama URL'si. Uygulamayla kaydedilen URL ile tam olarak eşleşmelidir. |
- Kullanıcıyı Azure DevOps Services yetkilendirme uç noktasına götüren bir bağlantı veya düğme ekleyin:
https://app.vssps.visualstudio.com/oauth2/authorize
?client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=Assertion
&state=User1
&scope=vso.work%20vso.code_write
&redirect_uri=https://fabrikam.azurewebsites.net/myapp/oauth-callback
Azure DevOps Services, kullanıcıdan uygulamanızı yetkilendirmesini ister.
Kullanıcının kabul ettigini varsayarsak Azure DevOps Services, kısa süreli yetkilendirme kodu ve yetkilendirme URL'sinde sağlanan durum değeri de dahil olmak üzere kullanıcının tarayıcısını geri çağırma URL'nize yönlendirir:
https://fabrikam.azurewebsites.net/myapp/oauth-callback
?code={authorization code}
&state=User1
3. Kullanıcı için erişim ve yenileme belirteci alma
Kullanıcı için erişim belirteci (ve yenileme belirteci) istemek için yetkilendirme kodunu kullanın. Hizmetinizin Azure DevOps Services'e hizmet-hizmet HTTP isteğinde bulunması gerekir.
URL - uygulamayı yetkilendirme
POST https://app.vssps.visualstudio.com/oauth2/token
HTTP isteği üst bilgileri - uygulamayı yetkilendirme
Başlık | Değer |
---|---|
İçerik Türü | application/x-www-form-urlencoded |
Content-Type: application/x-www-form-urlencoded
HTTP isteği gövdesi - uygulamayı yetkilendirme
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}
Önceki örnek istek gövdesindeki yer tutucu değerlerini değiştirin:
- {0}: Uygulama kaydedildiğinde alınan URL kodlu istemci gizli anahtarı
-
{1}: Sorgu parametresi aracılığıyla
code
geri çağırma URL'nize sağlanan URL kodlanmış "kod" - {2}: uygulamaya kayıtlı geri çağırma URL'si
İstek gövdesini oluşturmak için C# örneği - uygulamayı yetkilendirme
public string GenerateRequestPostData(string appSecret, string authCode, string callbackUrl)
{
return String.Format("client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}",
HttpUtility.UrlEncode(appSecret),
HttpUtility.UrlEncode(authCode),
callbackUrl
);
}
Yanıt - uygulamayı yetkilendirme
{
"access_token": { access token for the user },
"token_type": { type of token },
"expires_in": { time in seconds that the token remains valid },
"refresh_token": { refresh token to use to acquire a new access token }
}
Not
Uygulamanızın kullanıcıdan yeniden yetkilendirmesini istemesine gerek olmaması için refresh_token güvenli bir şekilde kalıcı hale getirmek. Erişim belirteçlerinin süresi hızla sona erer ve saklanmamalıdır.
4. Erişim belirtecini kullanın
Erişim belirtecini kullanmak için HTTP isteğinizin Yetkilendirme üst bilgisine taşıyıcı belirteç olarak ekleyin:
Authorization: Bearer {access_token}
Örneğin, bir proje için son derlemeleri almak için HTTP isteği:
GET https://dev.azure.com/myaccount/myproject/_apis/build-release/builds?api-version=3.0
Authorization: Bearer {access_token}
5. Süresi dolan erişim belirtecini yenileme
Kullanıcının erişim belirtecinin süresi dolarsa, yetkilendirme akışında edindikleri yenileme belirtecini kullanarak yeni bir erişim belirteci alabilirsiniz. Bu, bir erişim ve yenileme belirtecinin yetkilendirme kodunun değişmesine yönelik özgün işlem gibidir.
URL - yenileme belirteci
POST https://app.vssps.visualstudio.com/oauth2/token
HTTP istek başlıkları - yenileme belirteci
Başlık | Değer |
---|---|
İçerik türü | application/x-www-form-urlencoded |
İçerik uzunluğu | İstek gövdesinin hesaplanan dize uzunluğu (aşağıdaki örne bakın) |
Content-Type: application/x-www-form-urlencoded
Content-Length: 1654
HTTP isteği gövdesi - yenileme belirteci
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=refresh_token&assertion={1}&redirect_uri={2}
Önceki örnek istek gövdesindeki yer tutucu değerlerini değiştirin:
- {0}: Uygulama kaydedildiğinde alınan URL kodlu istemci gizli anahtarı
- {1}: Kullanıcı için URL ile kodlanmış yenileme belirteci
- {2}: uygulamaya kayıtlı geri çağırma URL'si
Yanıt - yenileme belirteci
{
"access_token": { access token for this user },
"token_type": { type of token },
"expires_in": { time in seconds that the token remains valid },
"refresh_token": { new refresh token to use when the token has timed out }
}
Not
Kullanıcı için yeni bir yenileme belirteci verilir. Bu yeni belirteci saklayın ve kullanıcı için yeni bir erişim belirteci almanız gerektiğinde kullanın.
Örnekler
C# OAuth GitHub Örneğimizde Azure DevOps Services REST API'lerini çağırmak için OAuth uygulayan bir C# örneği bulabilirsiniz.
İstemci gizli anahtarını yeniden oluştur
Uygulama gizliliklerinin süresi her 60 günde düzenli olarak dolar (Mart 2025 itibarıyla). İstediğiniz zaman iki sırrınız olabilir. Uygulama gizli anahtarınızın süresi dolmak üzereyken, onu yeni bir uygulama gizli anahtarıyla değiştirerek erişim belirteçleri oluşturmaya, kullanmaya ve belirteçleri yenilemeye devam edin. Bu işlem Visual Studio profilindeki uygulamanın kayıt sayfasından veya Kayıt Gizli Dizisi API'leri aracılığıyla yapılabilir. API'leri kullanmak için kapsamıyla bir vso.tokens
Entra erişim belirteci kullanmanız gerekir.
- "Gizli Dizi 2" için "Gizli Dizi Oluştur" seçeneğini belirleyerek ikincil bir gizli dizi oluşturun. ( Kayıt Gizli Anahtarı Oluşturma API'sini kullanın.)
- Ardından, bu eylemi tamamlamak istediğinizi onaylayın.
Gizli Dizi #1'in süresi dolmadan önce uygulamanızı yeni Gizli Dizi #2'yi kullanacak şekilde güncelleştirin. İki gizliyi aynı anda yöneterek, süresi dolan gizliler nedeniyle kullanıcılarınızda bir kapalı kalma süresi oluşmaz.
Gizli dizi #1 doğal olarak sona erer ve önceki tüm belirteçler çalışmaz.
Süresi dolmak üzere olan bir Gizli Dizi #2'yi döndürme zamanı geldiğinde, Gizli Dizi #1'i yeniden oluşturarak ve 2. Gizli Dizi yerine yeniden oluşturulan Gizli Dizi #1'i kullanarak bu işlemi yineleyebilirsiniz. (Kayıt Gizli Anahtarı Döndürme API'sini kullanın.)
Gizli bilgiler sızdırılırsa, "Gizli Bilgiyi Yeniden Oluştur" seçeneğine tıklayarak gizli bilgiyi hızla iptal edebilirsiniz. Yeniden oluşturmak istediğinizi onayladıktan sonra, önceki uygulama güvenlik anahtarı geçersiz olur ve bu anahtarla oluşturulmuş tüm eski belirteçler de çalışmayı durdurur. Yeniden oluşturma yoluyla sızdırılan gizli anahtarı iptal ederken kapalı kalma süresini en aza indirmek için çiftli anahtar döndürme yöntemini kullanın.
Uygulamanızı silme
Artık uygulamanız gerekmiyorsa profilinizden silin.
Profilinize şu konumda gidin:
https://app.vssps.visualstudio.com/profile/view
.Kenar çubuğunda adınızın altındaki açılan menüden seçim yaparak doğru kiracının sayfasında olduğunuzdan emin olun.
Sol kenar çubuğundaki Uygulamalar ve hizmetler üst bilgisinin altında uygulamayı bulun.
uygulama kayıt sayfasında "Sil"i seçin. Silme işleminizi onaylamak için bir pencere görünür.
Uygulama kaydını sildiğinizde uygulama çalışmaya son verir ve bu uygulama için yeni belirteçleri basmayı ya da basılmış belirteçleri kabul etmeyi durdururuz.
Sık sorulan sorular (SSS)
S: Cep telefonu uygulamamla OAuth kullanabilir miyim?
Y: Hayır. Azure DevOps Services yalnızca web sunucusu akışını desteklediğinden, OAuth'u uygulamanın bir yolu yoktur çünkü uygulama sırrınızı güvenli bir şekilde depolayamazsınız.
S: Kodumda hangi hataları veya özel koşulları işlemem gerekiyor?
Y: Aşağıdaki koşulları işlediğinize emin olun:
- Kullanıcınız uygulama erişiminizi reddederse, hiçbir yetkilendirme kodu döndürülemez. Reddetme denetimi yapmadan yetkilendirme kodunu kullanmayın.
- Kullanıcınız uygulamanızın yetkilendirmesini iptal ederse erişim belirteci artık geçerli olmaz. Uygulamanız verilere erişmek için belirteci kullandığında 401 hatası döndürülüyor. Yetkilendirmeyi yeniden isteyin.
S: Web uygulamamda yerel olarak hata ayıklamak istiyorum. Uygulamamı kaydederken geri çağırma URL'si için localhost kullanabilir miyim?
Y: Evet. Azure DevOps Services artık geri arama URL'nizde localhost'a izin veriyor. Uygulamanızı kaydederken geri arama URL'nizin başlangıcı olarak kullandığınızdan https://localhost
emin olun.
S: Erişim belirteci almaya çalıştığımda HTTP 400 hatası alıyorum. Sorun ne olabilir?
Y: İçerik türünü istek üst bilginizde application/x-www-form-urlencoded olarak ayarladığınızdan denetleyin.
S: OAuth tabanlı erişim belirteci kullandığımda HTTP 401 hatası alıyorum, ancak aynı kapsama sahip bir PAT düzgün çalışıyor. Neden?
A: Kuruluşunuzun yöneticisinin OAuth aracılığıyla üçüncü taraf uygulama erişimini devre dışı bırakmadığını doğrulayın TF400813: The user "<GUID>" is not authorized to access this resource.