জেডব্লিউটি (জসন ওয়েব টোকন) শ্রোতা "অডি" বনাম ক্লায়েন্ট_আইডি - পার্থক্য কী?


103

আমি আমার প্রমাণীকরণের সার্ভারে OAuth 2.0 JWT অ্যাক্সেস_ টোকন প্রয়োগ করতে কাজ করছি। তবে, জেডব্লিউটি audদাবি এবং client_idএইচটিটিপি শিরোনাম মানের মধ্যে পার্থক্য কী তা সম্পর্কে আমি পরিষ্কার নই । তারা কি একই? যদি তা না হয় তবে আপনি দুজনের পার্থক্য ব্যাখ্যা করতে পারবেন?

আমার সন্দেহ হ'ল audরিসোর্স সার্ভার (গুলি), এবং client_idপ্রমাণীকরণ সার্ভার (যেমন ওয়েব অ্যাপ্লিকেশন, বা আইওএস অ্যাপ্লিকেশন) দ্বারা স্বীকৃত ক্লায়েন্ট অ্যাপ্লিকেশনগুলির একটিতে উল্লেখ করা উচিত।

আমার বর্তমান ক্ষেত্রে, আমার সংস্থান সার্ভারটিও আমার ওয়েব অ্যাপ্লিকেশন ক্লায়েন্ট।

উত্তর:


132

দেখা যাচ্ছে, আমার সন্দেহগুলি ঠিক ছিল। audএকটি জেডাব্লুটিটিতে দর্শকদের দাবি হ'ল রিসোর্স সার্ভারগুলিকে বোঝানো যা টোকেনটি গ্রহণ করবে।

যেহেতু এই পোস্টটি সহজভাবে এটি রাখে:

একটি টোকেনের শ্রোতা হ'ল টোকেনটির উদ্দেশ্যপ্রাপ্ত প্রাপক।

শ্রোতার মান একটি স্ট্রিং - সাধারণত, সংস্থান করা সংস্থার বেস ঠিকানা, যেমন https://contoso.com

client_idOAuth এর মধ্যে ক্লায়েন্ট অ্যাপ্লিকেশন যে রিসোর্স সার্ভার থেকে সম্পদ অনুরোধ করা হবে উল্লেখ করে।

ক্লায়েন্ট অ্যাপ্লিকেশন (যেমন আপনার আইওএস অ্যাপ্লিকেশন) আপনার প্রমাণীকরণ সার্ভার থেকে একটি জেডাব্লুটি অনুরোধ করবে। এটি করার সাথে সাথে এটি পাস হয় client_idএবং এটির client_secretসাথে প্রয়োজনীয় যে কোনও ব্যবহারকারীর শংসাপত্রও। অনুমোদন সার্ভার ক্লায়েন্ট ব্যবহার যাচাই client_idএবং client_secretএবং আয় একটি JWT।

জেডাব্লুটিটিতে এমন একটি audদাবি থাকবে যা নির্দিষ্ট করে যে কোন রিসোর্স সার্ভারগুলি জাডাব্লুটিটি বৈধ। যদি এতে audথাকে www.myfunwebapp.comতবে ক্লায়েন্ট অ্যাপটি JWT চালু করার চেষ্টা করে www.supersecretwebapp.com, তবে অ্যাক্সেস অস্বীকার করা হবে কারণ সেই উত্স সার্ভার দেখতে পাবে যে এর জন্য জেডব্লিউটি ছিল না।


6
দেখে মনে হচ্ছে অডিটি ক্লায়েন্ট_আইডিও হতে পারে। দেখতে tools.ietf.org/id/draft-hunt-oauth-v2-user-a4c-01.txt aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.
themihai

1
রিসোর্স সার্ভার জানে না ক্লায়েন্টরা জেডাব্লুটিটি কোথায় পাঠায়। কীভাবে রিসোর্স সার্ভার আপনার আইওএস-অ্যাপ থেকে অন্য কোনও URL- এ এই জাতীয় ট্র্যাফিক অস্বীকার করবে? আমি মনে করি না আপনি সঠিক আছেন।
জন কর্সনেস

