قم بترحيل واجهة برمجة تطبيقات الويب المستندة إلى OWIN إلى b2clogin.com أو مجال مخصص

توضح هذه المقالة تقنية لتمكين الدعم للعديد من مُصدري الرموز المميزة في واجهات برمجة تطبيقات الويب التي تنفذ Open Web Interface لـ NET (OWIN). يعد دعم نقاط نهاية الرمز المميز المتعددة مفيداً عندما تقوم بترحيل واجهات برمجة تطبيقات Microsoft Azure Active Directory B2C (Microsoft Azure Active Directory B2C) وتطبيقاتها من مجال إلى آخر. على سبيل المثال، من login.microsoftonline.com إلى b2clogin.com، أو إلى مجال خاص.

من خلال إضافة دعم في واجهة برمجة التطبيقات الخاصة بك لقبول الرموز المميزة الصادرة عن b2clogin.com أو login.microsoftonline.com أو مجال مخصص، يمكنك ترحيل تطبيقات الويب الخاصة بك بطريقة مرحلية قبل إزالة دعم الرموز المميزة الصادرة من login.microsoftonline.com من API.

تقدم الأقسام التالية مثالاً على كيفية تمكين جهات إصدار متعددة في واجهة برمجة تطبيقات الويب التي تستخدم مكونات البرنامج الوسيط Microsoft OWIN (Katana). على الرغم من أن أمثلة التعليمات البرمجية خاصة بالبرنامج الوسيط Microsoft OWIN، يجب أن تكون التقنية العامة قابلة للتطبيق على مكتبات OWIN الأخرى.

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

أنت بحاجة إلى موارد Microsoft Azure Active Directory B2C التالية قبل متابعة الخطوات الواردة في هذه المقالة:

احصل على نقاط نهاية مُصدر الرمز المميز

تحتاج أولاً إلى الحصول على معرفات URI الخاصة بنقطة نهاية جهة إصدار الرمز المميز لكل جهة إصدار تريد دعمها في واجهة برمجة التطبيقات الخاصة بك. للحصول على نقطتي النهاية b2clogin.com وlogin.microsoftonline.com المدعومة من قِبل مستأجر Microsoft Azure Active Directory B2C، استخدم الإجراء التالي في مدخل Microsoft Azure.

ابدأ بتحديد أحد تدفقات المستخدم الحالية:

  1. انتقل إلى مستأجر Microsoft Azure Active Directory B2C في مدخل Microsoft Azure

  2. ضمن Policies، حدد User flows (policies)

  3. حدد نهجاً موجوداً حالياً، على سبيل المثال B2C_1_signupsignin1، ثم حدد Run user flow

  4. ضمن العنوان Run user flow بالقرب من أعلى الصفحة، حدد الارتباط التشعبي للانتقال إلى نقطة نهاية اكتشاف OpenID Connect لتدفق المستخدم هذا.

    ارتباط تشعبي URI مشهور في صفحة التشغيل الآن في مدخل Microsoft Azure

  5. في الصفحة التي تفتح في متصفحك، قم بتسجيل قيمة issuer، على سبيل المثال:

    https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

  6. استخدم القائمة المنسدلة Select domain لتحديد النطاق الآخر، ثم نفذ الخطوتين السابقتين مرة أخرى وسجل قيمته issuer.

يجب أن يكون لديك الآن عنوانان (URIs) مسجلان مشابهان لـ:

https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

النُهج المخصصة

إذا كانت لديك نُهج مخصصة بدلاً من تدفقات المستخدم، فيمكنك استخدام عملية مماثلة للحصول على URIs المُصدر.

  1. انتقل إلى مستأجر Microsoft Azure Active Directory B2C الخاص بك
  2. حدد Identity Experience Framework
  3. حدد إحدى نُهج الجهة المعتمدة لديك، على سبيل المثال، B2C_1A_signup_signin
  4. استخدم القائمة المنسدلة Select domain لتحديد نطاق، على سبيل المثال yourtenant.b2clogin.com
  5. حدد الارتباط التشعبي المعروض ضمن نقطة نهاية اكتشاف OpenID Connect
  6. سجل قيمة issuer
  7. نفذ الخطوات من 4 إلى 6 للمجال الآخر، على سبيل المثال login.microsoftonline.com

الحصول على التعليمات البرمجية للعينة

