Google is committed to advancing racial equity for Black communities. See how.

OAuth 2.0 প্রমাণীকরণ এবং অনুমোদন

নেস্ট এপিআই প্রমাণীকরণ এবং অনুমোদনের জন্য OAuth 2.0 প্রোটোকল ব্যবহার করে।

নেস্ট এপিআই ব্যবহার করে আপনার পণ্য ব্যক্তিগত ডেটা অ্যাক্সেস করতে পারে, তার আগে অবশ্যই এমন একটি অ্যাক্সেস টোকন পাওয়া উচিত যা সেই API এ অ্যাক্সেস দেয় g একটি একক অ্যাক্সেস টোকেন এপিআইয়ের একাধিক বিভাগে বিভিন্ন ডিগ্রি অ্যাক্সেসের অনুমতি দিতে পারে।

অনুমোদনের ক্রমটি শুরু হয় যখন আপনার পণ্য অনুরোধ অ্যাক্সেস নির্দেশ করে কোয়েরি প্যারামিটার সহ কোনও ব্রাউজারকে কোনও নীড় URL এ পুনঃনির্দেশ করে। নীড় ব্যবহারকারীর প্রমাণীকরণ, সেশন নির্বাচন এবং ব্যবহারকারীর সম্মতি পরিচালনা করে। ফলাফলটি একটি অনুমোদনের কোড, যা আপনার পণ্যটি অ্যাক্সেস টোকেনের জন্য বিনিময় করতে পারে। আপনার পণ্য তারপরে নীড় API এ কল করতে অ্যাক্সেস টোকেন ব্যবহার করতে পারে।

OAuth 2.0 প্রবাহ
OAuth 2.0 প্রবাহ

নেস্ট ক্লায়েন্টের সাথে আপনার ওয়ার্কগুলি কনফিগার করুন

আপনার ক্লায়েন্টের জন্য OAuth 2.0 শংসাপত্রগুলি সন্ধান করতে, ক্লায়েন্ট পৃষ্ঠার ওভারভিউ ট্যাবটি দেখুন।

ইউআরআই বা পিন-ভিত্তিক অনুমোদনের পুনঃনির্দেশ?

আপনি যখন নিজের ক্লায়েন্টটি কনফিগার করছেন, আপনাকে পুনঃনির্দেশিত ইউআরআই প্রবেশ করার অনুরোধ জানানো হবে বা পিন-ভিত্তিক অনুমোদনের জন্য পুনঃনির্দেশিত ইউআরআই ক্ষেত্রগুলি ফাঁকা রেখে দেবে।

যদি আপনার পণ্যটি এমন কোনও ডিভাইস হয় যার কোনও সম্পর্কিত অ্যাপ্লিকেশন বা ওয়েব পৃষ্ঠা না থাকে (উদাহরণস্বরূপ, ফিটনেস ট্র্যাকার, একটি সরঞ্জাম, বা সুরক্ষা প্যানেল), পুনর্নির্দেশের ইউআরআই ক্ষেত্রটি ফাঁকা ছেড়ে যান।

যদি আপনার পণ্যটির ব্রাউজারের উপাদান থাকে, তবে সবচেয়ে ভাল অনুশীলন হ'ল রিডাইরেক্ট ইউআরআই অন্তর্ভুক্ত করা।

অনুমতি অনুরোধ

ক্লায়েন্ট কনফিগারেশনে অনুমতিগুলির একটি সেট অন্তর্ভুক্ত রয়েছে (একে স্কোপও বলা হয়)। অনুমতি হ'ল একটি পরিবর্তনশীল পরামিতি যা অ্যাক্সেস টোকেনের অনুমতি দেয় এমন সংস্থান এবং ক্রিয়াকলাপগুলির সেটকে নিয়ন্ত্রণ করে। সাধারণত সামনের দিকে না গিয়ে, অ্যাক্সেসের প্রয়োজন হয় বর্ধিতভাবে অনুমতিগুলির জন্য অনুরোধ করা সর্বোত্তম অনুশীলন।

ফলাফল