আমি বলব "যদি" অডিটিতে "" www.webapp.com "থাকে তবে ক্লায়েন্ট অ্যাপটি" সিক্রেট.ওব্যাপ ডটকম ""
জেডাব্লুটিটি

2
আরএফসি বলেছে যে শ্রোতা (অডি) প্রাপকদের সনাক্ত করে। প্রাপকরা আপনার জেডাব্লুটি টোকেন গ্রহণ করে। আপনার যদি একটি ওয়েব অ্যাপ্লিকেশন থাকে তবে এটি সম্ভবত কনটোগো ডটকম হতে পারে তবে আপনার যদি কিছু ডেস্কটপ বা মোবাইল অ্যাপ থাকে (যা প্রমাণ করে) দর্শকদের কোনও ইউআরআই নেই। ইস্যুকারী হ'ল যিনি JWT টোকেনগুলি জেনারেট করে সার্ভারের সম্ভবত ঠিকানা। আরএফসি বলছে যে এই দাবির ব্যবহার বৈকল্পিক, সুতরাং যখন আপনার প্রয়োজন হবে তখনই এটি ব্যবহার করুন।
Konrad

1
আসলে আমি বিভ্রান্ত হয়েছি যে শ্রোতা এবং ইস্যুকারীর মধ্যে পার্থক্য কী হবে।
অ্যান্ডি

62

JWT aud(শ্রোতা) দাবি

আরএফসি 7519 অনুসারে :

"অডি" (শ্রোতা) দাবী JWT এর উদ্দেশ্যে করা প্রাপকদের সনাক্ত করে। প্রতিটি অধ্যক্ষের উদ্দেশ্য JWT প্রসেস করা উচিত দর্শকদের দাবির সাথে একটি মান দিয়ে নিজেকে সনাক্ত করতে হবে। যদি দাবিটি প্রক্রিয়াকরণকারী মূল দাবিটি উপস্থিত থাকে যখন "অডি" দাবিতে কোনও মান দিয়ে নিজেকে চিহ্নিত না করে, তবে জেডব্লিউটি অবশ্যই প্রত্যাখ্যান করা উচিত। সাধারণ ক্ষেত্রে, "অডি" মান হ'ল কেস-সংবেদনশীল স্ট্রিংগুলির একটি অ্যারে, প্রতিটি স্ট্রিংঅরুরি মান থাকে। বিশেষ ক্ষেত্রে যখন জেডাব্লুটিটির একটি শ্রোতা থাকে, "অডি" মানটি স্ট্রিংঅরুরি মান সমেত একক ক্ষেত্রে সংবেদনশীল স্ট্রিং হতে পারে। শ্রোতার মানগুলির ব্যাখ্যা সাধারণত অ্যাপ্লিকেশন নির্দিষ্ট। এই দাবির ব্যবহার বৈকল্পিক।

audস্পেক দ্বারা সংজ্ঞায়িত শ্রোতা ( ) দাবিটি জেনেরিক এবং অ্যাপ্লিকেশন সুনির্দিষ্ট। উদ্দেশ্যযুক্ত ব্যবহার হ'ল টোকেনের উদ্দেশ্যপ্রাপ্ত প্রাপকদের সনাক্ত করা। প্রাপক বলতে কী বোঝায় তা হ'ল অ্যাপ্লিকেশন নির্দিষ্ট। দর্শকের মান হয় হয় স্ট্রিংগুলির একটি তালিকা, বা যদি কেবল একটি audদাবি থাকে তবে এটি একটি একক স্ট্রিং হতে পারে । টোকেনের স্রষ্টা কার্যকর করেনি যা কার্যকরভাবে প্রয়োগ করে না aud, টোকেনটি ব্যবহার করা উচিত কিনা তা নির্ধারণ করার দায়িত্ব প্রাপকের is

