كيفية تخزين رمز المصادقة المميز مؤقتاً

توضح هذه المقالة كيفية تخزين رمز المصادقة المميز مؤقتا لتحسين أداء التطبيق الخاص بك.

استخدام ASP.NET

استيراد حزمة Microsoft.Identity.Client NuGet، والتي تستخدم للحصول على رمز مميز. للحصول على التفاصيل، راجع تثبيت حزمة NuGet لعميل الهوية.

إنشاء خاصية تطبيق عميل سري.

private IConfidentialClientApplication _confidentialClientApplication;
private IConfidentialClientApplication ConfidentialClientApplication
{
    get {
        if (_confidentialClientApplication == null) {
            _confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(ClientId)
            .WithClientSecret(ClientSecret)
            .WithAuthority($"https://login.windows.net/{TenantId}")
            .Build();
        }

        return _confidentialClientApplication;
    }
}

بعد ذلك، استخدم التعليمات البرمجية التالية للحصول على AuthenticationResult، باستخدام قيم المصادقة التي حصلت عليها عند إنشاء مورد القارئ الشامل.

هام

تم إهمال حزمة Microsoft.IdentityModel.Clients.ActiveDirectory NuGet ومكتبة مصادقة Microsoft Azure Active Directory (ADAL). لم تتم إضافة أي ميزات جديدة منذ 30 يونيو 2020. نشجعك بشدة على الترقية. لمعرفة المزيد، راجع دليل الترحيل.

public async Task<string> GetTokenAsync()
{
    const string resource = "https://cognitiveservices.azure.com/";

    var authResult = await ConfidentialClientApplication.AcquireTokenForClient(
        new[] { $"{resource}/.default" })
        .ExecuteAsync()
        .ConfigureAwait(false);

    return authResult.AccessToken;
}

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

استخدام لغة Node.js

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

router.get('/token', function(req, res) {
    request.post(
        {
            headers: { 'content-type': 'application/x-www-form-urlencoded' },
            url: `https://login.windows.net/${TENANT_ID}/oauth2/token`,
            form: {
                grant_type: 'client_credentials',
                client_id: CLIENT_ID,
                client_secret: CLIENT_SECRET,
                resource: 'https://cognitiveservices.azure.com/'
            }
        },
        function(err, resp, json) {
            const result = JSON.parse(json);
            return res.send({
                access_token: result.access_token,
                expires_on: result.expires_on
            });
        }
    );
});

الخاصية expires_on هي التاريخ والوقت الذي تنتهي فيه صلاحية الرمز المميز، ويتم التعبير عنه كرقم من الثواني منذ 1 يناير 1970 بالتوقيت العالمي المتفق عليه. استخدم هذه القيمة لتحديد ما إذا كان الرمز المميز الخاص بك قد انتهت صلاحيته قبل محاولة الحصول على رمز جديد.

async function getToken() {
    if (Date.now() / 1000 > CREDENTIALS.expires_on) {
        CREDENTIALS = await refreshCredentials();
    }
    return CREDENTIALS.access_token;
}

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