আপনি যখন কনফিগারেশনটি সংরক্ষণ করেন, আপনার ক্লায়েন্টকে একটি অনন্য ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট বরাদ্দ করা হয়। এছাড়াও, আপনার ক্লায়েন্টকে একটি অনুমোদনের URL অর্পণ করা হয়েছে।

অনুমোদনের ইউআরএলটিতে একটি রাষ্ট্র পরামিতি অন্তর্ভুক্ত রয়েছে যা আপনি সম্ভাব্য ক্রস-সাইট অনুরোধ জালিয়াতি (সিএসআরএফ) আক্রমণগুলির পরীক্ষার জন্য ব্যবহার করতে পারেন। দেখুন CSRF হামলার জন্য পরীক্ষার

OAuth বিশদ

একটি অনুমোদনের কোডের জন্য অনুরোধ করুন

আপনার ক্লায়েন্টটি কনফিগার হওয়ার পরে, আপনি কোনও অনুমোদনের কোডের জন্য অনুরোধ করতে পারেন (কখনও কখনও পিন কোড নামে পরিচিত)। অনুমোদনের কোডটি চূড়ান্ত টোকেন নয় যা আপনি নেস্টে কল করার জন্য ব্যবহার করেন। এটি আসল অ্যাক্সেস টোকেনের বিনিময়ে OAuth 2.0 প্রবাহের পরবর্তী ধাপে ব্যবহৃত হয়। এই পদক্ষেপটি নীড় থেকে সরাসরি ব্যবহারকারীকে আশ্বাস দেয় যে সম্মত-অ্যাক্সেস সহ সঠিক পণ্যটিকে অনুমতি দেওয়া হচ্ছে।

ব্যবহারকারীর অভিজ্ঞতা

আমরা নীড়ের সাথে একটি পৃষ্ঠাগুলি উপস্থাপন করি যা ব্যবহারকারীকে আপনার পণ্যটিতে অ্যাক্সেস দিতে বলে। এটি আপনার পণ্যটিকে সনাক্ত করে এবং আপনার পণ্যটির জন্য অনুরোধ করা নির্দিষ্ট ব্যবহারকারীর অনুমতি (স্কোপস) এর রূপরেখা দেয়। স্ক্রিনের শব্দগুলি আপনার ক্লায়েন্টের কনফিগারেশন থেকে আসে।

এটি নিজে পরীক্ষা করতে, পদক্ষেপ 1 থেকে কোনও ব্রাউজারে অনুমোদনের URL লোড করুন। আপনার নীড় অ্যাক্সেস অনুরোধ পৃষ্ঠা সহ একটি কাজ দেখতে হবে:

বাসা নিয়ে কাজ করে

ব্যবহারকারী কী দেখেন তা দেখতে এগিয়ে যান এবং নিজেকে [দুদক] টিপুন। [ACCEPT] বোতামটি ক্লিক করে, ব্যবহারকারী তাদের ডেটা অ্যাক্সেস করার জন্য আপনার পণ্যের অনুরোধটি অনুমোদন করছে।

পিনের অভিজ্ঞতা

আপনি যদি আপনার ক্লায়েন্ট কনফিগারেশনে রিডাইরেক্ট ইউআরআই ফিল্ডগুলি ফাঁকা রেখে দেন তবে ব্যবহারকারী কোনও নীড় পৃষ্ঠাতে পুনর্নির্দেশ করা হবে যা একটি পিন (অনুমোদন কোড) প্রদর্শন করে। আপনার ডিভাইস ইউআই এর পরে ব্যবহারকারীকে ম্যানুয়ালি পিন প্রবেশ করতে অনুরোধ জানানো উচিত।

পিনকোড

ইউআরআই অভিজ্ঞতা পুনর্নির্দেশ করুন

আপনি যদি আপনার ক্লায়েন্ট কনফিগারেশনে পুনর্নির্দেশের ইউআরআই অন্তর্ভুক্ত করেন তবে ব্যবহারকারীকে আপনার মেঘের (বা লোকালহোস্ট) কোনও পৃষ্ঠাতে পুনঃনির্দেশ করা হয় এবং নেস্ট স্বয়ংক্রিয়ভাবে ব্যবহারকারীর ডিভাইসে অনুমোদনের কোডটি প্রেরণ করে।

