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 | Azure DevOps Server | Azure DevOps Server 2022
Bu makale yalnızca web uzantıları için kimlik doğrulaması ve güvenlikle ilgili olup pipelines görev uzantıları veya hizmet uç noktası uzantılarıyla ilgili değildir. Bu görevler için Azure Service Bus'ta Yayımla Görevini kullanabilirsiniz.
Uzantınızdan REST API'lerini çağırma
Çoğu uzantının geçerli kullanıcı adına Azure DevOps REST API'lerini çağırması gerekir.
Sağlanan
JavaScript REST clientsöğesini kullanıyorsanız kimlik doğrulaması sizin için otomatik olarak işlenir. Bu istemciler çekirdek SDK'dan erişim belirteci ister ve isteğin Yetkilendirme üst bilgisinde ayarlar.Sağlanan istemcileri kullanmıyorsanız,
Core SDK'den bir belirteç istemeniz ve isteğinizin Yetkilendirme başlığına ayarlamanız gerekir.import * as SDK from "azure-devops-extension-sdk"; import { getAccessToken } from "azure-devops-extension-sdk"; SDK.init(); getAccessToken().then((token) => { // Format the auth header const authHeader = `Bearer ${token}`; // Add token as an Authorization header to your request console.log(authHeader); });
Tavsiye
Azure DevOps Uzantı SDK'sını kullanarak uzantı geliştirmeyle ilgili en yeni belgelerimize göz atın.
Hizmetinize gelen istekleri kimlik doğrulamasından geçirin.
Yaygın bir senaryo, bir uzantıdan arka uç hizmetine çağrı yapmaktır. Bu çağrıların Azure DevOps'ta çalışan uzantınızdan geldiğini doğrulamak ve geçerli kullanıcının ve diğer bağlam bilgilerinin kimliğini doğrulamak için uzantınıza özel bir belirteç türü sağlanır. Bu belirteç, çağıran hakkındaki bilgileri ve isteğin uzantınızdan kaynaklandığından emin olmak için doğrulayabileceğiniz bir imza içerir.
Uzantınızın anahtarını alma
Uzantı yayımlandığında oluşturulan uzantınızın benzersiz anahtarı, uzantınızdan yapılan isteklerin orijinalliğini doğrulamak için kullanılabilir.
Bu anahtarı almak için uzantı yönetimi portalına gidin, yayımlanmış bir uzantıya sağ tıklayın ve sertifika'yı seçin.
Uyarı
Uzantıdaki kapsam değişiklikleri sertifikanın değişmesine neden olur. Kapsamda değişiklik yaparsanız yeni bir uzantı anahtarına ihtiyacınız vardır.
Hizmetinize sağlamak için bir belirteç oluşturun
Çekirdek SDK
getAppTokenyöntemi, çözümlendiğinde uzantınızın sertifikasıyla imzalanan bir belirteç içerdiğine dair bir söz döndürür.import * as SDK from "azure-devops-extension-sdk"; import { getAppToken } from "azure-devops-extension-sdk"; SDK.init(); getAppToken().then((token) => { // Add token to your request console.log(token); });Bu belirteci hizmetinize sorgu parametresi veya istek üst bilgisi olarak geçirin.
Belirteci ayrıştır ve doğrula
Burada belirteci ayrıştırma örneği verilmiştir. İlk olarak, yayımcı sayfanızdan uzantınızın gizli dizisini indirin ve depolayın. Bu bilgi uygulamanız için erişilebilir olmalıdır.
.NET Framework
Derlenecek örneği almak için bir başvuru eklemek için aşağıdaki görevi yapın.
NuGet Paket Yöneticisi'ni açın ve System.IdentityModel.Tokens.Jwt öğesine bir başvuru ekleyin. Bu örnek, bu paketin 6.8.0 sürümüyle oluşturulmuştu.
using System;
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Tokens;
namespace TokenSample
{
class Program
{
static void Main(string[] args)
{
string secret = ""; // Load your extension's secret
string issuedToken = ""; // Token you are validating
var validationParameters = new TokenValidationParameters()
{
IssuerSigningKey = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(secret)),
ValidateIssuer = false,
RequireSignedTokens = true,
RequireExpirationTime = true,
ValidateLifetime = true,
ValidateAudience = false,
ValidateActor = false
};
SecurityToken token = null;
var tokenHandler = new JwtSecurityTokenHandler();
var principal = tokenHandler.ValidateToken(issuedToken, validationParameters, out token);
// Use the principal object as needed
Console.WriteLine(principal.Identity.Name);
}
}
}
.NET Core - WebAPI
Bu örneği derlemek için bir başvuru eklemek için aşağıdaki görevi yapın.
NuGet Paket Yöneticisi'ni açın ve System.IdentityModel.Tokens.Jwt öğesine bir başvuru ekleyin. Bu örnek, bu paketin 5.1.4 sürümüyle oluşturulmuştu.
Startup.cs
using System.Text;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Tokens;
namespace TokenSample.Core.API
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
string _secret = "ey9asfasdmax..<the secret key downloaded from the Azure DevOps Services publisher page>.9faf7eh";
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer((o) =>
{
o.TokenValidationParameters = new TokenValidationParameters()
{
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_secret)),
ValidateIssuer = false,
ValidateAudience = false,
ValidateActor = false,
RequireSignedTokens = true,
RequireExpirationTime = true,
ValidateLifetime = true
};
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseAuthorization();
app.UseRouting();
app.UseStaticFiles();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
API Denetleyicileriniz:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
[Route("api/[controller]")]
[Authorize]
public class SampleLogicController : ControllerBase
{
// ...
}