كيفية إضافة ميزة تسجيل الخروج إلى موقع OpenID الممكّن؟

StackOverflow https://stackoverflow.com/questions/1968814

  •  21-09-2019
  •  | 
  •  

سؤال

لقد أضفت مؤخرًا تسجيل الدخول OpenID إلى موقع الويب الخاص بي. لكني لا أعرف كيفية إضافة ميزة تسجيل الدخول.

على سبيل المثال ، عند النقر فوق زر تسجيل الدخول ، يمكنني إظهار نموذج تسجيل الدخول لمزود OpenID المحدد ، على سبيل المثال حساب Google. ومع ذلك ، لا أعرف كيفية تنفيذ زر تسجيل الدخول للتسجيل الخروج من حساب Google.

من فضلك النصيحة.

هل كانت مفيدة؟

المحلول

لا يمكن لـ OpenID Relying Party تسجيل المستخدم من OP ، يمكنك فقط تنفيذ تسجيل الخروج المحلي. تماما مثل RP لا يمكن تسجيل المستخدم إلى OP.

نصائح أخرى

يقدم مقدمو OpenID الفرديين عناوين URL مختلفة لتسجيل الدخول الذي يمكن إعادة توجيه المستخدم إليه.

جوجل: https://www.google.com/accounts/logout

ياهو: https://login.yahoo.com/config/login؟logout=1

كان هناك مناقشة للسماح للعمليات بتوفير هذه عناوين URL كجزء من المعيار ؛ نرى هذه المناقشة على القائمة البريدية OpenID.

أعتقد أنك تمزج النماذج (تكره هذه الكلمة ، لكن لا يمكنك التفكير في أفضل لاستخدامها الآن). يرسل رابط تسجيل الدخول الخاص بك المستخدم إلى مزود OpenID الخاص به للمصادقة ، ولكن ليس المستخدم يقوم بتسجيل الدخول إلى حساب Google الخاص بهم ، فهذا هو الشيء المهم ، وهو يقوم بتسجيل الدخول إلى موقع الويب الخاص بك ، من خلال توفير بيانات الاعتماد عبر OpenID. قد يتم بالفعل تسجيل الدخول إلى المستخدم إلى مزود OpenID الخاص به ؛ أنت (لا يمكنك) أن تعرف ولا يجب أن تهتم.

وبالمثل ، يجب على رابط تسجيل الدخول على موقعك تسجيل الدخول إلى المستخدم خارج موقعك فقط ، وإعادته إلى نفس الحالة كما كان قبل النقر فوق زر تسجيل الدخول. ربما يكون المستخدم قد قام بتسجيل الخروج من مزود OpenID الخاص به بالفعل ؛ أنت لا تعرف ولا تهتم. هذا الموقع مثال جيد :).

مجرد تدمير الجلسة.

يمكنك فقط تنفيذ تسجيل الخروج المحلي لـ OpenID. كما قال Charles Duffy ، يمكنك دائمًا استخدام عناوين URL محددة ، لكن يتم توفير ذلك للمستخدم يستخدم مزودًا تعرف عنوان URL LogOUT. يمكن أن يكون ذلك أمرًا مخيفًا إذا اكتشف المستخدم الخاص بك أن جميع حسابات Google الخاصة به قد تم تسجيلها عند تسجيل الدخول لموقع الويب الخاص بك.

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

يوفر هذا (IMHO) أمانًا أفضل إذا كانوا يستخدمونه من محطة عامة. سيضمن ذلك أن المستخدم الذي يقوم بتسجيل الدخول يحتاج دائمًا إلى إعادة صياغة كلمة المرور الخاصة به.

للقيام بذلك في الواقع بسيط للغاية ، ما عليك سوى استخدام pape extrention OpenId.ns.pape = "http://specs.openid.net/extensions/pape/1.0".
OpenId.pape.max_auth_age = 0

كجزء من عنوان URL عندما تقوم بتسجيل الدخول إلى مزود مفتوح.

مزيد من المعلومات هنا http://code.google.com/apis/accounts/docs/openid.html

فيما يلي خدعة واحدة يمكنني من خلالها تسجيل الدخول من Google:

<iframe id="myIFrame" src="" style='display:none;' > 
 function logOutGoogle(){
     document.getElementById('myIFrame').src='https://www.google.com/accounts/Logout';
     timeOut();
 }

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

يجب أن تكون قد أنشأت بعض متغيرات الجلسة بعد التحقق الناجح من OpenID Provider ، فأنت بحاجة فقط إلى تدمير متغيرات الجلسة هذه. لا يمكنك تدمير الجلسة التي يتم إنشاؤها بواسطة مزود OpenID.

فيما يلي حل جدير بالثقة لتسجيل الخروج من Google و RP.

فقط اتصل بهذا URI

https://www.google.com/accounts/logout؟continue=https://appengine.google.com/_ah/logout؟continue=https://www.yourapp.com

سوف يقوم بتسجيل الدخول إلى Google وإعادة توجيه إلى تطبيقك. شكرًا!

سرعان ما سأقوم بنشر حل تسجيل الدخول الخاص بي لنظام التشغيل Windows Live و Facebook.com STS.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top