মানটি যাই হোক না কেন, যখন কোনও প্রাপক জেডাব্লুটিটি যাচাই করে যাচাই করতে চান এবং টোকেনটি তার উদ্দেশ্যগুলির জন্য ব্যবহার করার উদ্দেশ্যে তৈরি করা হয়েছিল, এটি audনিজের সনাক্তকরণে কোন মানটি নির্ধারণ করতে হবে এবং প্রাপকের ঘোষিত আইডি হলে টোকেনটি বৈধ হওয়া উচিত audদাবীতে উপস্থিত এটি কোনও ইউআরএল বা অন্য কোনও অ্যাপ্লিকেশন নির্দিষ্ট স্ট্রিং কিনা তা বিবেচ্য নয়। উদাহরণস্বরূপ, যদি আমার সিস্টেম audস্ট্রিংয়ের সাথে নিজেকে চিহ্নিত করে : api3.app.comতবে audদাবিটি api3.app.comদর্শকের মানগুলির তালিকায় অন্তর্ভুক্ত থাকলে কেবল এটি JWT গ্রহণ করা উচিত ।

অবশ্যই প্রাপকগণ উপেক্ষা করা বেছে নিতে পারেন aud, সুতরাং এটি কেবল তখনই কার্যকর যখন কোনও প্রাপক ইতিবাচক বৈধতা চান যে এটির জন্য টোকনটি বিশেষভাবে তৈরি করা হয়েছিল।

স্পেসিফিকেশনের উপর ভিত্তি করে আমার ব্যাখ্যাটি হ'ল audদাবিটি উদ্দেশ্য-নির্মিত JWTs তৈরি করতে কার্যকর যা কেবলমাত্র নির্দিষ্ট উদ্দেশ্যে বৈধ। একটি সিস্টেমে এর অর্থ হতে পারে আপনি কিছু বৈশিষ্ট্যের জন্য একটি টোকেনকে বৈধ বলে মনে করতে পারেন তবে অন্যদের পক্ষে বৈধ নয়। আপনি এখনও টোকেনগুলি ইস্যু করতে পারেন যা কেবলমাত্র "দর্শকদের জন্য" সীমাবদ্ধ, একই কী এবং বৈধতা অ্যালগরিদম ব্যবহার করার সময়।

যেহেতু সাধারণ ক্ষেত্রে একটি জেডাব্লুটিটি কোনও বিশ্বস্ত পরিষেবা দ্বারা উত্পন্ন হয় এবং অন্যান্য বিশ্বস্ত সিস্টেমগুলি (যে সিস্টেমগুলি অবৈধ টোকেন ব্যবহার করতে চায় না) ব্যবহার করে, এই সিস্টেমগুলিকে কেবল তাদের যে মানগুলি ব্যবহার করা হবে তা সমন্বয় করা দরকার।

অবশ্যই, audসম্পূর্ণরূপে alচ্ছিক এবং যদি আপনার ব্যবহারের ক্ষেত্রে এটি পরোয়ানা না দেয় তবে তা উপেক্ষা করা যেতে পারে। আপনি যদি নির্দিষ্ট দর্শকদের দ্বারা টোকেনগুলি ব্যবহারে সীমাবদ্ধ রাখতে না চান, বা আপনার সিস্টেমগুলির কোনওটিই টোকেনটিকে বৈধতা দেবে না aud, তবে এটি অকেজো।

উদাহরণ: অ্যাক্সেস বনাম রিফ্রেশ টোকন

একটি স্বাক্ষরিত (এখনও সহজ) উদাহরণটি আমি মনে করতে পারি এটি সম্ভবত আমরা আলাদা এনক্রিপশন কী এবং অ্যালগরিদমগুলি প্রয়োগ না করেই টোকেন অ্যাক্সেস এবং রিফ্রেশের জন্য JWT ব্যবহার করতে চাই, তবে কেবল নিশ্চিত করতে চাই যে অ্যাক্সেস টোকেনগুলি রিফ্রেশ টোকেন হিসাবে বৈধতা পাবে না, বা ভাইস -versa।

