عملية المصادقة الخاصة بـ Azure SignalR Service

يستمر هذا البرنامج التعليمي على تطبيق غرفة المحادثة المقدم في إنشاء غرفة محادثة باستخدام SignalR Service. أكمل هذا التشغيل السريع أولا لإعداد غرفة المحادثة.

في هذا البرنامج التعليمي، تعرف على كيفية إنشاء أسلوب المصادقة ودمجه باستخدام Microsoft Azure SignalR Service.

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

يوفر GitHub واجهات برمجة تطبيقات المصادقة استنادا إلى بروتوكول شائع قياسي في الصناعة يسمى OAuth. تسمح واجهات برمجة التطبيقات هذه لتطبيقات الجهات الخارجية بمصادقة حسابات GitHub. في هذا البرنامج التعليمي، يمكنك استخدام واجهات برمجة التطبيقات هذه لتنفيذ المصادقة من خلال حساب GitHub قبل السماح بتسجيل دخول العميل إلى تطبيق غرفة المحادثة. بعد مصادقة حساب GitHub، ستتم إضافة معلومات الحساب كملف تعريف ارتباط لاستخدامه من قبل عميل الويب للمصادقة.

لمزيد من المعلومات حول واجهات برمجة تطبيقات مصادقة OAuth المقدمة من خلال GitHub، راجع أساسيات المصادقة.

يمكنك استخدام أي محرر تعليمات برمجية لإكمال الخطوات الواردة في التشغيل السريع. ومع ذلك، يعد Visual Studio Code خيارا ممتازا متوفرا على أنظمة Windows وmacOS وLinux الأساسية.

يُعد كود البرنامج التعليمي مُتاح للتحميل في مستودع AzureSignalR-samples GitHub.

OAuth Complete hosted in Azure

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

  • تسجيل تطبيق OAuth جديد باستخدام حساب GitHub الخاص بك
  • إضافة وحدة تحكم مصادقة لدعم مصادقة GitHub
  • نشر تطبيق الويب ASP.NET Core إلى Azure

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

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

لإكمال هذا البرنامج التعليمي، ستحتاج إلى المتطلبات الأساسية التالية:

إنشاء تطبيق OAuth

  1. افتح مستعرض ويب وانتقل إلى https://github.com حسابك وسجل الدخول إليه.

  2. لحسابك، انتقل إلى الإعدادات> إعدادات المطور تطبيقات>OAuth، وحدد تطبيق OAuth جديد ضمن تطبيقات OAuth.

  3. استخدم الإعدادات التالية لتطبيق OAuth الجديد، ثم حدد تسجيل التطبيق:

    اسم الإعداد القيم المقترحة ‏‏الوصف
    اسم التطبيق دردشة Azure SignalR يجب أن يكون مستخدم GitHub قادرا على التعرف على التطبيق الذي يصادق عليه والثقة به.
    عنوان URL للصفحة الرئيسية https://localhost:5001
    وصف التطبيق عينة غرفة محادثة باستخدام خدمة Azure SignalR مع مصادقة GitHub وصف مفيد للتطبيق الذي يساعد مستخدمي التطبيق على فهم سياق المصادقة المستخدمة.
    عنوان URL لرد اتصال التخويل https://localhost:5001/signin-github هذا الإعداد هو الإعداد الأكثر أهمية لتطبيق OAuth الخاص بك. إنه عنوان URL لرد الاتصال الذي يقوم GitHub بإرجاع المستخدم إليه بعد المصادقة الناجحة. في هذا البرنامج التعليمي، يجب استخدام عنوان URL الافتراضي لرد الاتصال لحزمة AspNet.Security.OAuth.GitHub ، /signin-github.
  4. بمجرد اكتمال تسجيل تطبيق OAuth الجديد، أضف معرف العميل وسر العميل إلى Secret Manager باستخدام الأوامر التالية. استبدل Your_GitHub_Client_Id Your_GitHub_Client_Secret بقيم تطبيق OAuth.

    dotnet user-secrets set GitHubClientId Your_GitHub_Client_Id
    dotnet user-secrets set GitHubClientSecret Your_GitHub_Client_Secret
    

تنفيذ تدفق OAuth