الآن بعد أن أصبح لديك كل من معرفات URI الخاصة بنقطة نهاية الرمز المميز، تحتاج إلى تحديث التعليمة البرمجية الخاص بك لتحديد أن كلتا نقطتي النهاية هما مُصدِران صالحان. لتصفح أحد الأمثلة، قم بتنزيل التطبيق النموذجي أو استنساخه، ثم قم بتحديث النموذج لدعم كلتا نقطتي النهاية كمصدرين صالحين.

تنزيل الأرشيف: active-directory-b2c-dotnet-webapp-and-webapi-master.zip

git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git

تمكين مصدرين متعددين في واجهة برمجة تطبيقات الويب

في هذا القسم، تقوم بتحديث التعليمة البرمجية لتحديد صلاحية نقطتي نهاية مُصدر الرمز المميز.

  1. افتح الحل B2C-WebAPI-DotNet.sln في Visual Studio

  2. في مشروع TaskService، قم بفتح فتح ملف TaskService\App_Start\Startup.Auth.cs في المحرر الخاص بك

  3. أضف التوجيه using التالي إلى أعلى الملف:

    using System.Collections.Generic;

  4. أضف الخاصية ValidIssuers إلى تعريف TokenValidationParameters وحدد كلاً من URIs اللذين سجلتهما في القسم السابق:

    TokenValidationParameters tvps = new TokenValidationParameters
    {
        // Accept only those tokens where the audience of the token is equal to the client ID of this app
        ValidAudience = ClientId,
        AuthenticationType = Startup.DefaultPolicy,
        ValidIssuers = new List<string> {
            "https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/",
            "https://{your-b2c-tenant}.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"//,
            //"https://your-custom-domain/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"
        }
    };
    

يتم توفيرTokenValidationParameters بواسطة MSAL.NET وتستهلكه البرامج الوسيطة OWIN في القسم التالي من التعليمات البرمجية في Startup.Auth.cs. مع تحديد العديد من المُصدرين الصالحين، يتم إعلام خط تدفق تطبيق OWIN بأن كلتا نقطتي نهاية الرمز المميز هما مُصدِران صالحان.

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
    // This SecurityTokenProvider fetches the Azure AD B2C metadata &  from the OpenID Connect metadata endpoint
    AccessTokenFormat = new JwtFormat(tvps, new tCachingSecurityTokenProvider(String.Format(AadInstance, ultPolicy)))
});

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

تبديل نقاط النهاية في تطبيق الويب

مع دعم كل من URIs الآن بواسطة واجهة برمجة تطبيقات الويب، تحتاج الآن إلى تحديث تطبيق الويب الخاص بك بحيث يسترد الرموز المميزة من نقطة نهاية b2clogin.com.

على سبيل المثال، يمكنك تكوين نموذج تطبيق الويب لاستخدام نقطة النهاية الجديدة عن طريق تعديل القيمةida:AadInstance في ملف TaskWebAppTaskWebApp\Web.config الخاص بمشروع TaskWebApp.

قم بتغيير القيمة ida:AadInstance في Web.config من TaskWebApp بحيث تشير إلى {your-b2c-tenant-name}.b2clogin.com بدلاً من login.microsoftonline.com.

‏‏قبل:

<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />

بعد (استبدال {your-b2c-tenant} باسم مستأجر B2C الخاص بك):

<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />

عندما يتم إنشاء سلاسل نقطة النهاية أثناء تنفيذ تطبيق الويب، يتم استخدام نقاط النهاية المستندة إلى b2clogin.com عندما تطلب الرموز المميزة.

عند استخدام المجال المخصص:

<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />

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

قدمت هذه المقالة طريقة لتكوين واجهة برمجة تطبيقات الويب التي تستخدم برنامج Microsoft OWIN الوسيط (Katana) لقبول الرموز المميزة من نقاط نهاية مُصدِر متعددة. كما قد تلاحظ، هناك العديد من السلاسل الأخرى في ملفات Web.Config الخاصة بمشروعي TaskService وTaskWebApp التي قد تحتاج إلى تغيير إذا كنت ترغب في إنشاء وتشغيل هذه المشاريع ضد المستأجر الخاص بك. أنت مرحب بك لتعديل المشاريع بشكل مناسب إذا كنت تريد رؤيتها أثناء العمل، ومع ذلك، فإن الاطلاع الكامل على القيام بذلك خارج نطاق هذه المقالة.

لمزيد من المعلومات حول الأنواع المختلفة من الرموز المميزة للأمان الصادرة عن Microsoft Azure Active Directory B2C، راجع نظرة عامة على الرموز المميزة في Microsoft Azure Active Directory B2C.