ব্যবহার করে audআমরা এই টোকেনগুলি তৈরি করার পরে refreshরিফ্রেশ টোকেনের accessজন্য দাবি এবং অ্যাক্সেস টোকেনের জন্য দাবি নির্দিষ্ট করতে পারি । রিফ্রেশ টোকেন থেকে একটি নতুন অ্যাক্সেস টোকেন পাওয়ার জন্য যখন একটি অনুরোধ করা হয়, তখন আমাদের যাচাই করতে হবে যে রিফ্রেশ টোকেনটি একটি আসল রিফ্রেশ টোকন ছিল। audবৈধতা উপরে বর্ণিত আমাদের বলতে হবে টোকেন আসলে একটি বৈধ রিফ্রেশ করেছি বলে দাবি জন্য বিশেষভাবে খুঁজছেন টোকেনটি ছিল কিনা refreshaud

ওআউথ ক্লায়েন্ট আইডি বনাম জেডব্লিউটি audদাবি

OAuth ক্লায়েন্ট আইডি সম্পূর্ণরূপে সম্পর্কিত নয় এবং এর JWT audদাবির সাথে সরাসরি সম্পর্ক নেই direct OAuth এর দৃষ্টিকোণ থেকে, টোকেনগুলি অস্বচ্ছ বস্তু।

অ্যাপ্লিকেশন যা এই টোকেনগুলি স্বীকার করে তা এই টোকেনগুলির অর্থ পার্সিং এবং বৈধকরণের জন্য দায়ী। আমি JWT audদাবির মধ্যে OAuth ক্লায়েন্ট আইডি নির্দিষ্ট করে দেওয়ার খুব বেশি মূল্য দেখতে পাচ্ছি না ।


3
আমি পুরোপুরি একধরনের অস্পষ্ট "কিছুটা নিজেকে চিহ্নিত করতে হবে" বিট। আরএফসি 7519 এর মতো অপ্রদর্শিত বিটগুলি পূর্ণ, পাশাপাশি অন্যান্য লেখক সিস্টেমে অস্পষ্ট সংকেত রয়েছে, এটি সম্ভবত যেখানে স্ট্যান্ডার্ড দাবী ক্ষেত্রগুলির যথাযথ ব্যাখ্যা খুঁজে পাওয়া যায়। স্পষ্টতই আরএফসি, এটি যেমন দরকারী তেমন কোনও রাজ্যের খসড়া পর্যায়টি কখনই রেখে দেওয়া উচিত নয়।
চক অ্যাডামস 21

1
@ চকএডামস আমি আমার মতামত পরিষ্কার করার জন্য সম্পাদনা করেছি। আমি সম্মত হই যে বিশেষত "স্ট্যান্ডার্ড দাবীগুলি" এবং কীভাবে / কখন সেগুলি ব্যবহার করা যায় তার আশেপাশে আরএফসি খুব অস্পষ্ট।
কেকোয়া

2
অডি-ফিল্ডটি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আমাদের বর্তমানে একই আলোচনা রয়েছে এবং আমি সম্মত হই যে এটির অর্থ গ্রহীতা (যিনি টোকেনকে বৈধতা দিয়েছেন এবং স্বীকৃতি দেন) এবং ক্লায়েন্ট_আইডকে নয় (যিনি টোকেনটির উপর কাজ করার জন্য বলেছিলেন) ব্যবহারকারীর পক্ষে)।
হার্ডিসিম

4

আপনি যদি এখানে ওপেনআইডি কানেক্ট (ওআইডিসি) অনুসন্ধান করতে এসেছেন: OAuth 2.0! = OIDC

আমি স্বীকার করি যে OAuth 2.0 এবং জন্য বাঁধা হয় না OIDC, সেখানে ঘন ঘন 2 মান মধ্যে একটি conflation তবে যেহেতু উভয় মান পারেন JWTs এবং ব্যবহার audদাবি। এবং একটি (ওআইডিসি) মূলত অন্যটির প্রসার (OAUTH 2.0)। (আমি নিজে ওআইডিসির সন্ধানে এই প্রশ্নটি দেখে হোঁচট খেয়েছি।)

OAuth 2.0 অ্যাক্সেস টোকেন ##

OAuth 2.0 অ্যাক্সেস টোকেনগুলির জন্য , বিদ্যমান উত্তরগুলি এটি বেশ ভালভাবে কভার করে। অতিরিক্তভাবে এখানে OAuth 2.0 ফ্রেমওয়ার্কের একটি প্রাসঙ্গিক বিভাগ (আরএফসি 6749)

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