دعونا نعيد استخدام تطبيق الدردشة الذي تم إنشاؤه في البرنامج التعليمي إنشاء غرفة محادثة باستخدام SignalR Service.

تحديث Program.cs لدعم مصادقة GitHub

  1. أضف مرجعا إلى أحدث حزم AspNet.Security.OAuth.GitHub واستعادة جميع الحزم.

    dotnet add package AspNet.Security.OAuth.GitHub
    
  2. افتح Program.cs، وقم بتحديث التعليمات البرمجية إلى القصاصة البرمجية التالية:

    using Microsoft.AspNetCore.Authentication.Cookies;
    using Microsoft.AspNetCore.Authentication.OAuth;
    
    using System.Net.Http.Headers;
    using System.Security.Claims;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services
        .AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie()
        .AddGitHub(options =>
        {
            options.ClientId = builder.Configuration["GitHubClientId"] ?? "";
            options.ClientSecret = builder.Configuration["GitHubClientSecret"] ?? "";
            options.Scope.Add("user:email");
            options.Events = new OAuthEvents
            {
                OnCreatingTicket = GetUserCompanyInfoAsync
            };
        });
    
    builder.Services.AddControllers();
    builder.Services.AddSignalR().AddAzureSignalR();
    
    var app = builder.Build();
    
    app.UseHttpsRedirection();
    app.UseDefaultFiles();
    app.UseStaticFiles();
    
    app.UseRouting();
    
    app.UseAuthorization();
    
    app.MapControllers();
    app.MapHub<ChatSampleHub>("/chat");
    
    app.Run();
    
    static async Task GetUserCompanyInfoAsync(OAuthCreatingTicketContext context)
    {
        var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
        request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
    
        var response = await context.Backchannel.SendAsync(request,
            HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
        var user = await response.Content.ReadFromJsonAsync<GitHubUser>();
        if (user?.company != null)
        {
            context.Principal?.AddIdentity(new ClaimsIdentity(new[]
            {
                new Claim("Company", user.company)
            }));
        }
    }
    
    class GitHubUser
    {
        public string? company { get; set; }
    }
    

    داخل التعليمات البرمجية، AddAuthenticationUseAuthentication وتستخدم لإضافة دعم المصادقة باستخدام تطبيق GitHub OAuth، وأسلوب GetUserCompanyInfoAsync المساعد هو نموذج التعليمات البرمجية الذي يوضح كيفية تحميل معلومات الشركة من GitHub OAuth وحفظها في هوية المستخدم. قد تلاحظ أيضا أنه UseHttpsRedirection() يتم استخدامه منذ ملف تعريف ارتباط مجموعة secure GitHub OAuth الذي يمر فقط إلى نظام آمن https . لا تنس أيضا تحديث المحلي Properties/lauchSettings.json لإضافة نقطة نهاية https:

    {
      "profiles": {
        "GitHubChat" : {
          "commandName": "Project",
          "launchBrowser": true,
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          },
          "applicationUrl": "http://0.0.0.0:5000/;https://0.0.0.0:5001/;"
        }
      }
    }
    

إضافة وحدة تحكم مصادقة

في هذا القسم، يمكنك تنفيذ Login واجهة برمجة تطبيقات تصادق العملاء باستخدام تطبيق GitHub OAuth. بمجرد المصادقة، تضيف واجهة برمجة التطبيقات ملف تعريف ارتباط إلى استجابة عميل الويب قبل إعادة توجيه العميل مرة أخرى إلى تطبيق الدردشة. ثم يتم استخدام ملف تعريف الارتباط هذا لتحديد العميل.

  1. أضف ملف تعليمة برمجية لوحدة تحكم جديدة إلى دليل GitHubChat\Controllers . قم بتسمية الملف AuthController.cs.

  2. أضف التعليمات البرمجية التالية لوحدة تحكم المصادقة. تأكد من تحديث مساحة الاسم، إذا لم يكن دليل المشروع الخاص بك GitHubChat:

    using AspNet.Security.OAuth.GitHub;
    
    using Microsoft.AspNetCore.Authentication;
    using Microsoft.AspNetCore.Mvc;
    
    namespace GitHubChat.Controllers
    {
        [Route("/")]
        public class AuthController : Controller
        {
            [HttpGet("login")]
            public IActionResult Login()
            {
                if (User.Identity == null || !User.Identity.IsAuthenticated)
                {
                    return Challenge(GitHubAuthenticationDefaults.AuthenticationScheme);
                }
    
                HttpContext.Response.Cookies.Append("githubchat_username", User.Identity.Name ?? "");
                HttpContext.SignInAsync(User);
                return Redirect("/");
            }
        }
    }
    
  3. احفظ تغييراتك.

