سؤال

لقد بدأت أشك بشكل خطير في المجتمع المفتوح على الرغم من أنها تعمل.

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

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

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

حيث أضيع ، هو كل المتطلبات والتبعيات المعنية.

  1. ما هو XRD؟
  2. ما هو ياديس؟
  3. لماذا أحتاج إلى XRD و Yadis؟
  4. ما الذي يجب علي فعله لنشر مصادقة OpenID على موقع الويب الخاص بي؟

أيضا ، هذا مهم حقا بالنسبة لي.

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

بطريقة ما ، تعرف Google أنه "Stackoverflow.com" الذي يسألني عما إذا كان من المقبول تسجيل الدخول. وأتمنى أن أعرف ما هي طريقة التحكم التي لدي على هذا النص الصغير. أنوي نشر OpenID على عدة مجالات مختلفة ، لكنني أفضل ما إذا كانوا سيعملون جميعًا دون الحاجة إلى تكوينه بشكل فردي بمعلمات خاصة ، مثل مفاتيح API السرية وما لا. ومع ذلك ، لا أعرف على وجه اليقين ما إذا كان هذا شرطًا أساسيًا لـ OpenID ، أو أو واجهة برمجة تطبيقات تسجيل الدخول الموحدة التي توفرها Google.

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

المحلول 3

لقد وجدت في الواقع حلًا لمشكلتي ، وبشكل هادئ ، كان الأمر بسيطًا للغاية. ما زلت لا أفهم XRDs و Yadis ولكني أستفيد منها بسهولة مثل ذلك.

ما تريده ، وما تبحث عنه هو رمز للقيام بأشياء OpenID "Relaying Party". هذا "أنت" كمستهلك لمقدمي الخدمات المفتوحين. يمكنك إدخال نقطة نهاية مفتوحة وفويلا ، لقد قمت بتمكين موقعك ، ويوضح هذا الرمز ذلك في الممارسة العملية.

// using DotNetOpenAuth
var openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response == null)
{
    // Google account end point (works fine)
    var googleID = "https://www.google.com/accounts/o8/id";
    // Google hosted account end point
    //  https://www.google.com/accounts/o8/site-xrds?hd=mydomain.com
    // I was unable to test this, but I was running my RP (this code)
    // from localhost and it's quite possible that a hosted account RP
    // has to return to the same domain.
    // It went fine, but crashed with a "Unable to resolve mydomain.com" error
    // once I logged in.
    openid.CreateRequest(googleID).RedirectToProvider();
}
else
{
    switch (response.Status)
    {
        case AuthenticationStatus.Authenticated:
            // Success
            // to allow persistance across sessions
            // you'll have to track the "claimed identifier"
            // some OpenID providers allow you to get an email address through
            // extensions but this is not always possible.
            // the claimed identifier is typically your safest bet
            // and it's a big URL which uniquely identifies the guest
            // as a specific user, however, you know very little about this user
            // which is a good thing becuase you don't have to give out personal or
            // sensitive information to start using a service.
            break;

        default:
            // Something went wrong, check Status property
            break;
    }
}

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

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

نصائح أخرى

للإجابة على سؤالك فعليًا (أي تجاهل جميع النقاط الجدلية) أنا باستخدامنا باستخدامنا dotnetopenauth لتنفيذ تفويض مفتوح لأحد مواقعي ؛ وكانت تافهة تماما.

إنه مجرد عنصر تحكم .NET الذي تسقطه ، وتكوين كمية صغيرة من الأشياء ، ثم اتركه يرتبط بمصادقة النماذج. جميل جدا.

حسنًا ، لديك الكثير من الأسئلة تحت رأس واحد هناك. اسمحوا لي أن أرى ما إذا كان بإمكاني كسرها.

XRD و Yadis:

كان "yadis" هو اسم جزء اكتشاف الخدمة من OpenId - الشيء الذي يحصل عليك من "my OpenId is example.com" إلى "الخادم الرسمي لـ OpenID الخاص بي هو على OpenID.example.com/server ويدعم v2 مع امتدادات الفأس. " XRDS هو مخطط XML الذي يحمل تلك المعلومات.

(حقيقة أن OpenID (معيار قمنا بتطويره من خلال أي هيئة معايير معترف به) يعتمد على XRD (من معيار آخر في العمل في جسم معايير مختلف تمامًا) ربما يكون من المؤسف. كل ما يمكنني قوله هو أنه بدا وكأنه فكرة جيدة في ذلك الوقت.)

"ماذا علي أن أفعل للنشر؟"

انظر جوزيف سمير وصفة لموقعك. البقرة المقدسة ، هذا عمره 2 سنة بالفعل؟ ومع ذلك ، لا تزال ذات صلة.

كيف يحدد مزود OpenID موقعك (الطرف الاعتماد):

هذا النص الصغير (على سبيل المثال "stackoverflow.com") هو "عالم" مفتوح ، وهو معلمة تنقلها إلى المزود وهي مجموعة فرعية صارمة من عنوان URL لنقطة النهاية التي تستخدمها لمعالجة استجابتها. (لذلك إذا أخبرت الخادم إرسال استجابة OpenID إلى server2.example.com/foobar ، يمكن أن يكون عالمك مثالًا على سبيل المثال أو server2.example.com أو server2.example.com/foobar ، ولكن ليس server99.example .com.)

مفاتيح API السرية:

بشكل عام ، لا يوجد مفتاح API السري خارج النطاق. بالنسبة لمقدمي الخدمات المفتوحة للأغراض العامة ، يتم إصدار المفاتيح للتو من خلال آلية الجمعية OpenID القياسية.

الآن لقد ضربت بعض الميزات هنا والتي قد يعتبرها مزود مفتوح بالتأكيد ذا قيمة-مثل "كيف يمكنني إخبار المستخدم بطريقة أكثر سهولة في استخدام الموقع الذي يقومون بتسجيل الدخول إليه بدلاً "كيف يمكنني تحديد هذا الطلب يأتي حقًا من RP ، لدي نوع من العلاقة التعاقدية مع" ، ولكن هذه الميزات ليست أي شيء في OpenID 2.0.

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

من خلال العمل كبديل بين مزودي هوية الطرف الثالث وموقع الويب الخاص بك ، يساعدك RPX في مصادقة المستخدمين دون عناء مع حسابهم الحالي على Facebook أو Google أو Yahoo! ، Twitter أو MySpace أو AOL أو Windows Live/MSN/Hotmail أو أي مزود مفتوح آخر.

في تجربتي ، نعم.

كنت أحاول استخدام dotnetopenauth ، وتحديداً على مونو ، ولم أحصل على أي مكان سريع ، وحاولت الكثير من الطرق لجعله يعمل ، وانتهى بي الأمر بالإحباط الشديد.

مع عدم وجود بدائل استخدمتها loginradius (استخدم بالفعل مع موقع WordPress الذي كان لدي) ، ووجدته أسهل بكثير ، بالإضافة إلى أنه يبرز نافذة منبثقة للقيام بالمصادقة وهي كيف كنت أرغب في ذلك مع dotnetopenauth.

تبدو حرة في الوقت الحالي ، لكنها تقول بيتا. لذلك قد يتقاضون رسومًا مقابل ذلك في المستقبل ...

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