MSAL ile Microsoft Graph Kimlik Doğrulaması
Graph Kimlik Doğrulamasına Giriş
Microsoft Graph Outlook, OneDrive ve Teams gibi Microsoft 365 hizmetleri arasında veri erişimi için birleşik bir REST API’dir. Aspose.Email for .NET yerleşik bir IGraphClient yüksek düzeyde, güçlü tipli bir API sunarak Microsoft Graph ile etkileşimi basitleştiren arayüz.
Kullanarak IGraphClient, MSAL ile kimlik doğrulaması yapabilir, ardından aşağıdaki yaygın işlemleri gerçekleştirebilirsiniz:
-
Posta klasörlerini yönetme (listeleme, oluşturma, güncelleme, kopyalama, silme)
-
Mesajlar ve eklerle çalışma (okuma, gönderme, taşıma ve içeriği manipüle etme)
-
Takvim etkinliklerine, kişilere, kategorilere, kurallara, görevlere ve OneNote not defterlerine erişim ve yönetim
Aşağıdaki örnekler, bir şunun nasıl oluşturulup yapılandırılacağını gösterir: GraphClient erişim tokenı ile bir örnek, ardından tipik kullanım senaryoları.
MSAL.NET ile Microsoft Graph’ı Kimlik Doğrula
Aspose.Email for .NET ile Microsoft Graph kullanmak için öncelikle uygulamanızı kimlik doğrulamalısınız. Bu, şunu uygulayarak yapılabilir: ITokenProvider arayüz, erişim tokenlarını şuna sağlar: IGraphClient.
Bu bölüm, token almak için MSAL.NET kurulumunu ve şunun başlatılmasını size gösterir: IGraphClient kimliği doğrulanmış istekleri Microsoft Graph hizmetlerine göndermek için.
Microsoft Kimlik Doğrulama Kütüphanesi (MSAL)
Adım 1: AccessParameters Sınıfını Tanımla
Microsoft 365 kimlik bilgilerinizi ve ilgili yapılandırmayı depolamak için basit bir sınıf oluşturun.
public class AccessParameters
{
public string TenantId { get; init; }
public string ClientId { get; init; }
public string ClientSecret { get; init; }
public string UserId { get; init; }
public Uri Authority => new ($"https://login.microsoftonline.com/{TenantId}");
public string ApiUrl => "https://graph.microsoft.com/.default";
}
Adım 2: MSAL.NET Paketini Kur
Şunu ekleyin Microsoft.Identity.Client Projenize NuGet paketi ekleyin. Erişim tokenları almak için kullanılan Microsoft Authentication Library (MSAL)’ı içerir.
dotnet add package Microsoft.Identity.Client
Adım 3: ITokenProvider Arayüzünü Uygula
Bir oluştur GraphTokenProvider arayüzü uygulayan sınıf ITokenProvider arayüz. Bu sınıf, bir erişim belirteci almak için MSAL.NET kütüphanesini kullanacaktır.
using Microsoft.Identity.Client;
using Microsoft.Identity.Web;
using Aspose.Email.Clients;
public class GraphTokenProvider : ITokenProvider
{
private readonly IConfidentialClientApplication _app;
private readonly string[] _scopes;
private string? _token;
public GraphTokenProvider(AccessParameters accessParams)
{
_app = ConfidentialClientApplicationBuilder.Create(accessParams.ClientId)
.WithClientSecret(accessParams.ClientSecret)
.WithAuthority(accessParams.Authority)
.Build();
_app.AddInMemoryTokenCache();
_scopes = new[] { accessParams.ApiUrl };
}
public void Dispose()
{
throw new NotImplementedException();
}
public OAuthToken GetAccessToken()
{
return GetAccessToken(false);
}
public OAuthToken GetAccessToken(bool ignoreExistingToken)
{
if (!ignoreExistingToken && _token != null)
{
return new OAuthToken(_token);
}
_token = GetAccessTokenAsync().GetAwaiter().GetResult();
return new OAuthToken(_token);
}
private async Task<string?> GetAccessTokenAsync()
{
AuthenticationResult? result;
try
{
result = await _app.AcquireTokenForClient(_scopes)
.ExecuteAsync();
Console.WriteLine("Token acquired");
}
catch (MsalServiceException ex) when (ex.Message.Contains("AADSTS70011"))
{
Console.WriteLine("Scope provided is not supported");
result = null;
}
if (result == null) return null;
_token = result.AccessToken;
return result.AccessToken;
}
Adım 4: ITokenProvider Örneği Oluştur
Bir kez GraphTokenProvider sınıf hazır, uygulama kimlik bilgilerinizi kullanarak bir örnek oluşturabilirsiniz.
var accessParams = new AccessParameters()
{
TenantId = "Your Tenant ID",
ClientId = "Your Client ID",
ClientSecret = "Your Client Secret",
UserId = "User's Object ID"
};
var tokenProvider = new GraphTokenProvider(accessParams);
Adım 5: IGraphClient’i Başlat
Kimliği doğrulanmış bir nesne oluşturmak için token sağlayıcısını kullanın. IGraphClient örneği. Microsoft Graph ile etkileşime başlamak için kaynak türünü ve kimliğini ayarlayın.
using var client = GraphClient.GetClient(tokenProvider, accessParams.TenantId);
client.Resource = ResourceType.Users;
client.ResourceId = accessParams.UserId;
IGraphClient’iniz artık kimliği doğrulandı ve uygulamanız adına Microsoft Graph’a istek göndermeye hazır.
Microsoft Graph’ta GCC High Uç Noktasına Bağlan
Aspose.Email GraphClient Microsoft Graph GCC High uç noktasına bağlanmayı, şunu ayarlayarak destekler: EndPoint özelliği manuel olarak. Özelliği şuna ayarlayın: https://graph.microsoft.us istek yapmadan önce.
Aşağıdaki kod örneği, şunun nasıl yapılandırılacağını gösterir: GraphClient klasörleri listelemek ve mesajları almak için GCC High uç noktasına bağlanmak
client.EndPoint = "https://graph.microsoft.us";
var folders = client.ListFolders();
string folderId = folders.Find(x => x.DisplayName == "Inbox").ItemId;
var msgs = client.ListMessages(folderId);
Microsoft Graph’a Asenkron Kimlik Doğrulama
Kullan Aspose.Email.Clients.Graph.IGraphClientAsync asenkron işlemler gerçekleştirmek için arayüz GraphClient. The GraphClient.GetClientAsync(ITokenProvider, string) ve GraphClient.GetClientAsync(IMultipleServicesTokenProvider, string) yöntemler, asenkron Graph istemcilerini başlatmanıza olanak tanır. Aşağıdaki kod örneği, Azure AD uygulama kimlik bilgileriyle kimliği doğrulanmış bir Microsoft Graph istemcisini yapılandırarak belirli bir kullanıcının posta kutusunda çalıştırmayı gösterir:
var accessParameters = Settings.User1;
var provider = new AzureConfidentialTokenProvider(
accessParameters.TenantId,
accessParameters.ClientId,
accessParameters.ClientSecret);
var client = GraphClient.GetClientAsync(provider, accessParameters.TenantId);
client.Resource = Aspose.Email.Clients.Graph.ResourceType.Users;
client.ResourceId = accessParameters.Username;
client.EndPoint = "https://graph.microsoft.com";