Passport-http-bearer: كيف تعمل النطاقات؟

تم إنشاؤها على ٥ مارس ٢٠١٢  ·  3تعليقات  ·  مصدر: jaredhanson/passport-http-bearer

مرحبا جاريد ،

أجد صعوبة في الالتفاف حول كيفية تعامل جواز السفر مع النطاقات. هذا هو السيناريو الخاص بي:

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

app.use ('/ v1'، passport.authenticate ('bearer'، {session: false}):

للقبض على الحالة العادية وللمسارات المحددة التي تتطلب حقوق المسؤول ، أود إضافة شيء مثل هذا إلى البرامج الوسيطة للمسار ، مثل
.. Passport.authenticate ('bearer'، {session: false، scopes: ['admin']})

هل هذا مدعوم بجواز السفر أم يجب علي القيام به بشكل مختلف؟

التعليق الأكثر فائدة

mwawrusch لدي حل لهذا الأمر يسعدني ويعمل بشكل جيد ، وهو نسخة معدلة قليلاً لما ذكرته.

يمكنك الآن تمرير وسيطة ثالثة إلى النجاح ، والتي يتم إرفاقها بواسطة Passport بسعر req.authInfo

passport.use(new BearerStrategy(
  function(token, done) {
    User.findOne({ token: token }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      return done(null, user, { scope: 'profile' });
    });
  }
));

يمكن بعد ذلك استخدام وسيطة المعلومات في البرامج الوسيطة أسفل السلسلة لتنفيذ التفويض والتحكم في الوصول.

app.get('/api/userinfo', 
  passport.authenticate('bearer', { session: false }),
  function(req, res, next) {
    // access control middleware to check for required scope
    if (req.authInfo.scope != 'profile') {
      res.statusCode = 403;
      return res.end('Forbidden');
    }
    return next();
  }
  function(req, res) {
    res.json(req.user);
  });

info هو مجرد كائن JSON عام ، لذلك سيحتاج التطبيق إلى تسوية اصطلاحات ما يتم توفيره. آمل أن يكون هذا مفيدًا أيضًا في تنفيذ البرامج الوسيطة للمصادقة للأغراض العامة.

تتزامن الميزة مع تطوير OAuthorize و OAuth2orize ، والتي تستفيد منها. يمكن استخدامها لتنفيذ خوادم OAuth 1.0 و 2.0 على التوالي. أعتقد أنني رأيت صفحة Quora التي قمت بإنشائها حول هذا الموضوع. سيكون من الرائع إضافة هذه إلى ذلك!

كالعادة ، أرسل لي أي ملاحظات. هتافات!

ال 3 كومينتر

فقط من أجل الاكتمال ، هذا ما أفعله الآن: أقوم ببساطة بإضافة النطاقات إلى كائن المستخدم واستخدام req.user ... وفي مرحلة لاحقة أتحقق مما إذا كان المسار المحدد والنطاق يتطابقان.

mwawrusch لدي حل لهذا الأمر يسعدني ويعمل بشكل جيد ، وهو نسخة معدلة قليلاً لما ذكرته.

يمكنك الآن تمرير وسيطة ثالثة إلى النجاح ، والتي يتم إرفاقها بواسطة Passport بسعر req.authInfo

passport.use(new BearerStrategy(
  function(token, done) {
    User.findOne({ token: token }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      return done(null, user, { scope: 'profile' });
    });
  }
));

يمكن بعد ذلك استخدام وسيطة المعلومات في البرامج الوسيطة أسفل السلسلة لتنفيذ التفويض والتحكم في الوصول.

app.get('/api/userinfo', 
  passport.authenticate('bearer', { session: false }),
  function(req, res, next) {
    // access control middleware to check for required scope
    if (req.authInfo.scope != 'profile') {
      res.statusCode = 403;
      return res.end('Forbidden');
    }
    return next();
  }
  function(req, res) {
    res.json(req.user);
  });

info هو مجرد كائن JSON عام ، لذلك سيحتاج التطبيق إلى تسوية اصطلاحات ما يتم توفيره. آمل أن يكون هذا مفيدًا أيضًا في تنفيذ البرامج الوسيطة للمصادقة للأغراض العامة.

تتزامن الميزة مع تطوير OAuthorize و OAuth2orize ، والتي تستفيد منها. يمكن استخدامها لتنفيذ خوادم OAuth 1.0 و 2.0 على التوالي. أعتقد أنني رأيت صفحة Quora التي قمت بإنشائها حول هذا الموضوع. سيكون من الرائع إضافة هذه إلى ذلك!

كالعادة ، أرسل لي أي ملاحظات. هتافات!

جميل جدا شكرا لك

يوم الجمعة ، 13 تموز (يوليو) 2012 الساعة 8:36 صباحًا ، جاريد هانسون <
[email protected]

كتب:

mwawrusch لدي حل لهذا الأمر يسعدني ويعمل به
حسنًا ، وهي نسخة منظفة قليلاً لما ذكرته.

يمكنك الآن تمرير وسيطة ثالثة للنجاح ، والتي تم إرفاقها بـ
جواز السفر بسعر req.authInfo

passport.use(new BearerStrategy(
  function(token, done) {
    User.findOne({ token: token }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      return done(null, user, { scope: 'profile' });
    });
  }
));

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

app.get('/api/userinfo',
  passport.authenticate('bearer', { session: false }),
  function(req, res, next) {
    // access control middleware to check for required scope
    if (req.authInfo.scope != 'profile') {
      res.statusCode = 403;
      return res.end('Forbidden');
    }
    return next();
  }
  function(req, res) {
    res.json(req.user);
  });

info هو مجرد كائن JSON عام ، لذلك سيحتاج التطبيق إلى تسوية
على اتفاقيات لما يتم توفيره. آمل أن يثبت ذلك
مفيد لتنفيذ البرامج الوسيطة للترخيص للأغراض العامة أيضًا.

تتزامن الميزة مع تطوير OAuthorize و OAuth2orize ، والتي تستفيد منها. هم
يمكن استخدامها لتنفيذ خوادم OAuth 1.0 و 2.0 على التوالي. أظن
لقد رأيت صفحة Quora حول هذا الموضوع الذي قمت بإنشائه. سيكون من الرائع أن
الحصول على هذه المضافة إلى ذلك!

كالعادة ، أرسل لي أي ملاحظات. هتافات!


قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:

https://github.com/jaredhanson/passport-http-bearer/issues/2#issuecomment -6966368

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

carera picture carera  ·  4تعليقات

juriansluiman picture juriansluiman  ·  3تعليقات

sontek picture sontek  ·  3تعليقات

fuzihaofzh picture fuzihaofzh  ·  3تعليقات

akshaysrin picture akshaysrin  ·  3تعليقات