MSAL के साथ Microsoft Graph प्रमाणीकरण
Graph प्रमाणीकरण का परिचय
Microsoft Graph Microsoft 365 सेवाओं जैसे Outlook, OneDrive, और Teams में डेटा तक पहुंचने के लिए एकीकृत REST API है। Aspose.Email for .NET एक अंतर्निहित … प्रदान करता है। IGraphClient इंटरफ़ेस जो उच्च‑स्तरीय, टाइप‑सुरक्षित API प्रदान करके Microsoft Graph के साथ इंटरैक्शन को सरल बनाता है।
उपयोग करके IGraphClient, आप MSAL के माध्यम से प्रमाणित हो सकते हैं, फिर सामान्य ऑपरेशन्स जैसे कर सकते हैं:
-
मेल फ़ोल्डरों का प्रबंधन (सूची, निर्माण, अद्यतन, कॉपी, हटाना)
-
संदेशों और संलग्नकों के साथ काम करना (पढ़ना, भेजना, स्थानांतरित करना और सामग्री को संशोधित करना)
-
कैलेंडर इवेंट्स, संपर्क, श्रेणियों, नियमों, कार्यों और OneNote नोटबुक्स तक पहुंचना और उनका प्रबंधन करना।
निम्नलिखित उदाहरण दर्शाते हैं कि कैसे एक बनाया और कॉन्फ़िगर किया जाए। GraphClient इंस्टेंस को एक्सेस टोकन के साथ, उसके बाद सामान्य उपयोग परिदृश्यों के साथ।
MSAL.NET के साथ Microsoft Graph को प्रमाणित करें
Aspose.Email for .NET के साथ Microsoft Graph का उपयोग करने के लिए, आपको पहले अपने एप्लिकेशन को प्रमाणित करना होगा। इसे लागू करके किया जा सकता है। ITokenProvider इंटरफ़ेस, जो एक्सेस टोकन प्रदान करता है IGraphClient.
यह अनुभाग आपको MSAL.NET सेटअप करने, टोकन प्राप्त करने और इसे इनिशियलाइज़ करने के बारे में मार्गदर्शन करता है। IGraphClient Microsoft Graph सेवाओं को प्रमाणित अनुरोध भेजने के लिए।
Microsoft Authentication Library (MSAL)
चरण 1: AccessParameters क्लास को परिभाषित करें
अपने Microsoft 365 क्रेडेंशियल्स और संबंधित कॉन्फ़िगरेशन संग्रहीत करने के लिए एक सरल क्लास बनाएं।
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";
}
चरण 2: MSAL.NET पैकेज इंस्टॉल करें
जोड़ें Microsoft.Identity.Client आपके प्रोजेक्ट में NuGet पैकेज जोड़ें। इसमें Microsoft Authentication Library (MSAL) शामिल है, जिसका उपयोग एक्सेस टोकन प्राप्त करने के लिए किया जाता है।
dotnet add package Microsoft.Identity.Client
चरण 3: ITokenProvider इंटरफ़ेस लागू करें
एक बनाएं GraphTokenProvider क्लास जो लागू करती है ITokenProvider इंटरफ़ेस। यह क्लास एक्सेस टोकन प्राप्त करने के लिए MSAL.NET लाइब्रेरी का उपयोग करेगी।
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;
}
चरण 4: ITokenProvider इंस्टेंस बनाएं
जब आपका GraphTokenProvider क्लास तैयार है, आप इसे अपने एप्लिकेशन क्रेडेंशियल्स का उपयोग करके इंस्टैंसिएट कर सकते हैं।
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);
चरण 5: IGraphClient को इनिशियलाइज़ करें
एक प्रमाणित बनाने के लिए टोकन प्रोवाइडर का उपयोग करें IGraphClient इंस्टेंस। Microsoft Graph के साथ इंटरैक्ट करने के लिए रिसोर्स टाइप और आईडी सेट करें।
using var client = GraphClient.GetClient(tokenProvider, accessParams.TenantId);
client.Resource = ResourceType.Users;
client.ResourceId = accessParams.UserId;
आपका IGraphClient अब प्रमाणित हो गया है और आपके एप्लिकेशन की ओर से Microsoft Graph को अनुरोध भेजने के लिए तैयार है।
Microsoft Graph में GCC High एंडपॉइंट से कनेक्ट करें
Aspose.Email GraphClient Microsoft Graph GCC High एंडपॉइंट से कनेक्ट करने का समर्थन करता है, सेट करके EndPoint प्रॉपर्टी को मैन्युअली सेट करें। प्रॉपर्टी को इस मान पर सेट करें https://graph.microsoft.us अनुरोध करने से पहले।
निम्न कोड उदाहरण दिखाता है कि कैसे GraphClient फ़ोल्डर सूचीबद्ध करने और संदेश प्राप्त करने के लिए GCC High एंडपॉइंट से कनेक्ट करने हेतु।
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 के लिए असिंक्रोनस प्रमाणीकरण
उपयोग करें Aspose.Email.Clients.Graph.IGraphClientAsync असिंक्रोनस ऑपरेशन्स करने के लिए इंटरफ़ेस GraphClient. यह GraphClient.GetClientAsync(ITokenProvider, string) और GraphClient.GetClientAsync(IMultipleServicesTokenProvider, string) विधियां आपको असिंक्रोनस Graph क्लाइंट्स इनिशियलाइज़ करने देती हैं। निम्नलिखित कोड नमूना दर्शाता है कि कैसे Azure AD एप्लिकेशन क्रेडेंशियल्स के साथ एक प्रमाणित Microsoft Graph क्लाइंट कॉन्फ़िगर किया जाए ताकि वह एक विशिष्ट उपयोगकर्ता के मेलबॉक्स पर कार्य कर सके:
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";