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

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

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

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

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

সিএসআরএফ আক্রমণ রোধে সহায়তা করার জন্য, আমরা আপনাকে সুপারিশ করি যে অনুমোদনের জন্য অনুরোধ করার সময় আপনি সর্বদা একটি অগণিত state
জমা দিন।
এইভাবে, নীড়ের একীকরণের সাথে আপনার ওয়ার্কগুলি যাচাই করতে পারে যে নেস্ট ক্লাউড থেকে প্রাপ্ত অ্যাক্সেস কোডগুলি অন্য কোনও পণ্য নয়, আপনার পণ্যের অনুরোধের প্রতিক্রিয়া হিসাবে রয়েছে।
উদাহরণ:
আসুন আপনার ক্লায়েন্ট কনফিগারেশনে বলুন, আপনি রিডাইরেক্ট ইউআরআই নির্দিষ্ট করেছেন:
http://localhost:5000/callback
আসুন আমরা এটাও বলি যে আপনার ক্লায়েন্ট অনুমোদনের ইউআরএলে 7tvPJiv8StrAqo9IQE9xsJaDso4
রাষ্ট্র প্রেরণ করে:
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)
অনুমোদনের কোড ত্রুটি বার্তা
যদি অনুমোদনের কোড অনুরোধটি ব্যর্থ হয় তবে ব্যবহারকারীরা একটি ত্রুটি বার্তা দেখতে পান। এই বার্তাগুলি এবং সেগুলি রোধ করার জন্য আরও তথ্যের জন্য অনুমোদনের উল্লেখটি দেখুন Re
অ্যাক্সেস টোকেনের জন্য অনুমোদনের কোডটি বিনিময় করুন
অ্যাক্সেস টোকেন প্রাপ্তির চূড়ান্ত পদক্ষেপটি হল আপনার পণ্যটির সদ্য প্রাপ্ত অনুমোদনের কোডটি ব্যবহার করে তার কাছে জিজ্ঞাসা করা। এটি একটি "x-www-form-urlencoded" HTTP পোষ্ট অনুরোধ করে করা হয়।
অনুরোধে নীচের প্যারামিটারগুলি অন্তর্ভুক্ত করুন। চারটি পরামিতি প্রয়োজনীয়।
প্যারামিটার | বর্ণনা |
---|---|
ক্লায়েন্ট_আইডি | পদক্ষেপ 1 এ ক্লায়েন্ট আইডি |
ক্লায়েন্ট_সেসরেট | পদক্ষেপ 1 এ ক্লায়েন্ট সিক্রেট |
কোড | পদক্ষেপ 2 এ অনুমোদনের কোডটি পেয়েছে |
অনুদান_প্রকার | এই ক্ষেত্রের মান সর্বদা হওয়া উচিত: authorization_code |
প্রতিটি পোষ্ট কল করার আগে একটি নতুন অনুমোদনের কোড পান। এটি করতে, আপনার অনুমোদনের URL টি পুনরায় লোড করুন। তারপরে নতুন অনুমোদনের কোডটি অন্তর্ভুক্ত করতে পোষ্টের code
প্যারামিটারটি পরিবর্তন করুন।
কোড উদাহরণ (প্রমাণ)
পোস্টম্যান উদাহরণ (লেখক)
পোস্টম্যান OAuth অনুরোধগুলির পরীক্ষা করার একটি সহজ উপায় সরবরাহ করে।
শিরোনাম ট্যাবে, নিশ্চিত হয়ে নিন যে সামগ্রী-প্রকার = application/x-www-form-urlencoded
।

বডি ট্যাবে, নিম্নলিখিত কীটি অন্তর্ভুক্ত করুন: মান জোড়া।
টোকেন প্রতিক্রিয়া অ্যাক্সেস
একটি সফল অনুরোধ নিম্নলিখিত ক্ষেত্রগুলি সহ একটি JSON অবজেক্ট প্রদান করে:
-
access_token
টোকেন - ব্যবহারকারীর জন্য অ্যাক্সেস টোকেনaccess_token
এই মানটি অবশ্যই সুরক্ষিত রাখতে হবে। -
expires_in
- অবশিষ্ট সেকেন্ডের সংখ্যা সময় এটি অনুরোধ করা হয়েছে থেকে, আগে টোকেন শেষ হয়ে যাবে।
টোকেন ত্রুটি বার্তাগুলি অ্যাক্সেস করুন
যদি অনুরোধ ব্যর্থ হয়, আপনি এইচটিটিপি স্থিতি কোড আকারে একটি ত্রুটি পাবেন। এই ত্রুটিগুলি এবং সেগুলি রোধ করার জন্য আরও তথ্যের জন্য অনুমোদনের উল্লেখ দেখুন see
অনুমোদিত অনুরোধ করুন
কোনও পণ্য কোনও অ্যাক্সেস টোকেন গ্রহণ করার পরে, এটি একটি এইচটিটিপি অনুমোদনের শিরোনামে কোনও টোকেনকে নীড়ের এপিআইতে প্রেরণ করে। ইউআরআই ক্যোয়ারী-স্ট্রিং প্যারামিটার হিসাবে টোকেনগুলি প্রেরণ করা সম্ভব তবে আমরা এটির প্রস্তাব দিই না, কারণ ইউআরআই প্যারামিটারগুলি সম্পূর্ণ সুরক্ষিত নয় এমন লগ ফাইলগুলিতে শেষ হতে পারে।
অ্যাক্সেস টোকেনগুলি কেবলমাত্র টোকেন অনুরোধের সুযোগে বর্ণিত ক্রিয়াকলাপ এবং সংস্থানগুলির জন্য বৈধ। উদাহরণস্বরূপ, যদি নেস্ট থার্মোস্ট্যাট এপিআইয়ের জন্য অ্যাক্সেস টোকেন জারি করা হয় তবে এটি নেস্ট ক্যামেরা এপিআইতে অ্যাক্সেস দেয় না।
কোড উদাহরণ (পড়ুন / লিখুন)
পোস্টম্যান উদাহরণ (পড়ুন / লিখুন)
পোস্টম্যান কন্টেন্ট-টাইপ = application/json
ব্যবহার করে এপিআই কলগুলি পরীক্ষা করার একটি সহজ উপায় সরবরাহ করে।

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