تحديث فئة Hub

بشكل افتراضي، يتصل عميل الويب بخدمة SignalR باستخدام رمز وصول تم إنشاؤه بواسطة Azure SignalR SDK تلقائيا.

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

  1. افتح Hub\ChatSampleHub.cs وقم بتحديث التعليمات البرمجية إلى القصاصة البرمجية أدناه. تضيف التعليمات البرمجية السمة AuthorizeChatSampleHub إلى الفئة، وتستخدم هوية المستخدم المصادق عليها في أساليب المركز. أيضا، OnConnectedAsync تتم إضافة الأسلوب الذي يسجل رسالة النظام إلى غرفة المحادثة في كل مرة يتصل فيها عميل جديد.

    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.SignalR;
    
    [Authorize]
    public class ChatSampleHub : Hub
    {
        public override Task OnConnectedAsync()
        {
            return Clients.All.SendAsync("broadcastMessage", "_SYSTEM_", $"{Context.User?.Identity?.Name} JOINED");
        }
    
        // Uncomment this line to only allow user in Microsoft to send message
        //[Authorize(Policy = "Microsoft_Only")]
        public Task BroadcastMessage(string message)
        {
            return Clients.All.SendAsync("broadcastMessage", Context.User?.Identity?.Name, message);
        }
    
        public Task Echo(string message)
        {
            var echoMessage = $"{message} (echo from server)";
            return Clients.Client(Context.ConnectionId).SendAsync("echo", Context.User?.Identity?.Name, echoMessage);
        }
    }
    
  2. احفظ تغييراتك.

تحديث التعليمات البرمجية لعميل الويب

  1. افتح wwwroot\index.html واستبدل التعليمات البرمجية التي تطالب باسم المستخدم بالتعليمات البرمجية لاستخدام ملف تعريف الارتباط الذي تم إرجاعه بواسطة وحدة تحكم المصادقة.

    تحديث التعليمات البرمجية داخل الدالة getUserName في index.html إلى ما يلي لاستخدام ملفات تعريف الارتباط:

    function getUserName() {
      // Get the user name cookie.
      function getCookie(key) {
        var cookies = document.cookie.split(";").map((c) => c.trim());
        for (var i = 0; i < cookies.length; i++) {
          if (cookies[i].startsWith(key + "="))
            return unescape(cookies[i].slice(key.length + 1));
        }
        return "";
      }
      return getCookie("githubchat_username");
    }
    
  2. تحديث onConnected الدالة لإزالة المعلمة username عند استدعاء أسلوب broadcastMessage المركز و echo:

    function onConnected(connection) {
      console.log("connection started");
      connection.send("broadcastMessage", "_SYSTEM_", username + " JOINED");
      document.getElementById("sendmessage").addEventListener("click", function (event) {
        // Call the broadcastMessage method on the hub.
        if (messageInput.value) {
          connection.invoke("broadcastMessage", messageInput.value)
            .catch((e) => appendMessage("_BROADCAST_", e.message));
        }
    
        // Clear text box and reset focus for next comment.
        messageInput.value = "";
        messageInput.focus();
        event.preventDefault();
      });
      document.getElementById("message").addEventListener("keypress", function (event) {
        if (event.keyCode === 13) {
          event.preventDefault();
          document.getElementById("sendmessage").click();
          return false;
        }
      });
      document.getElementById("echo").addEventListener("click", function (event) {
        // Call the echo method on the hub.
        connection.send("echo", messageInput.value);
    
        // Clear text box and reset focus for next comment.
        messageInput.value = "";
        messageInput.focus();
        event.preventDefault();
      });
    }
    
  3. في أسفل index.html، قم بتحديث معالج الأخطاء كما connection.start() هو موضح أدناه لمطالبة المستخدم بتسجيل الدخول.

    connection.start()
      .then(function () {
        onConnected(connection);
      })
      .catch(function (error) {
        console.error(error.message);
        if (error.statusCode && error.statusCode === 401) {
          appendMessage(
            "_BROADCAST_",
            "You\"re not logged in. Click <a href="/login">here</a> to login with GitHub."
          );
        }
      });
    
  4. احفظ تغييراتك.

