على الأطراف المعتمِدة (RP) إكمال الخطوات التالية لتفعيل FedCM على مواقعها الإلكترونية:
- تأكَّد من السماح بنقاط نهاية FedCM على موقع RP الإلكتروني.
- استخدِم FedCM JavaScript API لبدء مصادقة المستخدم.
- قدِّم البيانات الوصفية الخاصة بهم (مثل عناوين URL لسياسة الخصوصية وبنود الخدمة) إلى موفّر الهوية (أو عدة موفّري هوية من Chrome 136).
- [اختياري] يمكنك تخصيص تجربة المستخدم من خلال اختيار وضع تجربة المستخدم، أو تقديم تلميحات تسجيل الدخول أو تلميحات النطاق، أو تمرير مَعلمات مخصّصة، أو طلب معلومات مستخدم محدّدة، أو تقديم رسالة خطأ مخصّصة، أو اختيار طريقة إعادة مصادقة المستخدمين.
استدعاء واجهة برمجة التطبيقات FedCM API على الجهة المعتمِدة
بعد توفّر إعدادات موفِّر الهوية ونقاط النهاية، يمكن لأطراف الاعتماد استدعاء navigator.credentials.get()
لطلب السماح للمستخدم بتسجيل الدخول إلى طرف الاعتماد باستخدام موفِّر الهوية.
قبل استدعاء واجهة برمجة التطبيقات، عليك التأكّد من توفّر FedCM على متصفّح المستخدم. للتأكّد من توفّر FedCM، ضع هذا الرمز حول عملية تنفيذ FedCM:
if ('IdentityCredential' in window) {
// If the feature is available, take action
} else {
// FedCM is not supported, use a different identity solution
}
للسماح للمستخدم بتسجيل الدخول إلى موفِّر الهوية على الطرف المعتمَد باستخدام FedCM، يمكن للطرف المعتمَد استدعاء navigator.credentials.get()
. اعتبارًا من الإصدار 136 من Chrome، يمكن أن يعرض الطرف المعتمد عدة موفّري هوية من خلال تحديد مصفوفة من موفّري الهوية المتعددين في طلب navigator.credentials.get()
واحد، على سبيل المثال:
const credential = await navigator.credentials.get({
identity: {
// Specify the IdP (or multiple IdPs, supported from Chrome 136) this Relying Party supports
providers: [
{
configURL: 'https://accounts.idp-1.example/config.json',
clientId: '********'
},
{
configURL: 'https://accounts.idp-2.example/config.json',
clientId: '********'
}]
}
},
);
const { token } = credential;
// Get the current IdP's configURL to identify which provider the user is signed in with
const currentIdpConfigUrl = credential.configURL;
if (currentIdpConfigUrl === 'https://idp1.example/foo.json') {
// handle the case where the user signed in with idp1
} else if (currentIdpConfigUrl === 'https://idp2.example/bar.json') {
// handle the case where the user signed in with idp2
}
جرِّب ميزة موفِّري الهوية المتعدّدين من خلال تسجيل الدخول باستخدام IdP1 وIdP2.
سمة السياق
باستخدام السمة الاختيارية context
، يمكن لموفّر الخدمة تعديل السلسلة في واجهة مستخدم مربّع الحوار FedCM (على سبيل المثال، "تسجيل الدخول إلى rp.example…" أو "استخدام idp.example…") لاستيعاب سياقات المصادقة المحدّدة مسبقًا، مثلاً. يمكن أن تتضمّن السمة context
القيم التالية:
signin
(تلقائي)signup
use

على سبيل المثال، سيؤدي ضبط context
على use
إلى ظهور الرسالة التالية:

يتعامل المتصفّح مع حالات استخدام التسجيل وتسجيل الدخول بشكل مختلف استنادًا إلى ما إذا كان approved_clients
متوفّرًا في الردّ من نقطة نهاية قائمة الحسابات.
لن يعرض المتصفّح نص إفصاح "للمتابعة مع ...." إذا كان المستخدم قد اشترك في "منصة إعادة الشراء" من قبل.
تتلقّى السمة providers
صفيفة من عناصر IdentityProvider
التي تتضمّن السمات التالية:
سمة "مقدّمو الخدمة"
تتلقّى السمة providers
صفيفة من عناصر IdentityProvider
التي تتضمّن السمات التالية:
الموقع | الوصف |
---|---|
configURL (مطلوب) |
المسار الكامل لملف إعداد موفِّر الهوية |
clientId (مطلوب) |
معرّف العميل الخاص بطرف الاعتماد، والذي يقدّمه موفّر الهوية. |
loginHint (اختياري) |
من خلال تحديد إحدى قيم login_hints التي توفّرها نقاط نهاية الحسابات، يعرض مربّع حوار FedCM الحساب المحدّد بشكل انتقائي. |
domainHint (اختياري) |
من خلال تحديد إحدى قيم domain_hints التي توفّرها نقاط نهاية الحسابات، يعرض مربّع حوار FedCM الحساب المحدّد بشكل انتقائي. |
mode (اختياري) |
سلسلة تحدّد وضع واجهة المستخدم في FedCM. يمكن أن تكون إحدى القيم التالية:
ملاحظة: تتوفّر المَعلمة mode بدءًا من الإصدار 132 من Chrome.
|
fields (اختياري) |
مصفوفة من السلاسل تحدّد معلومات المستخدم التي يحتاج الطرف المعتمد إلى أن يشاركها معه موفّر الهوية. يمكن تحديد الحقول التالية بشكل اختياري:
"username" و"tel" بدءًا من الإصدار 141 من Chrome.
|
params (اختياري) |
عنصر مخصّص يتيح تحديد معلَمات إضافية للمفتاح والقيمة:
ملاحظة: تتوفّر params بدءًا من الإصدار 132 من Chrome.
|
وضع النشاط
تتيح واجهة برمجة التطبيقات FedCM API إعدادات مختلفة لوضع تجربة المستخدم. الوضع السلبي هو الوضع التلقائي، ولا يحتاج المطوّرون إلى ضبطه.
لاستخدام FedCM في الوضع النشط، اتّبِع الخطوات التالية:
- تحقَّق من توفّر الميزة في متصفّح المستخدم.
- استدعِ واجهة برمجة التطبيقات باستخدام إيماءة مستخدم مؤقتة، مثل النقر على زر.
- مرِّر المَعلمة
mode
إلى طلب البيانات من واجهة برمجة التطبيقات:
let supportsFedCmMode = false;
try {
navigator.credentials.get({
identity: Object.defineProperty(
// Check if this Chrome version supports the Mode API.
{}, 'mode', {
get: function () { supportsFedCmMode = true; }
}
)
});
} catch(e) {}
if (supportsFedCmMode) {
// The button mode is supported. Call the API with mode property:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/config.json',
clientId: '123',
}],
// The 'mode' value defines the UX mode of FedCM.
// - 'active': Must be initiated by user interaction (e.g., clicking a button).
// - 'passive': Can be initiated without direct user interaction.
mode: 'active'
}
});
}
جرِّب "الوضع النشط" من خلال هذا العرض التوضيحي.
رمز مخصّص في وضع النشاط
يتيح الوضع النشط لموفّري خدمات تحديد الهوية تضمين رمز شعار الجهة الاعتمادية الرسمي مباشرةً في استجابة نقطة نهاية البيانات الوصفية للعميل. على الشريك الترويجي تقديم بيانات علامته التجارية مسبقًا.
استدعاء FedCM من داخل إطار iframe متعدد المصادر
يمكن استدعاء FedCM من داخل إطار iframe من مصادر متعددة باستخدام
identity-credentials-get
سياسة الأذونات، إذا كان الإطار الرئيسي يسمح بذلك. لإجراء ذلك، أضِف السمة allow="identity-credentials-get"
إلى علامة إطار iframe على النحو التالي:
<iframe src="https://fedcm-cross-origin-iframe.glitch.me" allow="identity-credentials-get"></iframe>
يمكنك الاطّلاع على طريقة عملها في مثال.
اختياريًا، إذا كان الإطار الرئيسي يريد حصر المصادر التي يمكنها طلب FedCM،
أرسِل العنوان Permissions-Policy
مع قائمة بالمصادر المسموح بها.
Permissions-Policy: identity-credentials-get=(self "https://fedcm-cross-origin-iframe.glitch.me")
يمكنك الاطّلاع على مزيد من المعلومات عن طريقة عمل "سياسة الأذونات" في مقالة التحكّم في ميزات المتصفّح باستخدام "سياسة الأذونات".
Login Hint API
باستخدام Login Hint، يمكن لطرف الاعتماد اقتراح الحساب الذي يجب أن يسجّل المستخدم الدخول باستخدامه. يمكن أن يكون ذلك مفيدًا لإعادة مصادقة المستخدمين الذين لا يتذكرون الحساب الذي استخدموه من قبل.
يمكن أن تعرض منصات الشركاء حسابًا معيّنًا بشكلٍ انتقائي من خلال استدعاء navigator.credentials.get()
مع السمة loginHint
وإحدى قيم login_hints
التي تم استرجاعها من نقطة نهاية قائمة الحسابات، كما هو موضّح في نموذج الرمز البرمجي التالي:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/manifest.json',
clientId: '123',
// Accounts endpoint can specify a 'login_hints' array for an account.
// When RP specifies a 'exampleHint' value, only those accounts will be
// shown to the user whose 'login_hints' array contains the 'exampleHint'
// value
loginHint : 'exampleHint'
}]
}
});
عندما لا تتطابق أي حسابات مع loginHint
، يعرض مربّع حوار FedCM طلب تسجيل دخول، ما يتيح للمستخدم تسجيل الدخول إلى حساب موفّر هوية يتطابق مع التلميح الذي طلبه الطرف المعتمِد. عندما ينقر المستخدم على الطلب، يتم فتح نافذة حوار تتضمّن عنوان URL لتسجيل الدخول المحدّد في ملف الإعداد.
بعد ذلك، تتم إضافة تلميح تسجيل الدخول ومعلَمات طلب البحث الخاصة بتلميح النطاق إلى الرابط.
واجهة برمجة التطبيقات Domain Hint API
يمكن أن تعرض "المنصات الشريكة" بشكلٍ انتقائي الحسابات المرتبطة بنطاق معيّن فقط. ويمكن أن يكون ذلك مفيدًا لشركاء الترويج الذين يقتصرون على نطاق تابع لشركة.
لعرض حسابات نطاق محدّد فقط، يجب أن يستدعي RP الدالة navigator.credentials.get()
مع السمة domainHint
وإحدى قيم domain_hints
التي تم استرجاعها من نقطة نهاية قائمة الحسابات، كما هو موضّح في نموذج الرمز البرمجي التالي:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/manifest.json',
clientId: 'abc',
// Accounts endpoint can specify a 'domain_hints' array for an account.
// When RP specifies a '@domain.example' value, only those accounts will be
// shown to the user whose 'domain_hints' array contains the
// '@domain.example' value
domainHint : '@domain.example'
}]
}
});
عندما لا تتطابق أي حسابات مع domainHint
، يعرض مربّع حوار FedCM طلب تسجيل دخول، ما يتيح للمستخدم تسجيل الدخول إلى حساب موفّر هوية يتطابق مع التلميح الذي طلبه الطرف المعتمِد. عندما ينقر المستخدم على الطلب، يتم فتح نافذة حوار تتضمّن عنوان URL لتسجيل الدخول المحدّد في ملف الإعداد.
بعد ذلك، تتم إضافة تلميح تسجيل الدخول ومعلَمات طلب البحث الخاصة بتلميح النطاق إلى الرابط.