সিএসআরএফ আক্রমণের জন্য পরীক্ষা

অনুমোদনের কোডটি গ্রহণ করার আগে, আপনার পণ্যটিকে নিশ্চিত করা উচিত যে রাজ্যের প্যারামিটারে ফিরে আসা মানটি আপনার মূল অনুমোদনের অনুরোধ থেকে রাষ্ট্রীয় মানের সাথে মেলে। এটি নিশ্চিত করে যে আপনি প্রকৃত ব্যবহারকারীর সাথে আচরণ করছেন এবং কোনও দূষিত স্ক্রিপ্ট নয়। যদি রাষ্ট্রীয় মানগুলি মেলে না, আপনার প্রতিক্রিয়াতে 401 অননুমোদিত HTTP ত্রুটি কোডটি নিক্ষেপ করা উচিত।

একটি সিএসআরএফ আক্রমণ এমন একটি আক্রমণ যা শেষ ব্যবহারকারীকে কোনও ওয়েব অ্যাপ্লিকেশনটিতে অযাচিত ক্রিয়াকলাপ চালাতে বাধ্য করে যেখানে তারা বর্তমানে প্রমাণীকরণ করেছে।

সিএসআরএফ আক্রমণ
সিএসআরএফ আক্রমণ

সাহায্যের আটকান CSRF আক্রমণের জন্য, আমরা সুপারিশ করছি যে আপনি সবসময় একটি nonguessable জমা state যখন অনুমোদন অনুরোধ করা হচ্ছে।

এইভাবে, নীড়ের একীকরণের সাথে আপনার ওয়ার্কগুলি যাচাই করতে পারে যে নেস্ট ক্লাউড থেকে প্রাপ্ত অ্যাক্সেস কোডগুলি অন্য কোনও পণ্য নয়, আপনার পণ্য দ্বারা অনুরোধের প্রতিক্রিয়া হিসাবে রয়েছে।

উদাহরণ:

আসুন আপনার ক্লায়েন্ট কনফিগারেশনে বলুন, আপনি রিডাইরেক্ট ইউআরআই নির্দিষ্ট করেছেন:

http://localhost:5000/callback

আসুন বলতে আপনার ক্লায়েন্ট পাঠায় 7tvPJiv8StrAqo9IQE9xsJaDso4 অনুমোদন URL- এ রাজ্য:

https://home.nest.com/login/oauth2?client_id=CLIENT_ID&state=7tvPJiv8StrAqo9IQE9xsJaDso4

ব্যবহারকারী অনুরোধে সম্মতি জানায়।

নেস্ট ক্লাউড পুনঃনির্দেশিত ইউআরআইয়ের অংশ হিসাবে রাষ্ট্রের প্যারামিটারটি ফিরিয়ে দেয়:

127.0.0.1 - - [02/Jun/2017 13:18:58] "GET /callback?state=7tvPJiv8StrAqo9IQE9xsJaDso4&code=5N4CFK8E8TCFW7PM HTTP/1.1" 302 -
127.0.0.1 - - [02/Jun/2017 13:18:58] "GET / HTTP/1.1" 200 -

আপনার পণ্য এই রাষ্ট্রীয় মানটি গ্রহণ করে এবং কেবল যাচাইযোগ্য রাষ্ট্রের সাথে পুনঃনির্দেশগুলি গ্রহণ করার জন্য প্রোগ্রাম করা উচিত।