إنشاء التطبيق وتشغيله محليا

  1. حفظ التغييرات على جميع الملفات.

  2. نفذ الأمر التالي لتشغيل تطبيق الويب محليا:

    dotnet run
    

    تتم استضافة التطبيق محليا على المنفذ 5000 بشكل افتراضي:

    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://0.0.0.0:5000
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://0.0.0.0:5001
    info: Microsoft.Hosting.Lifetime[0]
          Application started. Press Ctrl+C to shut down.
    info: Microsoft.Hosting.Lifetime[0]
          Hosting environment: Development
    
  3. قم بتشغيل نافذة مستعرض وانتقل إلى https://localhost:5001. حدد الرابط هنا في الأعلى لتسجيل الدخول باستخدام GitHub.

    OAuth Complete hosted in Azure

    تتم مطالبتك بتخويل وصول تطبيق الدردشة إلى حساب GitHub الخاص بك. حدد الزر Authorize.

    Authorize OAuth App

    تتم إعادة توجيهك مرة أخرى إلى تطبيق الدردشة وتسجيل الدخول باستخدام اسم حساب GitHub الخاص بك. حدد تطبيق الويب اسم حسابك من خلال مصادقتك باستخدام المصادقة الجديدة التي أضفتها.

    Account identified

    مع تطبيق الدردشة الآن ينفذ المصادقة مع GitHub ويخزن معلومات المصادقة كملفات تعريف ارتباط، تتضمن الخطوة التالية توزيعها على Azure. يتيح هذا الأسلوب للمستخدمين الآخرين المصادقة باستخدام حساباتهم الخاصة والتواصل من محطات العمل المختلفة.

توزيع التطبيق على Azure

إعداد بيئتك ل Azure CLI:

في هذا القسم، يمكنك استخدام Azure CLI لإنشاء تطبيق ويب جديد في Azure App Service لاستضافة تطبيق ASP.NET في Azure. تم تكوين تطبيق الويب لاستخدام نشر Git المحلي. يتم تكوين تطبيق الويب أيضا باستخدام سلسلة الاتصال SignalR وأسرار تطبيق GitHub OAuth ومستخدم التوزيع.

عند إنشاء الموارد التالية، تأكد من استخدام نفس مجموعة الموارد التي يوجد بها مورد SignalR Service. يجعل هذا الأسلوب التنظيف أسهل بكثير في وقت لاحق عندما تريد إزالة جميع الموارد. تفترض الأمثلة المعطاة أنك استخدمت اسم المجموعة الموصى به في البرامج التعليمية السابقة، SignalRTestResources.

إنشاء تطبيق الويب والتخطيط

انسخ نص الأوامر أدناه وقم بتحديث المعلمات. الصق البرنامج النصي المحدث في Azure Cloud Shell، واضغط على Enter لإنشاء خطة App Service جديدة وتطبيق ويب.

#========================================================================
#=== Update these variable for your resource group name.              ===
#========================================================================
ResourceGroupName=SignalRTestResources

#========================================================================
#=== Update these variable for your web app.                          ===
#========================================================================
WebAppName=myWebAppName
WebAppPlan=myAppServicePlanName

# Create an App Service plan.
az appservice plan create --name $WebAppPlan --resource-group $ResourceGroupName \
    --sku FREE

# Create the new Web App
az webapp create --name $WebAppName --resource-group $ResourceGroupName \
    --plan $WebAppPlan
المعلمة ‏‏الوصف‬
ResourceGroupName تم اقتراح اسم مجموعة الموارد هذا في البرامج التعليمية السابقة. من الجيد الاحتفاظ بجميع موارد البرنامج التعليمي مجمعة معا. استخدم نفس مجموعة الموارد التي استخدمتها في البرامج التعليمية السابقة.
WebAppPlan أدخل اسما جديدا وفريدا لخطة خدمة التطبيقات.
WebAppName هذه المعلمة هي اسم تطبيق الويب الجديد وجزء من عنوان URL. اجعلها فريدة من نوعها. على سبيل المثال، signalrtestwebapp22665120.

