OpenID الأمن:RPs لا تضمن أن المصادقة تمت الموافقة من قبل مزود الفعلية

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

سؤال

الوصف العام

لقد نفذت العملية (OpenID مقدم) ، وذلك باستخدام DotNetOpenAuth.أنا اختبار ضد المثال RPs (الاعتماد الأطراف) ، مثل دروبال OpenID تسجيل الدخول ، OpenIdRelyingPartyWebForms المشروع في DotNetOpenAuth هو Samples الحل.

المشكلة هي أنه بقدر ما استطيع ان اقول ، عندما متصفح مستبعد ضد المرجع يرسل "المصادقة الناجحة" طلب (mode: id_res, claimed_id: smth, إلخ.) العودة إلى RP, RP لا تحاول إجراء من جانب الملقم طلب إلى المرجع نسأل إذا كان فعلا مصادقة المستخدم.أستطيع أن أرى أن هناك openid.sig التوقيع عاد من العملية, ولكن مرة أخرى, أنا لا أرى كيف RP يمكن التحقق من ذلك, لأنه لم تبادل مفاتيح مع المرجع.

لذا فإن السؤال هو: هناك بعض الإعدادات على المرجع الجانب الذي أنا يمكن أن تجعل سير العمل آمنة ؟

التفاصيل التقنية