অ-অনুমানযোগ্য রাষ্ট্র পরামিতি উত্পন্ন করার একাধিক উপায় রয়েছে। আপনি স্মৃতিতে রক্ষিত একটি অভিধান বা একটি পুনঃনির্মাণযোগ্য মান থেকে এলোমেলোনা রাষ্ট্রীয় মানগুলি সরবরাহ করতে পারেন। আপনি কিছু সহজে যাচাইযোগ্য ভেরিয়েবলগুলির সাথে একটি ব্যক্তিগত কী ব্যবহার করতে পারেন - উদাহরণস্বরূপ, ক্লায়েন্ট আইডি এবং একটি সেশান কুকি - একটি হ্যাশ মান গণনা করার জন্য। এটি একটি বাইট মান হিসাবে ফলাফল যা প্রাইভেট কী বাদে অনুমান করা কঠিন in আরেকটি পরামর্শ হ'ল বর্তমান তারিখ এবং সময় হ্যাশ করা। এই পদ্ধতির সাহায্যে আপনার অ্যাপ্লিকেশনটিকে অবশ্যই তা যাচাই করতে বা বৈধতার স্লাইডিং পিরিয়ডের অনুমতি দেওয়ার জন্য ট্রান্সমিশনের সময় বাঁচাতে হবে (উদাহরণস্বরূপ, সময় ভিত্তিক ওয়ান-টাইম পাসওয়ার্ড অ্যালগরিদম [টিটিপি] ব্যবহার করে)।

কীড-হ্যাশ বার্তা প্রমাণীকরণ কোড (এইচএমএসি) গণনা করার পরে, বেস -৪৪ এটিকে এনকোড করে স্টেট প্যারামিটার হিসাবে নেস্ট ক্লাউডে প্রেরণ করে।

এখানে একটি পাইথন উদাহরণ ব্যবহার করে এর datetime :

import base64
import datetime
import hmac
import hashlib

def generate_state_parameter(client_id, private_key):
    date = datetime.datetime.today()
    raw_state = str(date) + client_id
    hashed = hmac.new(private_key, raw_state, hashlib.sha1)
    state = base64.b64encode(hashed.digest())
    return (state, date)

অনুমোদনের কোড ত্রুটি বার্তা

যদি অনুমোদনের কোড অনুরোধটি ব্যর্থ হয় তবে ব্যবহারকারীরা একটি ত্রুটি বার্তা দেখতে পান। এই বার্তাগুলি সম্পর্কে আরও তথ্যের এবং কিভাবে তাদের প্রতিরোধ করার জন্য, দেখুন অনুমোদন রেফারেন্স

অ্যাক্সেস টোকেনের জন্য অনুমোদনের কোডটি বিনিময় করুন

অ্যাক্সেস টোকেন প্রাপ্তির চূড়ান্ত পদক্ষেপটি হল আপনার পণ্যটির সদ্য প্রাপ্ত অনুমোদনের কোডটি ব্যবহার করে তার কাছে জিজ্ঞাসা করা। এটি একটি "x-www-form-urlencoded" HTTP পোষ্ট অনুরোধ করে করা হয়।

অনুরোধে নীচের প্যারামিটারগুলি অন্তর্ভুক্ত করুন। চারটি পরামিতি প্রয়োজনীয়।

প্যারামিটার বর্ণনা
ক্লায়েন্ট_আইডি পদক্ষেপ 1 এ ক্লায়েন্ট আইডি
ক্লায়েন্ট_সেসরেট পদক্ষেপ 1 এ ক্লায়েন্ট সিক্রেট
কোড পদক্ষেপ 2 এ অনুমোদনের কোডটি পেয়েছে
অনুদান_প্রকার এই ক্ষেত্রের মান সবসময় হওয়া উচিত: authorization_code

প্রতিটি পোষ্ট কল করার আগে একটি নতুন অনুমোদনের কোড পান। এটি করার জন্য, আপনার অনুমোদনের URL টি পুনরায় লোড করুন। তারপর পোস্টের পরিবর্তন code নতুন অনুমোদন কোড অন্তর্ভুক্ত করা প্যারামিটার।

কোড উদাহরণ (প্রমাণ)

বিভিন্ন ভাষায় উদাহরণ দেখুন

পোস্টম্যান উদাহরণ (লেখক)

পোস্টম্যান OAuth অনুরোধগুলির পরীক্ষা করার একটি সহজ উপায় সরবরাহ করে।

শিরোলেখ ট্যাবে, নিশ্চিত সামগ্রী-প্রকার = করা application/x-www-form-urlencoded

টোকেন অ্যাক্সেস পেতে শিরোনাম পোস্ট করুন