إضافة إعدادات التطبيق إلى تطبيق الويب

في هذا القسم، يمكنك إضافة إعدادات التطبيق للمكونات التالية:

  • سلسلة الاتصال مورد خدمة SignalR
  • معرف عميل تطبيق GitHub OAuth
  • سر عميل تطبيق GitHub OAuth

انسخ نص الأوامر أدناه وقم بتحديث المعلمات. الصق البرنامج النصي المحدث في Azure Cloud Shell، واضغط على Enter لإضافة إعدادات التطبيق:

#========================================================================
#=== Update these variables for your GitHub OAuth App.                ===
#========================================================================
GitHubClientId=1234567890
GitHubClientSecret=1234567890

#========================================================================
#=== Update these variables for your resources.                       ===
#========================================================================
ResourceGroupName=SignalRTestResources
SignalRServiceResource=mySignalRresourcename
WebAppName=myWebAppName

# Get the SignalR primary connection string
primaryConnectionString=$(az signalr key list --name $SignalRServiceResource \
  --resource-group $ResourceGroupName --query primaryConnectionString -o tsv)

#Add an app setting to the web app for the SignalR connection
az webapp config appsettings set --name $WebAppName \
    --resource-group $ResourceGroupName \
    --settings "Azure__SignalR__ConnectionString=$primaryConnectionString"

#Add the app settings to use with GitHub authentication
az webapp config appsettings set --name $WebAppName \
    --resource-group $ResourceGroupName \
    --settings "GitHubClientId=$GitHubClientId"
az webapp config appsettings set --name $WebAppName \
    --resource-group $ResourceGroupName \
    --settings "GitHubClientSecret=$GitHubClientSecret"
المعلمة ‏‏الوصف‬
GitHubClientId قم بتعيين هذا المتغير معرف العميل السري لتطبيق GitHub OAuth الخاص بك.
GitHubClientSecret عين هذا المتغير كلمة المرور السرية لتطبيق GitHub OAuth.
ResourceGroupName قم بتحديث هذا المتغير ليكون نفس اسم مجموعة الموارد الذي استخدمته في القسم السابق.
مصدر خدمة SignalR قم بتحديث هذا المتغير باسم مورد SignalR Service الذي أنشأته في التشغيل السريع. على سبيل المثال، signalrtestsvc48778624.
WebAppName قم بتحديث هذا المتغير باسم تطبيق الويب الجديد الذي أنشأته في القسم السابق.

تكوين تطبيق الويب لنشر Git المحلي

في Azure Cloud Shell، الصق البرنامج النصي التالي. ينشئ هذا البرنامج النصي اسم مستخدم نشر جديد وكلمة مرور تستخدمهما عند نشر التعليمات البرمجية الخاصة بك إلى تطبيق الويب باستخدام Git. يقوم البرنامج النصي أيضا بتكوين تطبيق الويب للتوزيع باستخدام مستودع Git محلي، ويعيد عنوان URL لتوزيع Git.

#========================================================================
#=== Update these variables for your resources.                       ===
#========================================================================
ResourceGroupName=SignalRTestResources
WebAppName=myWebAppName

#========================================================================
#=== Update these variables for your deployment user.                 ===
#========================================================================
DeploymentUserName=myUserName
DeploymentUserPassword=myPassword

# Add the desired deployment user name and password
az webapp deployment user set --user-name $DeploymentUserName \
    --password $DeploymentUserPassword

# Configure Git deployment and note the deployment URL in the output
az webapp deployment source config-local-git --name $WebAppName \
    --resource-group $ResourceGroupName \
    --query [url] -o tsv
المعلمة ‏‏الوصف‬
DeploymentUserName اختر اسم مستخدم نشر جديد.
DeploymentUserPassword اختر كلمة مرور لمستخدم النشر الجديد.
ResourceGroupName استخدم نفس اسم مجموعة الموارد الذي استخدمته في القسم السابق.
WebAppName هذه المعلمة هي اسم تطبيق الويب الجديد الذي قمت بإنشائه مسبقا.

