تمرين - تنفيذ المصادقة التفاعلية باستخدام MSAL.NET

مكتمل

في هذا التمرين، ستتعلم كيفية تنفيذ الإجراءات التالية:

  • تسجيل طلب لدى النظام الأساسي للهويات في Microsoft
  • استخدام الفئة PublicClientApplicationBuilder في MSAL.NET
  • الحصول على رمز مميز بشكل تفاعلي في تطبيق وحدة التحكم

المتطلبات الأساسية

  • حساب Azure باشتراك نشط. إذا لم يكن لديك اشتراك بالفعل، فإنه يمكنك التسجيل في تجربة مجانية على https://azure.com/free
  • Visual Studio Code: يمكنك تثبيت Visual Studio Code من .

تسجيل طلب جديد

  1. تسجيل الدخول إلى المدخل: https://portal.azure.com

  2. ابحث عن Azure Active Directory ثم حدده.

  3. ضمن Manage، حدد App registrationsNew registration.

  4. في صفحة "Register an application" التي تظهر، أدخل معلومات التسجيل الخاصة بالتطبيق:

    الحقل القيمة
    الاسم az204appreg
    حدد أنواع الحسابات المدعومة تحديد "Accounts in this organizational directory only"
    Redirect URI (اختياري) حدد Public client/native (نسخة كمبيوتر سطح المكتب والجوال) وأدخل http://localhost في المربع الموجود على اليمين.
  5. اختر ⁧تسجيل⁧.

يقوم Azure Active Directory بتعيين معرف تطبيق (عميل) فريد إلى التطبيق الخاص بك، ويتم نقلك إلى صفحة "Overview" للتطبيق الخاص بك.

إعداد تطبيق وحدة التحكم

  1. قم بتشغيل رمز Visual Studio وقم بفتح محطة عن طريق تحديد "Terminal" ثم "New Terminal".

  2. أنشئ مجلدًا للمشروع وبادر بالتغيير إلى المجلد.

    md az204-auth
    cd az204-auth
    
  3. أنشئ تطبيق وحدة التحكم .NET.

    dotnet new console
    
  4. افتح المجلد az204-auth في Visual Studio Code.

    code . -r
    

إنشاء تطبيق وحدة التحكم

في هذا القسم، يمكنك إضافة الحزم والرمز الضروريين إلى المشروع.

إضافة الحزم واستخدام العبارات

  1. أضف الحزمة Microsoft.Identity.Client إلى المشروع في محطة طرفية في Visual Studio Code.

    dotnet add package Microsoft.Identity.Client
    
  2. افتح "Program.cs" وإضافة عباراتMicrosoft.Identity.Client لتشغيلها وتمكين العمليات غير المتزامنة.

    using System.Threading.Tasks;
    using Microsoft.Identity.Client;
    
  3. تغيير الأسلوب الرئيسي لتمكين غير متزامن.

    public static async Task Main(string[] args)
    

إضافة رمز للمصادقة التفاعلية

  1. تحتاج إلى متغيرين للاحتفاظ بمعرفي التطبيق (العميل) والدليل (المستأجر). يمكنك نسخ هذه القيم من المدخل. أضف التعليمات البرمجية التالية واستبدل قيم السلسلة بالقيم المناسبة من المدخل.

    private const string _clientId = "APPLICATION_CLIENT_ID";
    private const string _tenantId = "DIRECTORY_TENANT_ID";
    
  2. استخدم الفئة PublicClientApplicationBuilder لبناء خارج سياق التخويل.

    var app = PublicClientApplicationBuilder
        .Create(_clientId)
        .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
        .WithRedirectUri("http://localhost")
        .Build();
    
    رمز الوصف
    .Create إنشاء PublicClientApplicationBuilder من معرّف العميل.
    .WithAuthority إضافة المرجع المعروف المُطابق لخادم ADFS. في التعليمات البرمجية، نقوم بتحديد السحابة العامة، ونستخدم المستأجر للتطبيق الذي سجلناه.

الحصول على رمز مميز

عند تسجيل تطبيق az204appreg ، فإنه ينشئ تلقائيا إذن user.read API ل Microsoft Graph. يمكنك استخدام هذا الإذن للحصول على رمز مميز.

  1. تعيين نطاق طلب الإذن لطلب الرمز المميز. أضف التعليمات البرمجية التالية أسفل PublicClientApplicationBuilder.

    string[] scopes = { "user.read" };
    
  2. إضافة تعليمات برمجية لطلب الرمز المميز وكتابة النتيجة إلى وحدة التحكم.

    AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();
    
    Console.WriteLine($"Token:\t{result.AccessToken}");
    

مراجعة الطلب المكتمل

يجب أن تشبه محتويات ملف Program.cs المثال التالي:

using System;
using System.Threading.Tasks;
using Microsoft.Identity.Client;

namespace az204_auth
{
    class Program
    {
        private const string _clientId = "APPLICATION_CLIENT_ID";
        private const string _tenantId = "DIRECTORY_TENANT_ID";

        public static async Task Main(string[] args)
        {
            var app = PublicClientApplicationBuilder
                .Create(_clientId)
                .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
                .WithRedirectUri("http://localhost")
                .Build(); 
            string[] scopes = { "user.read" };
            AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();

            Console.WriteLine($"Token:\t{result.AccessToken}");
        }
    }
}

شغّل التطبيق

  1. في محطة Visual Studio Code الطرفية، قم بتشغيل dotnet build للتحقق من وجود أخطاء، ثم dotnet run لتشغيل التطبيق.

  2. يفتح التطبيق المستعرض الافتراضي الذي يطالبك بتحديد الحساب الذي تريد المصادقة عليه. إذا كانت هناك حسابات متعددة مُدرجة، فحدد الحساب المُقترِن بالمستأجر المُستخدَم في التطبيق.

  3. إذا كانت هذه هي المرة الأولى التي تقوم فيها بالمصادقة على التطبيق المسجل، فستتلقى إعلاما يطلب منك الأذونات الموافقة على التطبيق لقراءة البيانات المقترنة بحسابك. حدد قبول.

    حدد **Accept** لمنح الإذن.

  4. يجب أن تشاهد نتائج مشابهة للمثال أدناه في وحدة التحكم.

    Token:  eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....