মান জোড়া: দেহ ট্যাবে, নিম্নলিখিত কী অন্তর্ভুক্ত।

অ্যাক্সেস টোকেন পেতে বডি পোষ্ট করুন

টোকেন প্রতিক্রিয়া অ্যাক্সেস

একটি সফল অনুরোধ নিম্নলিখিত ক্ষেত্রগুলি সহ একটি JSON অবজেক্ট প্রদান করে:

  • access_token - অ্যাক্সেস ব্যবহারকারীর জন্য টোকেন। এই মানটি অবশ্যই সুরক্ষিত রাখতে হবে।
  • expires_in - অবশিষ্ট সেকেন্ডের সংখ্যা সময় এটি অনুরোধ করা হয়েছে থেকে, আগে টোকেন শেষ হয়ে যাবে।

টোকেন ত্রুটি বার্তাগুলি অ্যাক্সেস করুন

যদি অনুরোধ ব্যর্থ হয়, আপনি এইচটিটিপি স্থিতি কোড আকারে একটি ত্রুটি পাবেন। এই ত্রুটিগুলি সম্পর্কে আরও তথ্যের এবং কিভাবে তাদের প্রতিরোধ করার জন্য, দেখুন অনুমোদন রেফারেন্স

অনুমোদিত অনুরোধ করুন

কোনও পণ্য কোনও অ্যাক্সেস টোকেন পাওয়ার পরে, এটি একটি এইচটিটিপি অনুমোদনের শিরোনামে কোনও টোকেট নীড়ের এপিআইতে প্রেরণ করে। ইউআরআই ক্যোয়ারী-স্ট্রিং প্যারামিটার হিসাবে টোকেনগুলি প্রেরণ করা সম্ভব তবে আমরা এটির প্রস্তাব দিই না, কারণ ইউআরআই প্যারামিটারগুলি সম্পূর্ণ সুরক্ষিত নয় এমন লগ ফাইলগুলিতে শেষ হতে পারে।

অ্যাক্সেস টোকেনগুলি কেবলমাত্র টোকেন অনুরোধের সুযোগে বর্ণিত ক্রিয়াকলাপ এবং সংস্থানগুলির জন্য বৈধ। উদাহরণস্বরূপ, যদি নেস্ট থার্মোস্ট্যাট এপিআইয়ের জন্য অ্যাক্সেস টোকেন জারি করা হয় তবে এটি নেস্ট ক্যামেরা এপিআইতে অ্যাক্সেস দেয় না।

কোড উদাহরণ (পড়ুন / লিখুন)

পোস্টম্যান উদাহরণ (পড়ুন / লিখুন)

পিয়ন সামগ্রী-প্রকার = ব্যবহার পরীক্ষা API কল করার একটি সহজ উপায় প্রদান application/json

ডেটা পড়তে পান

অবৈধ টোকেন

আপনি যদি একটি অবৈধ টোকেন ব্যবহার করে কোনও এআইপি কল করেন, আপনি সার্ভার থেকে একটি 401 অননুমোদিত প্রতিক্রিয়া পাবেন। একটি টোকেন অবৈধ এবং পুনর্জন্মের প্রয়োজন হতে পারে কারণ:

  • এর মেয়াদ শেষ হয়ে গেছে
  • ব্যবহারকারীরা আপনার পণ্যটিকে প্রাথমিকভাবে অনুমোদন বাতিল করেছে

আপনি 401 অননুমোদিত ত্রুটিটিকে যথাযথভাবে পরিচালনা করতে আপনার পণ্যটিকে কোডিং দিয়ে অনুমোদনের কার্যপ্রবাহের শুরুতে ব্যবহারকারীকে পুনর্নির্দেশের মাধ্যমে গুরুত্বপূর্ণ।

নেস্ট সংযোগ বন্ধ করে কাজ করে

কোনো ব্যবহারকারী একটি সরিয়ে ফেলা হবে যদি নেস্ট সংযোগে ওয়ার্কস আপনার পণ্য একটি পায় auth_revoked ঘটনা এবং সংযোগ বন্ধ করে।