دون ملاحظة تم إرجاع عنوان URL لتوزيع Git من هذا الأمر. يمكنك استخدام عنوان URL هذا لاحقا.

نشر التعليمات البرمجية الخاصة بك إلى تطبيق ويب Azure

لنشر التعليمات البرمجية الخاصة بك، قم بتنفيذ الأوامر التالية في Git shell.

  1. انتقل إلى جذر دليل المشروع. إذا لم يكن لديك المشروع الذي تمت تهيئته باستخدام مستودع Git، فنفذ الأمر التالي:

    git init
    
  2. أضف جهاز تحكم عن بعد لعنون URL لنشر Git الذي لاحظته سابقا:

    git remote add Azure <your git deployment url>
    
  3. مرحلة كافة الملفات في المستودع الذي تمت تهيئته وإضافة تثبيت.

    git add -A
    git commit -m "init commit"
    
  4. نشر التعليمات البرمجية الخاصة بك إلى تطبيق الويب في Azure.

    git push Azure main
    

    تتم مطالبتك بالمصادقة من أجل نشر التعليمات البرمجية إلى Azure. أدخل اسم المستخدم وكلمة المرور لمستخدم النشر الذي أنشأته أعلاه.

تحديث تطبيق GitHub OAuth

آخر شيء عليك القيام به هو تحديث عنوان URL للصفحة الرئيسية وعنوان URL لرد اتصال التخويل لتطبيق GitHub OAuth للإشارة إلى التطبيق المستضاف الجديد.

  1. افتح https://github.com في مستعرض وانتقل إلى إعدادات الإعدادات> Developer لتطبيقات>Oauth لحسابك.

  2. حدد على تطبيق المصادقة وقم بتحديث عنوان URL للصفحة الرئيسية وعنوان URL الخاص برد اتصال التخويل كما هو موضح أدناه:

    الإعدادات مثال
    عنوان URL للصفحة الرئيسية https://signalrtestwebapp22665120.azurewebsites.net
    عنوان URL لرد اتصال التخويل https://signalrtestwebapp22665120.azurewebsites.net/signin-github
  3. انتقل إلى عنوان URL لتطبيق الويب الخاص بك واختبر التطبيق.

    OAuth Complete hosted in Azure

تنظيف الموارد

إذا كنت سوف تستمر في البرنامج التعليمي التالي، يمكنك الاحتفاظ بالموارد التي تم إنشاؤها في هذا التشغيل السريع وإعادة استخدامها مع البرنامج التعليمي التالي.

وإلا، في حال كنت قد انتهيت من تطبيق نموذج التشغيل السريع، يمكنك حذف موارد Azure التي تم إنشاؤها في هذه البداية السريعة لتجنب المصاريف.

هام

لا يمكن التراجع عن حذف مجموعة الموارد، ويتم حذف مجموعة الموارد وجميع الموارد الموجودة فيها نهائيًّا. تأكد من عدم حذف مجموعة الموارد الخاطئة أو الموارد غير الصحيحة بطريق الخطأ. إذا قمت بإنشاء الموارد لاستضافة هذا النموذج داخل مجموعة موارد موجودة تحتوي على الموارد التي تريد الاحتفاظ بها، يمكنك حذف كل مورد على حدة من شفراتهم ذات الصلة بدلاً من حذف مجموعة الموارد.

سجل الدخول إلىمدخل Azureوحددمجموعات الموارد.

في المربع تصفية حسب الاسم...، اكتب اسم مجموعة الموارد. استخدمت إرشادات هذه المقالة مجموعة موارد تسمى SignalRTestResources. في مجموعة الموارد في قائمة النتائج، انقر على ... ثم "Delete resource group".

Delete

يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد حذف.

بعد لحظات قليلة، يتم حذف مجموعة الموارد وكافة الموارد المضمنة.

الخطوات التالية

في هذا البرنامج التعليمي، أضفت المصادقة باستخدام OAuth لتوفير نهج أفضل للمصادقة باستخدام Azure SignalR Service. لمعرفة المزيد حول استخدام Azure SignalR Server، تابع إلى نماذج Azure CLI لخدمة SignalR.