ওআইডিসি আইডি টোকেন ##

ওআইডিসিতে অ্যাক্সেস টোকেন ছাড়াও আইডি টোকেন রয়েছে। আইডি টোকেন্সে audদাবির ব্যবহারের ক্ষেত্রে ওআইডিসি স্পেসটি স্পষ্ট । ( ওপেন-কানেক্ট-কোর -১০ )

নিরীক্ষা
প্রয়োজন। এই আইডি টোকেনের উদ্দেশ্যে তৈরি শ্রোতা (গুলি)। এটিতে শ্রোতার মান হিসাবে রিলিং পার্টির OAuth 2.0 ক্লায়েন্ট_আইড থাকা আবশ্যক। এটিতে অন্য দর্শকদের জন্য সনাক্তকারীও থাকতে পারে। সাধারণ ক্ষেত্রে, অডি মানটি সংবেদনশীল স্ট্রিংগুলির একটি অ্যারে। সাধারণ বিশেষ ক্ষেত্রে যখন একটি শ্রোতা থাকে তখন অডিটের মানটি একক ক্ষেত্রে সংবেদনশীল স্ট্রিং হতে পারে।

তদুপরি ওআইডিসি দাবিটি সুনির্দিষ্ট করে azpযে audযখন audএকাধিক মান থাকে তার সাথে একত্রে ব্যবহৃত হয়।

অ্যাজপি বিকল্প
। অনুমোদিত দল - যে দলটিতে আইডি টোকন জারি করা হয়েছিল। যদি উপস্থিত থাকে তবে এটিতে এই দলের OAuth 2.0 ক্লায়েন্ট আইডি থাকা আবশ্যক। এই দাবিটি কেবল তখনই প্রয়োজন যখন আইডি টোকনের একক শ্রোতার মান থাকে এবং শ্রোতা অনুমোদিত পক্ষের চেয়ে আলাদা is অনুমোদিত দলটি একমাত্র শ্রোতার সমান হলেও এটি অন্তর্ভুক্ত থাকতে পারে। অ্যাজপি মান হ'ল স্ট্রিংঅরুরি মান সহ একটি কেস সংবেদনশীল স্ট্রিং।


1
কেবল একটি জিনিস লক্ষ করুন: Oauth2 জেডাব্লুটিটির ব্যবহারকে জোর করে না।
জোরান

1

যদিও এটি পুরানো, আমি মনে করি প্রশ্নটি আজও বৈধ

আমার সন্দেহ হ'ল অডিটির উচিত রিসোর্স সার্ভার (গুলি), এবং ক্লায়েন্ট_আইডিকে প্রমাণীকরণের সার্ভার দ্বারা স্বীকৃত ক্লায়েন্ট অ্যাপ্লিকেশনগুলির মধ্যে একটিতে উল্লেখ করা উচিত

হ্যাঁ, অডির টোকেন গ্রাসকারী পার্টিকে বোঝানো উচিত। এবং ক্লায়েন্ট_আইডি টোকেন প্রাপ্ত পার্টি বোঝায়।

আমার বর্তমান ক্ষেত্রে, আমার সংস্থান সার্ভারটিও আমার ওয়েব অ্যাপ্লিকেশন ক্লায়েন্ট।

ওপির দৃশ্যে, ওয়েব অ্যাপ্লিকেশন এবং সংস্থান সার্ভার উভয়ই একই দলের অন্তর্ভুক্ত। সুতরাং এর অর্থ ক্লায়েন্ট এবং শ্রোতাদের এক হতে হবে। তবে এমন পরিস্থিতি থাকতে পারে যেখানে এটি না হয়।

এমন একটি এসপিএ সম্পর্কে চিন্তা করুন যা একটি OAuth সুরক্ষিত সংস্থান ব্যবহার করে। এই দৃশ্যে এসপিএই ক্লায়েন্ট। সুরক্ষিত সংস্থান অ্যাক্সেস টোকেনের শ্রোতা।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.