domainHint
يمكنك الاطّلاع على العرض التوضيحي لمزيد من التفاصيل.
المعلمات المخصّصة
تتيح ميزة "المَعلمات المخصّصة" لـ "شريك التزويد" تقديم مَعلمات إضافية على شكل مفتاح وقيمة إلى نقطة نهاية تأكيد المعرّف. باستخدام Parameters API، يمكن لموفّري الخدمات تمرير مَعلمات إضافية إلى موفّر الهوية لطلب أذونات للوصول إلى موارد تتجاوز عملية تسجيل الدخول الأساسية. يمكن أن يكون تمرير معلَمات إضافية مفيدًا في الحالات التالية:
- يحتاج الطرف المعتمد إلى طلب أذونات إضافية بشكل ديناميكي من موفّر خدمة تحديد الهوية، مثل عنوان الفوترة أو إذن الوصول إلى التقويم. يمكن للمستخدم منح هذه الأذونات من خلال مسار تجربة مستخدم يتحكّم فيه موفّر الهوية ويتم تشغيله باستخدام ميزة "المتابعة"، وبعد ذلك يشارك موفّر الهوية هذه المعلومات.
لاستخدام واجهة برمجة التطبيقات، يضيف الشريك المورّد المَعلمات إلى السمة params
كعنصر في طلب navigator.credentials.get()
:
let {token} = await navigator.credentials.get({
identity: {
providers: [{
clientId: '1234',
configURL: 'https://idp.example/fedcm.json',
// Key/value pairs that need to be passed from the
// RP to the IdP but that don't really play any role with
// the browser.
params: {
IDP_SPECIFIC_PARAM: '1',
foo: 'BAR'
}
},
}
});
سيحوّل المتصفّح هذا الطلب تلقائيًا إلى طلب POST إلى موفّر الهوية مع مَعلمات ككائن واحد متسلسل بتنسيق JSON ومشفر بعنوان URL:
// The assertion endpoint is drawn from the config file
POST /fedcm_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
// params are translated into urlencoded version of `{"IDP_SPECIFIC_PARAM":"1","foo":"bar"}`
account_id=123&client_id=client1234¶ms=%22%7B%5C%22IDP_SPECIFIC_PARAM%5C%22%3A1%2C%5C%22foo%5C%22%3A%5C%22BAR%5C%22%7D%22.
إذا كان الطرف المعتمد بحاجة إلى أي أذونات إضافية، يمكن لموفّر خدمة تحديد الهوية تقديم رابط إعادة توجيه. على سبيل المثال، في node.js:
if (rpRequestsPermissions) {
// Response with a URL if the RP requests additional permissions
return res.json({
continue_on: '/example-redirect',
});
}
الحقول
يمكن لطرف الاعتماد تحديد معلومات المستخدم التي يحتاج إلى أن يشاركها معه موفِّر الهوية. يمكن أن يشمل ذلك أي مجموعة من الاسم وعنوان البريد الإلكتروني واسم المستخدم ورقم الهاتف وصورة الملف الشخصي. سيتم تضمين المعلومات المطلوبة في واجهة مستخدم الإفصاح ضمن مربّع حوار FedCM.
ستظهر للمستخدمين الذين يسجّلون الاشتراك رسالة لإعلامهم بأنّ idp.example
سيشارك المعلومات المطلوبة مع rp.example
إذا اختار المستخدم التسجيل. إذا لم تتضمّن الاستجابة من نقطة نهاية الحسابات
حقلًا طلبه "الطرف المعتمد"، لن يتضمّن نص الإفصاح
هذا الحقل. ستتعرّف خدمة IdP على جميع الحقول المطلوبة من
نقطة نهاية تأكيد الهوية
وتحدّد ما إذا كان عليها الحصول على إذن إضافي من المستخدم للمتابعة.

لاستخدام ميزة "الحقول"، يجب أن يضيف RP مصفوفة fields
في طلب navigator.credentials.get()
. يمكن أن تحتوي الحقول على سمات مثل name
أو email
أو tel
أو username
أو picture
. ويمكن توسيع نطاق هذه القيم لتشمل المزيد في المستقبل. سيبدو الطلب الذي يتضمّن fields
على النحو التالي:
let { token } = await navigator.credentials.get({
identity: {
providers: [{
// RP requests the IdP to share only username and profile picture
fields: [ 'username', 'picture'],
clientId: '1234',
configURL: 'https://idp.example/fedcm.json',
},
}
});
سيترجم المتصفّح تلقائيًا هذا الطلب إلى طلب HTTP إلى نقطة نهاية تأكيد الهوية
التي تتضمّن المَعلمة fields
التي حدّدها الطرف المعتمِد، مع الحقول التي
كشف عنها المتصفّح للمستخدم في المَعلمة disclosure_shown_for
. لضمان التوافق مع الإصدارات القديمة، سيرسل المتصفّح أيضًا disclosure_text_shown=true
إذا تم عرض نص الإفصاح وكانت الحقول المطلوبة تتضمّن جميع الحقول الثلاثة: 'name'
و'email'
و'picture'
. بدءًا من الإصدار 141 من Chrome، لا تشير قيمة
disclosure_text_shown
إلى ما إذا كان نص الإفصاح قد تم عرضه للمستخدم فعلاً.
POST /id_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
// The RP only requested to share email and picture. The browser will send `disclosure_text_shown=false`, as the 'name' field value is missing
account_id=123&client_id=client1234&disclosure_text_shown=false&fields=email,picture&disclosure_shown_for=email,picture
إذا كانت fields
عبارة عن مصفوفة فارغة، سيتخطّى وكيل المستخدم واجهة مستخدم الإفصاح.

ويحدث ذلك حتى إذا لم تتضمّن الاستجابة من نقطة نهاية الحسابات
رقم تعريف عميل مطابقًا لـ RP في approved_clients
.
في هذه الحالة، تكون قيمة disclosure_text_shown
المُرسَلة إلى نقطة نهاية تأكيد المعرّف
هي "خطأ" في نص HTTP:
POST /id_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
account_id=123&client_id=client1234&nonce=234234&disclosure_text_shown=false
عرض رسالة خطأ
في بعض الأحيان، قد يتعذّر على موفّر خدمة تحديد الهوية إصدار رمز مميّز لأسباب مشروعة، مثل عندما يكون العميل غير مصرَّح له أو عندما يكون الخادم غير متاح مؤقتًا. إذا أرجع موفّر الهوية ردًا يتضمّن "خطأ"، يمكن أن يرصد الطرف المعتمد ذلك، ويمكن أن يرسل Chrome إشعارًا إلى المستخدم من خلال عرض واجهة مستخدم المتصفّح مع معلومات الخطأ التي يقدّمها موفّر الهوية.

try {
const cred = await navigator.credentials.get({
identity: {
providers: [
{
configURL: 'https://idp.example/manifest.json',
clientId: '1234',
},
],
}
});
} catch (e) {
const code = e.code;
const url = e.url;
}
إعادة مصادقة المستخدمين تلقائيًا بعد المصادقة الأولية
تتيح ميزة إعادة المصادقة التلقائية في FedCM (يُشار إليها اختصارًا باسم "auto-reauthn") للمستخدمين إعادة المصادقة تلقائيًا. يجب استيفاء الشروط التالية لإعادة مصادقة المستخدم تلقائيًا:
- أجرى المستخدم المصادقة الأولية من قبل باستخدام FedCM. يشير مصطلح "المصادقة الأولية" هنا إلى أنّ المستخدم ينشئ حسابًا أو يسجّل الدخول إلى الموقع الإلكتروني الخاص بموفّر الهوية من خلال النقر على الزر "المتابعة باسم..." في مربّع حوار تسجيل الدخول في FedCM لأول مرة على مثيل المتصفّح نفسه.
- لدى المستخدم حساب واحد فقط متكرّر. إذا كانت هناك حسابات متكررة مرتبطة بموفّري هوية متعدّدين، لن تتم إعادة مصادقة المستخدم تلقائيًا.
في حين أنّ تجربة المستخدم الواضحة منطقية قبل أن ينشئ المستخدم حسابًا موحّدًا لمنع التتبّع (وهو أحد الأهداف الرئيسية لـ FedCM)، تصبح هذه التجربة مرهقة بلا داعٍ بعد أن يمرّ بها المستخدم مرة واحدة: بعد أن يمنح المستخدم الإذن بالسماح بالتواصل بين الطرف الاعتماد وموفّر الهوية، لن يكون هناك أي فائدة تتعلق بالخصوصية أو الأمان من فرض تأكيد آخر صريح من المستخدم على أمر سبق له الموافقة عليه.
باستخدام ميزة إعادة المصادقة التلقائية، يغيّر المتصفّح سلوكه استنادًا إلى الخيار الذي تحدّده للسمة mediation
عند استدعاء navigator.credentials.get()
.
const cred = await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/fedcm.json',
clientId: '1234',
}],
},
mediation: 'optional', // this is the default
});
// `isAutoSelected` is `true` if auto-reauthn was performed.
const isAutoSelected = cred.isAutoSelected;
mediation
هي سمة في Credential Management API،
وتعمل بالطريقة نفسها
التي تعمل بها مع
PasswordCredential
وFederatedCredential،
كما أنّها متوافقة جزئيًا مع
PublicKeyCredential. تقبل السمة القيم الأربع التالية:
-
'optional'
(الإعداد التلقائي): إعادة المصادقة تلقائيًا إذا أمكن ذلك، ويتطلّب ذلك وسيطًا إذا لم يكن ممكنًا. ننصحك باختيار هذا الخيار في صفحة تسجيل الدخول. -
'required'
: تتطلّب دائمًا وسيطًا للمتابعة، مثل النقر على الزرّ "متابعة" في واجهة المستخدم. اختَر هذا الخيار إذا كان من المتوقّع أن يمنح المستخدمون الإذن بشكل صريح في كل مرة يحتاجون فيها إلى إثبات الهوية. -
'silent'
: إعادة المصادقة تلقائيًا إذا كان ذلك ممكنًا، أو عدم إجراء أي عملية بدون طلب توسّط إذا لم يكن ذلك ممكنًا. ننصحك باختيار هذا الخيار على الصفحات الأخرى غير صفحة تسجيل الدخول المخصّصة، ولكن حيث تريد إبقاء المستخدمين مسجّلين الدخول، مثل صفحة منتج على موقع إلكتروني خاص بالشحن أو صفحة مقالة على موقع إلكتروني خاص بالأخبار. -
'conditional'
: يُستخدَم هذا النوع مع WebAuthn، وهو غير متاح مع FedCM في الوقت الحالي.
من خلال هذه المكالمة، تتم إعادة المصادقة تلقائيًا في الحالات التالية:
- تتوفّر واجهة برمجة التطبيقات FedCM API للاستخدام. على سبيل المثال، لم يسبق للمستخدم إيقاف FedCM على مستوى العالم أو لم يسبق له إيقافه لمقدّم الخدمة في الإعدادات.
- استخدم المستخدِم حسابًا واحدًا فقط مع واجهة برمجة التطبيقات FedCM لتسجيل الدخول إلى الموقع الإلكتروني على هذا المتصفّح.
- سجّل المستخدم الدخول إلى موفِّر الهوية باستخدام هذا الحساب.
- لم تتم إعادة المصادقة تلقائيًا خلال آخر 10 دقائق.
- لم يطلب منك موفّر الخدمة
navigator.credentials.preventSilentAccess()
بعد تسجيل الدخول السابق.
عند استيفاء هذه الشروط، تبدأ محاولة إعادة مصادقة المستخدم تلقائيًا فور استدعاء واجهة برمجة التطبيقات navigator.credentials.get()
في FedCM.
عندما تكون قيمة mediation: optional
هي true، قد تكون ميزة إعادة المصادقة التلقائية غير متاحة لأسباب لا يعرفها سوى المتصفّح، ويمكن للطرف المعتمد التحقّق مما إذا تم تنفيذ إعادة المصادقة التلقائية من خلال فحص السمة isAutoSelected
.
ويساعد ذلك في تقييم أداء واجهة برمجة التطبيقات وتحسين تجربة المستخدم وفقًا لذلك.
عندما لا يتوفّر هذا الخيار، قد يُطلب من المستخدم تسجيل الدخول باستخدام وسيطة المستخدم الصريحة، وهي عبارة عن مسار يتضمّن mediation: required
.
فرض التوسّط باستخدام preventSilentAccess()
لن تكون تجربة المستخدم جيدة إذا تمت إعادة مصادقة المستخدمين تلقائيًا بعد تسجيل خروجهم مباشرةً. لهذا السبب، تتضمّن FedCM فترة حظر مدتها 10 دقائق بعد إعادة المصادقة تلقائيًا لمنع هذا السلوك. وهذا يعني أنّ إعادة المصادقة التلقائية تحدث مرة واحدة على الأكثر كل 10 دقائق ما لم يسجّل المستخدم الدخول مرة أخرى خلال 10 دقائق. على الجهة المعتمدة (RP) طلب navigator.credentials.preventSilentAccess()
صراحةً من المتصفّح إيقاف إعادة المصادقة التلقائية عندما يسجّل المستخدم الخروج
من الجهة المعتمدة صراحةً، مثلاً بالنقر على زر تسجيل الخروج.
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
يمكن للمستخدمين إيقاف ميزة إعادة المصادقة التلقائية في الإعدادات
يمكن للمستخدمين إيقاف إعادة المصادقة تلقائيًا من قائمة الإعدادات باتّباع الخطوات التالية:
- على إصدار Chrome المخصّص لأجهزة الكمبيوتر، انقر على
chrome://password-manager/settings
> تسجيل الدخول تلقائيًا. - على متصفّح Chrome على Android، افتح الإعدادات > مدير كلمات المرور > انقر على رمز الترس في أعلى يسار الصفحة > تسجيل الدخول تلقائيًا.
من خلال إيقاف الزر، يمكن للمستخدم إيقاف سلوك إعادة المصادقة التلقائية بالكامل. يتم تخزين هذا الإعداد ومزامنته على جميع الأجهزة إذا كان المستخدم مسجّلاً الدخول إلى حساب Google على مثيل Chrome وتم تفعيل المزامنة.
إلغاء ربط موفِّر الهوية بطرف الاعتماد
إذا سبق للمستخدم تسجيل الدخول إلى الطرف المعتمِد باستخدام موفِّر الهوية من خلال FedCM، سيتذكّر المتصفّح العلاقة محليًا كقائمة بالحسابات المرتبطة. يمكن أن يبدأ RP عملية قطع الاتصال من خلال استدعاء الدالة IdentityCredential.disconnect()
. يمكن طلب هذه الدالة من إطار RP ذي مستوى أعلى. على الجهة المعتمدة تمرير configURL
وclientId
الذي تستخدمه
بموجب موفِّر الهوية وaccountHint
ليتم قطع الاتصال بموفِّر الهوية. يمكن أن يكون تلميح الحساب سلسلة عشوائية طالما أنّ نقطة نهاية قطع الاتصال يمكنها تحديد الحساب، مثل عنوان بريد إلكتروني أو معرّف مستخدم لا يتطابق بالضرورة مع معرّف الحساب الذي قدّمته نقطة نهاية قائمة الحسابات:
// Disconnect an IdP account 'account456' from the RP 'https://idp.com/'. This is invoked on the RP domain.
IdentityCredential.disconnect({
configURL: 'https://idp.com/config.json',
clientId: 'rp123',
accountHint: 'account456'
});
تعرض الدالة IdentityCredential.disconnect()
قيمة Promise
. قد يؤدي هذا الوعد إلى حدوث استثناء للأسباب التالية:
- لم يسجِّل المستخدم الدخول إلى الطرف المعتمَد باستخدام موفِّر الهوية من خلال FedCM.
- يتم استدعاء واجهة برمجة التطبيقات من داخل إطار iframe بدون سياسة أذونات FedCM.
- عنوان URL الخاص بالإعدادات غير صالح أو لا يتضمّن نقطة نهاية قطع الاتصال.
- فشل التحقّق من "سياسة أمان المحتوى" (CSP).
- هناك طلب فصل في انتظار المراجعة.
- أوقف المستخدم FedCM في إعدادات المتصفّح.
عندما تعرض نقطة نهاية قطع الاتصال الخاصة بموفّر خدمة تحديد الهوية استجابة، يتم قطع الاتصال بين الطرف المعتمد وموفّر خدمة تحديد الهوية على المتصفّح ويتم تنفيذ الوعد. يتم تحديد أرقام تعريف الحسابات التي تم إلغاء ربطها في الردّ من نقطة نهاية إلغاء الربط.