الوصف
استخدِم واجهة برمجة التطبيقات chrome.enterprise.platformKeys
لإنشاء مفاتيح وتثبيت شهادات لهذه المفاتيح. سيدير النظام الأساسي الشهادات ويمكن استخدامها لمصادقة بروتوكول أمان طبقة النقل (TLS) أو الوصول إلى الشبكة أو بواسطة إضافة أخرى من خلال chrome.platformKeys.
الأذونات
enterprise.platformKeys
مدى التوفّر
الاستخدام
يتم عادةً استخدام واجهة برمجة التطبيقات هذه لتسجيل شهادة عميل باتّباع الخطوات التالية:
احصل على جميع الرموز المميزة المتاحة باستخدام enterprise.platformKeys.getTokens.
ابحث عن الرمز المميّز الذي تكون فيه قيمة
id
مساوية"user"
. استخدِم هذا الرمز المميّز لاحقًا.أنشئ زوجًا من المفاتيح باستخدام
generateKey
طريقة الرمز المميز (المحدّدة في SubtleCrypto). سيؤدي ذلك إلى عرض معرّف المفتاح.صدِّر المفتاح العام باستخدام
exportKey
طريقة الرمز المميز (المحدّدة في SubtleCrypto).أنشئ توقيعًا لبيانات طلب شهادة الاعتماد باستخدام طريقة الرمز المميز
sign
(المحدّدة في SubtleCrypto).أكمِل طلب الحصول على شهادة الاعتماد وأرسِله إلى هيئة إصدار الشهادات.
في حال تلقّي شهادة، استورِدها باستخدام enterprise.platformKeys.importCertificate
في ما يلي مثال يعرض التفاعل الرئيسي مع واجهة برمجة التطبيقات باستثناء إنشاء طلب الشهادة وإرساله:
function getUserToken(callback) { chrome.enterprise.platformKeys.getTokens(function(tokens) { for (var i = 0; i < tokens.length; i++) { if (tokens[i].id == "user") { callback(tokens[i]); return; } } callback(undefined); }); } function generateAndSign(userToken) { var data = new Uint8Array([0, 5, 1, 2, 3, 4, 5, 6]); var algorithm = { name: "RSASSA-PKCS1-v1_5", // RsaHashedKeyGenParams modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 hash: { name: "SHA-256", } }; var cachedKeyPair; userToken.subtleCrypto.generateKey(algorithm, false, ["sign"]) .then(function(keyPair) { cachedKeyPair = keyPair; return userToken.subtleCrypto.exportKey("spki", keyPair.publicKey); }, console.log.bind(console)) .then(function(publicKeySpki) { // Build the Certification Request using the public key. return userToken.subtleCrypto.sign( {name : "RSASSA-PKCS1-v1_5"}, cachedKeyPair.privateKey, data); }, console.log.bind(console)) .then(function(signature) { // Complete the Certification Request with |signature|. // Send out the request to the CA, calling back // onClientCertificateReceived. }, console.log.bind(console)); } function onClientCertificateReceived(userToken, certificate) { chrome.enterprise.platformKeys.importCertificate(userToken.id, certificate); } getUserToken(generateAndSign);
الأنواع
Algorithm
نوع المفتاح المطلوب إنشاؤه.
Enum
"RSA"
"ECDSA"
ChallengeKeyOptions
الخصائص
- تحدّي
ArrayBuffer
تمثّل هذه السمة تحديًا تم إصداره من خلال Verified Access Web API.
- registerKey
RegisterKeyOptions اختيارية
في حال توفّره، يسجّل المفتاح الذي تم التحقّق منه باستخدام الرمز المميّز
scope
المحدّد. ويمكن بعد ذلك ربط المفتاح بشهادة واستخدامه مثل أي مفتاح توقيع آخر. بعد ذلك، ستؤدي عمليات الاستدعاء اللاحقة لهذه الدالة إلى إنشاء مفتاح Enterprise جديد فيscope
المحدّد. - نطاق
مفتاح Enterprise الذي سيتم استخدامه في اختبار التحقّق
RegisterKeyOptions
الخصائص
- خوارزمية
تحدّد هذه السمة الخوارزمية التي يجب أن يستخدمها المفتاح المسجَّل.
Scope
تحديد ما إذا كنت تريد استخدام "مفتاح مستخدم Enterprise" أو "مفتاح جهاز Enterprise"
Enum
"USER"
"MACHINE"
Token
الخصائص
- id
سلسلة
يحدّد هذا
Token
بشكلٍ فريد.المعرّفان الثابتان هما
"user"
و"system"
، ويشيران إلى الرمز المميز للأجهزة الخاص بالمستخدم على المنصة والرمز المميز للأجهزة على مستوى النظام، على التوالي. قد تعرض الدالةenterprise.platformKeys.getTokens
أي رموز مميّزة أخرى (مع معرّفات أخرى). - softwareBackedSubtleCrypto
SubtleCrypto
الإصدار 97 من Chrome والإصدارات الأحدثتنفّذ واجهة SubtleCrypto في WebCrypto. تتم عمليات التشفير، بما في ذلك إنشاء المفاتيح، باستخدام البرامج. تتم حماية المفاتيح، وبالتالي تنفيذ خاصية عدم إمكانية الاستخراج، في البرامج، لذا تكون المفاتيح أقل حماية من المفاتيح المستنِدة إلى الجهاز.
لا يمكن إنشاء سوى المفاتيح غير القابلة للاستخراج. أنواع المفاتيح المتوافقة هي RSASSA-PKCS1-V1_5 وRSA-OAEP (في الإصدار 135 من Chrome والإصدارات الأحدث) مع
modulusLength
حتى 2048. يمكن استخدام كل مفتاح RSASSA-PKCS1-V1_5 لتوقيع البيانات مرة واحدة على الأكثر، ما لم تتم إضافة الإضافة إلى القائمة المسموح بها من خلال سياسة KeyPermissions، وفي هذه الحالة يمكن استخدام المفتاح إلى أجل غير مسمى. تتوفّر مفاتيح RSA-OAEP منذ الإصدار 135 من Chrome، ويمكن أن تستخدمها الإضافات المدرَجة في القائمة المسموح بها من خلال السياسة نفسها لفك تشفير المفاتيح الأخرى.لا يمكن استخدام المفاتيح التي تم إنشاؤها على
Token
معيّن مع أي رموز مميّزة أخرى، كما لا يمكن استخدامها معwindow.crypto.subtle
. وبالمثل، لا يمكن استخدام عناصرKey
التي تم إنشاؤها باستخدامwindow.crypto.subtle
مع هذه الواجهة. - subtleCrypto
SubtleCrypto
تنفّذ واجهة SubtleCrypto في WebCrypto. تكون عمليات التشفير، بما في ذلك إنشاء المفاتيح، محمية بواسطة الأجهزة.
لا يمكن إنشاء سوى المفاتيح غير القابلة للاستخراج. أنواع المفاتيح المتوافقة هي RSASSA-PKCS1-V1_5 وRSA-OAEP (في الإصدار 135 من Chrome والإصدارات الأحدث) مع
modulusLength
حتى 2048 وECDSA معnamedCurve
P-256. يمكن استخدام كل مفتاح RSASSA-PKCS1-V1_5 وECDSA لتوقيع البيانات مرة واحدة على الأكثر، ما لم تتم إضافة الإضافة إلى القائمة المسموح بها من خلال سياسة KeyPermissions، وفي هذه الحالة يمكن استخدام المفتاح إلى أجل غير مسمى. تتوفّر مفاتيح RSA-OAEP منذ الإصدار 135 من Chrome، ويمكن أن تستخدمها الإضافات المدرَجة في القائمة المسموح بها من خلال السياسة نفسها لفك تشفير المفاتيح الأخرى.لا يمكن استخدام المفاتيح التي تم إنشاؤها على
Token
معيّن مع أي رموز مميّزة أخرى، كما لا يمكن استخدامها معwindow.crypto.subtle
. وبالمثل، لا يمكن استخدام عناصرKey
التي تم إنشاؤها باستخدامwindow.crypto.subtle
مع هذه الواجهة.
الطُرق
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
): Promise<ArrayBuffer>
تشبه الدالتَين challengeMachineKey
وchallengeUserKey
، ولكنها تسمح بتحديد خوارزمية مفتاح مسجّل. تحدّي "مفتاح الجهاز للمؤسسات" المحمي بواسطة الأجهزة وإصدار الردّ كجزء من بروتوكول إثبات صحة عن بُعد لا يمكن استخدامها إلا على ChromeOS وبالتزامن مع واجهة برمجة التطبيقات Verified Access Web API التي تطرح تحديات وتتحقّق من الردود.
يُعدّ التحقّق الناجح من خلال واجهة برمجة التطبيقات على الويب الخاصة بميزة "الوصول المتحقَّق منه" إشارة قوية إلى أنّ الجهاز الحالي هو جهاز ChromeOS صالح، وأنّ الجهاز الحالي مُدار من خلال النطاق المحدّد أثناء عملية التحقّق، وأنّ المستخدم الحالي الذي سجّل الدخول مُدار من خلال النطاق المحدّد أثناء عملية التحقّق، وأنّ حالة الجهاز الحالية تتوافق مع سياسة أجهزة المؤسسة. على سبيل المثال، قد تحدّد إحدى السياسات أنّه يجب ألا يكون الجهاز في وضع مطوّر البرامج. إنّ أي هوية جهاز يتم إصدارها من خلال عملية التحقّق تكون مرتبطة بشكل وثيق بالجهاز الحالي. في حال تحديد نطاق "user"
، يكون المعرّف مرتبطًا أيضًا بالمستخدم الحالي الذي سجّل الدخول.
هذه الوظيفة مقيّدة للغاية ولن تنجح إذا لم يكن الجهاز الحالي مُدارًا أو لم يكن المستخدم الحالي مُدارًا أو إذا لم يتم تفعيل هذه العملية بشكل صريح للمتصل من خلال سياسة الجهاز في المؤسسة. لا يوجد المفتاح الذي تم التحقّق منه في الرمز المميّز "system"
أو "user"
، ولا يمكن لأي واجهة برمجة تطبيقات أخرى الوصول إليه.
المعلمات
- الخيارات
عنصر يحتوي على الحقول المحدّدة في
ChallengeKeyOptions
- callback
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(response: ArrayBuffer) => void
- رد
ArrayBuffer
ردّ التحدي
-
المرتجعات
-
Promise<ArrayBuffer>
الإصدار 131 من Chrome والإصدارات الأحدثلا تتوافق الوعود إلا مع الإصدار Manifest V3 والإصدارات الأحدث، ويجب أن تستخدم المنصات الأخرى عمليات رد الاتصال.
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
): Promise<ArrayBuffer>
استخدِم challengeKey
بدلاً من ذلك.
تحدّي "مفتاح الجهاز للمؤسسات" المحمي بواسطة الأجهزة وإصدار الردّ كجزء من بروتوكول إثبات صحة عن بُعد لا يمكن استخدامها إلا على ChromeOS وبالتزامن مع واجهة برمجة التطبيقات Verified Access Web API التي تطرح تحديات وتتحقّق من الردود. يشير التحقّق الناجح من خلال Verified Access Web API إلى ما يلي: * الجهاز الحالي هو جهاز ChromeOS صالح. * تتم إدارة الجهاز الحالي من خلال النطاق المحدّد أثناء عملية إثبات الملكية. * تتم إدارة المستخدم الذي سجّل الدخول حاليًا من خلال النطاق المحدّد أثناء عملية إثبات الملكية. * تتوافق حالة الجهاز الحالية مع سياسة الجهاز في المؤسسة. على سبيل المثال، قد تحدّد إحدى السياسات أنّه يجب ألا يكون الجهاز في وضع مطوّر البرامج. * أي هوية جهاز يتم إصدارها من خلال عملية التحقّق تكون مرتبطة بشكل وثيق بأجهزة الجهاز الحالي. هذه الوظيفة مقيّدة للغاية ولن تنجح إذا لم يكن الجهاز الحالي مُدارًا أو لم يكن المستخدم الحالي مُدارًا أو إذا لم يتم تفعيل هذه العملية بشكل صريح للمتصل من خلال سياسة الجهاز في المؤسسة. لا يتوفّر "مفتاح الجهاز الخاص بالمؤسسة" في الرمز المميّز "system"
ولا يمكن الوصول إليه من خلال أي واجهة برمجة تطبيقات أخرى.
المعلمات
- تحدّي
ArrayBuffer
تمثّل هذه السمة تحديًا تم إصداره من خلال Verified Access Web API.
- registerKey
boolean اختياري
Chrome 59 والإصدارات الأحدثفي حال ضبط هذا الخيار، يتم تسجيل "مفتاح الجهاز للمؤسسات" الحالي باستخدام الرمز المميّز
"system"
ويتم التخلي عن دور "مفتاح الجهاز للمؤسسات". ويمكن بعد ذلك ربط المفتاح بشهادة واستخدامه مثل أي مفتاح توقيع آخر. هذا المفتاح هو مفتاح RSA بحجم 2048 بت. ستؤدي عمليات الاستدعاء اللاحقة لهذه الدالة إلى إنشاء مفتاح Enterprise Machine Key جديد. - callback
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(response: ArrayBuffer) => void
- رد
ArrayBuffer
ردّ التحدي
-
المرتجعات
-
Promise<ArrayBuffer>
الإصدار 131 من Chrome والإصدارات الأحدثلا تتوافق الوعود إلا مع الإصدار Manifest V3 والإصدارات الأحدث، ويجب أن تستخدم المنصات الأخرى عمليات رد الاتصال.
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
): Promise<ArrayBuffer>
استخدِم challengeKey
بدلاً من ذلك.
تحدّي "مفتاح مستخدم المؤسسة" المحمي بواسطة الجهاز وإصدار الرد كجزء من بروتوكول إثبات صحة عن بُعد لا يمكن استخدامها إلا على ChromeOS وبالتزامن مع واجهة برمجة التطبيقات Verified Access Web API التي تطرح تحديات وتتحقّق من الردود. يشير التحقّق الناجح من خلال Verified Access Web API إلى ما يلي: * الجهاز الحالي هو جهاز ChromeOS صالح. * تتم إدارة الجهاز الحالي من خلال النطاق المحدّد أثناء عملية إثبات الملكية. * تتم إدارة المستخدم الذي سجّل الدخول حاليًا من خلال النطاق المحدّد أثناء عملية إثبات الملكية. * تتوافق حالة الجهاز الحالية مع سياسة مستخدمي الإصدار الخاص بالمؤسسات. على سبيل المثال، قد تحدّد إحدى السياسات أنّه يجب ألا يكون الجهاز في وضع مطوّر البرامج. * المفتاح العام الذي يتم إصداره أثناء عملية التحقّق مرتبط بشكل وثيق بأجهزة الجهاز الحالي والمستخدم الحالي الذي سجّل الدخول. هذه الوظيفة مقيّدة بشدة ولن تنجح إذا لم يكن الجهاز الحالي مُدارًا أو لم يكن المستخدم الحالي مُدارًا أو إذا لم يتم تفعيل هذه العملية بشكل صريح للمتصل من خلال سياسة المستخدم في المؤسسة. لا يتوفّر "مفتاح مستخدم المؤسسة" في الرمز المميّز "user"
ولا يمكن الوصول إليه من خلال أي واجهة برمجة تطبيقات أخرى.
المعلمات
- تحدّي
ArrayBuffer
تمثّل هذه السمة تحديًا تم إصداره من خلال Verified Access Web API.
- registerKey
قيمة منطقية
في حال ضبط هذا الخيار، يتم تسجيل "مفتاح مستخدم المؤسسة" الحالي باستخدام رمز
"user"
المميز ويتم التنازل عن دور "مفتاح مستخدم المؤسسة". ويمكن بعد ذلك ربط المفتاح بشهادة واستخدامه مثل أي مفتاح توقيع آخر. هذا المفتاح هو مفتاح RSA بحجم 2048 بت. ستؤدي المكالمات اللاحقة إلى هذه الدالة إلى إنشاء مفتاح مستخدم جديد في Enterprise. - callback
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(response: ArrayBuffer) => void
- رد
ArrayBuffer
ردّ التحدي
-
المرتجعات
-
Promise<ArrayBuffer>
الإصدار 131 من Chrome والإصدارات الأحدثلا تتوافق الوعود إلا مع الإصدار Manifest V3 والإصدارات الأحدث، ويجب أن تستخدم المنصات الأخرى عمليات رد الاتصال.
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
): Promise<ArrayBuffer[]>
تعرض هذه الطريقة قائمة بجميع شهادات العميل المتاحة من الرمز المميّز المحدّد. يمكن استخدامها للتحقّق من توفّر شهادات العميل التي يمكن استخدامها في مصادقة معيّنة ومن تاريخ انتهاء صلاحيتها.
المعلمات
- tokenId
سلسلة
معرّف الرمز المميّز الذي تعرضه
getTokens
. - callback
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(certificates: ArrayBuffer[]) => void
- الشهادات
ArrayBuffer[]
قائمة الشهادات، كل منها بترميز DER لشهادة X.509
-
المرتجعات
-
Promise<ArrayBuffer[]>
الإصدار 131 من Chrome والإصدارات الأحدثلا تتوافق الوعود إلا مع الإصدار Manifest V3 والإصدارات الأحدث، ويجب أن تستخدم المنصات الأخرى عمليات رد الاتصال.
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
): Promise<Token[]>
تعرض هذه الطريقة الرموز المميزة المتاحة. في جلسة مستخدم عادي، ستتضمّن القائمة دائمًا رمز المستخدم مع id
"user"
. إذا كان الرمز المميز لوحدة النظام الأساسي الموثوقة (TPM) متاحًا على مستوى النظام، ستتضمّن القائمة التي يتم عرضها أيضًا الرمز المميز على مستوى النظام مع id
"system"
. سيكون الرمز المميز على مستوى النظام هو نفسه لجميع الجلسات على هذا الجهاز (الجهاز بمعنى جهاز Chromebook مثلاً).
المعلمات
المرتجعات
-
Promise<Token[]>
الإصدار 131 من Chrome والإصدارات الأحدثلا تتوافق الوعود إلا مع الإصدار Manifest V3 والإصدارات الأحدث، ويجب أن تستخدم المنصات الأخرى عمليات رد الاتصال.
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
يستورد certificate
إلى الرمز المميّز المحدّد إذا كان المفتاح المعتمَد مخزَّنًا في هذا الرمز المميّز. بعد إتمام طلب الشهادة بنجاح، يجب استخدام هذه الدالة لتخزين الشهادة التي تم الحصول عليها وإتاحتها لنظام التشغيل والمتصفّح لأغراض المصادقة.
المعلمات
- tokenId
سلسلة
معرّف الرمز المميّز الذي تعرضه
getTokens
. - الشهادة
ArrayBuffer
ترميز DER لشهادة X.509
- callback
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:() => void
المرتجعات
-
Promise<void>
الإصدار 131 من Chrome والإصدارات الأحدثلا تتوافق الوعود إلا مع الإصدار Manifest V3 والإصدارات الأحدث، ويجب أن تستخدم المنصات الأخرى عمليات رد الاتصال.
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
تزيل هذه الطريقة certificate
من الرمز المميّز المحدّد في حال توفّره. يجب استخدامها لإزالة الشهادات القديمة حتى لا يتم أخذها في الاعتبار أثناء المصادقة ولا تؤدي إلى تشويش خيار الشهادة. يجب استخدامها لتوفير مساحة تخزين في مخزن الشهادات.
المعلمات
- tokenId
سلسلة
معرّف الرمز المميّز الذي تعرضه
getTokens
. - الشهادة
ArrayBuffer
ترميز DER لشهادة X.509
- callback
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:() => void
المرتجعات
-
Promise<void>
الإصدار 131 من Chrome والإصدارات الأحدثلا تتوافق الوعود إلا مع الإصدار Manifest V3 والإصدارات الأحدث، ويجب أن تستخدم المنصات الأخرى عمليات رد الاتصال.