أنا استخدام يريشارك شم HTTP حركة المرور على RP الجانب.لا يوجد HTTPS, حتى أستطيع أن أرى وقراءة كافة الرسائل.أدناه تستطيع أن ترى ما يحدث بالضبط. ب = المتصفح ، OP = OpenID مقدم ، RP = الطرف المعول.أسماء النطاقات يتم استبدال *.example.com.

  1. (B –> RP) يحاول المستخدم لزيارة أعضاء فقط من الموارد على الطرف المعول.انه مدخلات العملية نقطة النهاية التي متصفح المشاركات RP.

    openid_identifier: http://OP.example.com/OpenId/Provider.aspx?xrds

  2. (RP –> OP –> RP) RP القضايا من جانب الخادم طلب إلى المرجع الذي ترجع XRDS الوثيقة.لا أستطيع أن أرى أي شيء مماثل على المفتاح السري الصرف هنا.

    <?xml version="1.0" encoding="UTF-8"?>
    <xrds:XRDS
        xmlns:xrds="xri://$xrds"
        xmlns:openid="http://openid.net/xmlns/1.0"
        xmlns="xri://$xrd*($v*2.0)">
        <XRD>
            <Service priority="10">
                <Type>http://specs.openid.net/auth/2.0/server</Type>
                <Type>http://openid.net/extensions/sreg/1.1</Type>
                <URI>http://OP.example.com/OpenId/Provider.aspx</URI>
            </Service>
        </XRD>
    </xrds:XRDS>
    
  3. (RP –> B> OP) الطرف المعول 302-توجيه المستخدم إلى OP /OpenId/Provider.aspx?[params] URL ، حيث params هي التالية:

    openid.claimed_id: http://specs.openid.net/auth/2.0/identifier_select
    openid.identity: http://specs.openid.net/auth/2.0/identifier_select
    openid.assoc_handle: {634730422000625000}{jkQC1Q==}{32}
    openid.return_to: http://RP.example.com/login.aspx?ReturnUrl=%2FMembersOnly%2FDefault.aspx&dnoa.receiver=ctl00_Main_OpenIdLogin1&dnoa.UsePersistentCookie=Session&dnoa.userSuppliedIdentifier=http%3A%2F%2FOP.example.com%2FOpenId%2FProvider.aspx%3Fxrds
    openid.realm: http://RP.example.com/
    openid.mode: checkid_setup
    openid.ns: http://specs.openid.net/auth/2.0
    openid.ns.sreg: http://openid.net/extensions/sreg/1.1
    openid.sreg.policy_url: http://RP.example.com/PrivacyPolicy.aspx
    openid.sreg.required: email,gender,postcode,timezone
    
  4. (OP –> B> RP) مزود يصادق على المستخدم 302-إعادة توجيه له إلى RP التالية معلمات عنوان URL.

    ReturnUrl: /MembersOnly/Default.aspx
    dnoa.receiver: ctl00_Main_OpenIdLogin1
    dnoa.UsePersistentCookie: Session
    dnoa.userSuppliedIdentifier: http://OP.example.com/OpenId/Provider.aspx?xrds
    openid.claimed_id: http://OP.example.com/OpenId/User.aspx/2925
    openid.identity: http://OP.example.com/OpenId/User.aspx/2925
    openid.sig: pWJ0ugjQATKGgRSW740bml9LDsSxFiJ+a9OLO6NlsvY=
    openid.signed: claimed_id,identity,assoc_handle,op_endpoint,return_to,response_nonce,ns.sreg,sreg.nickname,sreg.email
    openid.assoc_handle: {634730422000625000}{jkQC1Q==}{32}
    openid.op_endpoint: http://OP.example.com/OpenId/Provider.aspx
    openid.return_to: http://RP.example.com/login.aspx?ReturnUrl=%2FMembersOnly%2FDefault.aspx&dnoa.receiver=ctl00_Main_OpenIdLogin1&dnoa.UsePersistentCookie=Session&dnoa.userSuppliedIdentifier=http%3A%2F%2FOP.example.com%2FOpenId%2FProvider.aspx%3Fxrds
    openid.response_nonce: 2012-05-19T16:40:11ZSfsL4BK1
    openid.mode: id_res
    openid.ns: http://specs.openid.net/auth/2.0
    openid.ns.sreg: http://openid.net/extensions/sreg/1.1
    openid.sreg.nickname: user@OP.example.com
    openid.sreg.email: user@OP.example.com
    
  5. (RP –> OP) RP ينفذ من جانب الملقم طلب HTTP إلى المرجع.لا يوجد نقل البيانات, مجرد الحصول على طلب المكتسبة سابقا من هوية المستخدم URL.لماذا لا تجعل هذا الطلب في جميع بالمناسبة ؟

    GET /OpenId/User.aspx/2925 HTTP/1.1
    
  6. (OP –> RP) OP الردود مع آخر XRDS الوثيقة:

    <xrds:XRDS
        xmlns:xrds="xri://$xrds"
        xmlns:openid="http://openid.net/xmlns/1.0"
        xmlns="xri://$xrd*($v*2.0)">
        <XRD>
            <Service priority="10">
                <Type>http://specs.openid.net/auth/2.0/signon</Type>
                <Type>http://openid.net/extensions/sreg/1.1</Type>
                <URI>http://OP.example.com/OpenId/Provider.aspx</URI>
            </Service>
            <Service priority="20">
                <Type>http://openid.net/signon/1.0</Type>
                <Type>http://openid.net/extensions/sreg/1.1</Type>
                <URI>http://OP.example.com/OpenId/Provider.aspx</URI>
            </Service>
        </XRD>
    </xrds:XRDS>
    
  7. (RP –> B) هذا هو.المستخدم هو أذن و RP يظهر له أعضاء فقط من الموارد.

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

المحلول

RPs يمكن أن تعمل في جليل أو عديمي الجنسية وسائط (المعروف أيضا باسم الذكية و الغبية وسائط ، على التوالي).تحقق من شبكة الرسوم البيانية لكل.

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

بخصوص سؤالك عن #5 (HTTP رئيس الطلب ادعى معرف) هذا هو DotNetOpenAuth RP التحقق من أن المرجع هو مخول من أجل الهوية هو تأكيد.لأنه سبق أن سحبت هذا الرابط, ذاكرة التخزين المؤقت في ركلات والابتعاد عن المحتوى إحالة.

نصائح أخرى

أنا أشعر بالغباء الآن, لقد غاب عن شيء الأساسية—هناك هو تبادل المفاتيح بين RP OP, ولكن هذا يحدث فقط مرة واحدة ، ثم اضغط على مفتاح مؤقتا في كلا الجانبين لبعض الوقت.

لذا تنفيذ OpenID مزود تتحول إلى أن تكون آمنة :)

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