আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
কি
দাবির একটি কনফিগারযোগ্য সেট সহ একটি স্বাক্ষরিত JWT তৈরি করে। JWT তারপরে ক্লায়েন্টদের কাছে ফেরত দেওয়া যেতে পারে, ব্যাকএন্ড লক্ষ্যগুলিতে প্রেরণ করা যেতে পারে বা অন্য উপায়ে ব্যবহার করা যেতে পারে। বিস্তারিত ভূমিকার জন্য JWS এবং JWT নীতি ওভারভিউ দেখুন।
ভিডিও
কিভাবে একটি স্বাক্ষরিত JWT তৈরি করতে হয় তা জানতে একটি ছোট ভিডিও দেখুন।
নমুনা
- HS256 অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT তৈরি করুন
- RS256 অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT তৈরি করুন
HS256 অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT তৈরি করুন
এই উদাহরণ নীতি একটি নতুন JWT তৈরি করে এবং HS256 অ্যালগরিদম ব্যবহার করে স্বাক্ষর করে। HS256 স্বাক্ষর করা এবং স্বাক্ষর যাচাই উভয়ের জন্য একটি ভাগ করা গোপনীয়তার উপর নির্ভর করে।
যখন এই নীতি ক্রিয়াটি ট্রিগার হয়, তখন এজ JWT শিরোনাম এবং পেলোডকে এনকোড করে, তারপর ডিজিটালভাবে JWT-এ স্বাক্ষর করে। নীতিতে অনুরোধ করার পদ্ধতি সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।
এখানে নীতি কনফিগারেশন JWT স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত স্ট্যান্ডার্ড দাবিগুলির একটি সেট সহ একটি JWT তৈরি করবে, যার মধ্যে 1 ঘন্টার মেয়াদ শেষ হবে, সেইসাথে একটি অতিরিক্ত দাবি। আপনি আপনার ইচ্ছা মত অনেক অতিরিক্ত দাবি অন্তর্ভুক্ত করতে পারেন. এই নমুনা নীতিতে প্রতিটি উপাদানের জন্য প্রয়োজনীয়তা এবং বিকল্পগুলির বিশদ বিবরণের জন্য এলিমেন্ট রেফারেন্স দেখুন।
<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <ExpiresIn>1h</ExpiresIn> <Subject>monty-pythons-flying-circus</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>fans</Audience> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
ফলে জেডব্লিউটি-তে এই হেডার থাকবে...
{ "typ" : "JWT", "alg" : "HS256", "kid" : "1918290" }
… এবং এইরকম কিছু বিষয়বস্তু সহ একটি পেলোড থাকবে:
{ "sub" : "monty-pythons-flying-circus", "iss" : "urn://apigee-edge-JWT-policy-test", "aud" : "show", "iat" : 1506553019, "exp" : 1506556619, "jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37", "show": "And now for something completely different." }
iat , exp , এবং jti দাবির মান পরিবর্তিত হবে।
RS256 অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT তৈরি করুন
এই উদাহরণ নীতি একটি নতুন JWT তৈরি করে এবং এটি RS256 অ্যালগরিদম ব্যবহার করে স্বাক্ষর করে। একটি RS256 স্বাক্ষর তৈরি করা একটি RSA ব্যক্তিগত কী-এর উপর নির্ভর করে, যা PEM-এনকোড করা ফর্মে প্রদান করা আবশ্যক৷ নীতিতে অনুরোধ করার পদ্ধতি সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।
যখন এই নীতি ক্রিয়াটি ট্রিগার করা হয়, তখন এজ দাবিগুলি সহ JWT এনকোড করে এবং ডিজিটালভাবে স্বাক্ষর করে। একটি JWT-এর অংশগুলি এবং সেগুলি কীভাবে এনক্রিপ্ট করা এবং স্বাক্ষর করা হয় সে সম্পর্কে জানতে, RFC7519 পড়ুন।
<GenerateJWT name="JWT-Generate-RS256"> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> <Subject>apigee-seattle-hatrack-montage</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience> <ExpiresIn>60m</ExpiresIn> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
মূল উপাদান সেট করা
আপনি JWT তৈরি করতে ব্যবহৃত কী নির্দিষ্ট করতে যে উপাদানগুলি ব্যবহার করেন তা নির্বাচিত অ্যালগরিদমের উপর নির্ভর করে, যেমনটি নিম্নলিখিত টেবিলে দেখানো হয়েছে:
অ্যালগরিদম | মূল উপাদান | |
---|---|---|
এইচএস{256/384/512} * | <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> | |
RS/PS/ES{256/384/512} * | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> | |
* মূল প্রয়োজনীয়তা সম্পর্কে আরও জানতে, স্বাক্ষর এনক্রিপশন অ্যালগরিদম সম্পর্কে দেখুন। |
জেডাব্লুটি জেনারেট করার জন্য উপাদান রেফারেন্স
পলিসি রেফারেন্স জেনারেট জেডব্লিউটি নীতির উপাদান এবং গুণাবলী বর্ণনা করে।
দ্রষ্টব্য: আপনি যে এনক্রিপশন অ্যালগরিদম ব্যবহার করেন তার উপর নির্ভর করে কনফিগারেশন কিছুটা আলাদা হবে। নির্দিষ্ট ব্যবহারের ক্ষেত্রে কনফিগারেশন প্রদর্শন করে এমন উদাহরণগুলির জন্য নমুনাগুলি পড়ুন।
উচ্চ-স্তরের উপাদানে প্রযোজ্য বৈশিষ্ট্য
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
নিম্নলিখিত বৈশিষ্ট্যগুলি সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ৷
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
---|---|---|---|
নাম | নীতির অভ্যন্তরীণ নাম। আপনি নামের মধ্যে যে অক্ষরগুলি ব্যবহার করতে পারেন তাতে সীমাবদ্ধ: A-Z0-9._\-$ % । যাইহোক, এজ ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ প্রয়োগ করে, যেমন স্বয়ংক্রিয়ভাবে অক্ষরগুলিকে অপসারণ করা যা আলফানিউমেরিক নয়। ঐচ্ছিকভাবে, | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ। একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
সক্রিয় | নীতি প্রয়োগ করতে true সেট করুন৷ নীতি "বন্ধ" করতে | সত্য | ঐচ্ছিক |
অ্যাসিঙ্ক | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে নামের বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
ডিফল্ট | আপনি এই উপাদানটি বাদ দিলে, নীতির নামের বৈশিষ্ট্যের মান ব্যবহার করা হবে। |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
<অ্যালগরিদম>
<Algorithm>algorithm-here</Algorithm>
টোকেন সাইন ইন করতে এনক্রিপশন অ্যালগরিদম নির্দিষ্ট করে।
ডিফল্ট | N/A |
উপস্থিতি | প্রয়োজন |
টাইপ | স্ট্রিং |
বৈধ মান | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<শ্রোতা>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
নীতিটি একটি JWT তৈরি করে যেখানে একটি নির্দিষ্ট মান সেট করা একটি অড দাবি রয়েছে। এই দাবিটি প্রাপকদের চিহ্নিত করে যাদের জন্য JWT উদ্দেশ্যে করা হয়েছে। এটি RFC7519- এ উল্লেখিত নিবন্ধিত দাবিগুলির মধ্যে একটি।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | অ্যারে (কমা দ্বারা পৃথক করা মানগুলির একটি তালিকা) |
বৈধ মান | শ্রোতাদের চিহ্নিত করে এমন কিছু। |
<অতিরিক্ত দাবি/দাবি>
<AdditionalClaims> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> </AdditionalClaims> or: <AdditionalClaims ref='claim_payload'/>
আপনাকে JWT-এর পেলোডে অতিরিক্ত দাবির নাম/মূল্য জোড়া(গুলি) নির্দিষ্ট করতে দেয়। আপনি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান, একটি মানচিত্র, বা একটি অ্যারে হিসাবে স্পষ্টভাবে দাবি নির্দিষ্ট করতে পারেন। একটি মানচিত্র হল নাম/মান জোড়ার একটি সেট।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
বৈধ মান | আপনি একটি অতিরিক্ত দাবির জন্য ব্যবহার করতে চান যে কোনো মান. আপনি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান, একটি মানচিত্র, বা একটি অ্যারে হিসাবে স্পষ্টভাবে দাবি নির্দিষ্ট করতে পারেন। |
<Claim>
উপাদানটি এই বৈশিষ্ট্যগুলি গ্রহণ করে:
- নাম - (প্রয়োজনীয়) দাবির নাম।
- ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। উপস্থিত থাকলে, নীতি দাবি হিসাবে এই ভেরিয়েবলের মান ব্যবহার করবে। যদি একটি রেফ অ্যাট্রিবিউট এবং একটি স্পষ্ট দাবি মান উভয়ই নির্দিষ্ট করা থাকে, তাহলে স্পষ্ট মানটি ডিফল্ট, এবং যদি উল্লেখিত ফ্লো ভেরিয়েবল অমীমাংসিত হয় তাহলে ব্যবহার করা হয়।
- প্রকার - (ঐচ্ছিক) এর মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান বা মানচিত্র
- অ্যারে - (ঐচ্ছিক) মানটি ধরনগুলির একটি অ্যারে কিনা তা নির্দেশ করতে সত্যে সেট করুন। ডিফল্ট: মিথ্যা।
আপনি যখন <Claim>
উপাদানটি অন্তর্ভুক্ত করেন, আপনি নীতি কনফিগার করার সময় দাবির নামগুলি স্ট্যাটিকভাবে সেট করা হয়। বিকল্পভাবে, আপনি দাবির নাম নির্দিষ্ট করতে একটি JSON অবজেক্ট পাস করতে পারেন। যেহেতু JSON অবজেক্ট একটি পরিবর্তনশীল হিসাবে পাস করা হয়েছে, জেনারেট করা JWT-এ দাবির নাম রানটাইমে নির্ধারিত হয়।
যেমন:
<AdditionalClaims ref='json_claims'/>
যেখানে ভেরিয়েবল json_claims
ফর্মটিতে একটি JSON অবজেক্ট রয়েছে:
{ "sub" : "person@example.com", "iss" : "urn://secure-issuer@example.com", "non-registered-claim" : { "This-is-a-thing" : 817, "https://example.com/foobar" : { "p": 42, "q": false } } }
জেনারেট করা JWT-এ JSON অবজেক্টের সমস্ত দাবি অন্তর্ভুক্ত থাকে।
<অতিরিক্ত শিরোনাম/দাবি>
<AdditionalHeaders> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> <Claim name='claim4' ref='variable-name' type='string' array='true'/> </AdditionalHeaders>
JWT-এর হেডারে অতিরিক্ত দাবির নাম/মূল্য জোড়া(গুলি) রাখে।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
বৈধ মান | আপনি একটি অতিরিক্ত দাবির জন্য ব্যবহার করতে চান যে কোনো মান. আপনি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান, একটি মানচিত্র, বা একটি অ্যারে হিসাবে স্পষ্টভাবে দাবি নির্দিষ্ট করতে পারেন। |
<Claim>
উপাদানটি এই বৈশিষ্ট্যগুলি গ্রহণ করে:
- নাম - (প্রয়োজনীয়) দাবির নাম।
- ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। উপস্থিত থাকলে, নীতি দাবি হিসাবে এই ভেরিয়েবলের মান ব্যবহার করবে। যদি একটি রেফ অ্যাট্রিবিউট এবং একটি স্পষ্ট দাবি মান উভয়ই নির্দিষ্ট করা থাকে, তাহলে স্পষ্ট মানটি ডিফল্ট, এবং যদি উল্লেখিত ফ্লো ভেরিয়েবল অমীমাংসিত হয় তাহলে ব্যবহার করা হয়।
- প্রকার - (ঐচ্ছিক) এর মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান বা মানচিত্র
- অ্যারে - (ঐচ্ছিক) মানটি ধরনগুলির একটি অ্যারে কিনা তা নির্দেশ করতে সত্যে সেট করুন। ডিফল্ট: মিথ্যা।
<ক্রিটিকাল হেডার>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
JWT হেডারে ক্রিটিকাল হেডার, crit , যোগ করে। ক্রিট হেডার হল হেডার নামের একটি অ্যারে যা অবশ্যই JWT রিসিভার দ্বারা পরিচিত এবং স্বীকৃত হতে হবে। যেমন:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
রানটাইমে, VerifyJWT নীতি ক্রিট হেডার পরীক্ষা করে। ক্রিট হেডারে তালিকাভুক্ত প্রতিটি আইটেমের জন্য, এটি যাচাই করে যে VerifyJWT নীতির <KnownHeaders>
উপাদানটিও সেই শিরোনামটি তালিকাভুক্ত করে। যেকোন শিরোনাম যা VerifyJWT নীতির সমালোচনায় পাওয়া যায় যেটি <KnownHeaders>
-এও তালিকাভুক্ত নয়, VerifyJWT নীতি ব্যর্থ হয়।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিংগুলির কমা দ্বারা বিভক্ত অ্যারে |
বৈধ মান | হয় একটি অ্যারে বা অ্যারে ধারণকারী একটি ভেরিয়েবলের নাম। |
<কাস্টম দাবি>
দ্রষ্টব্য: বর্তমানে, আপনি যখন UI এর মাধ্যমে একটি নতুন GenerateJWT নীতি যোগ করেন তখন একটি CustomClaims উপাদান ঢোকানো হয়। এই উপাদানটি কার্যকরী নয় এবং উপেক্ষা করা হয়। পরিবর্তে ব্যবহার করার জন্য সঠিক উপাদান হল <অতিরিক্ত দাবি >। পরবর্তী সময়ে সঠিক উপাদান সন্নিবেশ করার জন্য UI আপডেট করা হবে।
<মেয়াদ শেষ>
<ExpiresIn>time-value-here</ExpiresIn>
মিলিসেকেন্ড, সেকেন্ড, মিনিট, ঘন্টা বা দিনে JWT এর জীবনকাল নির্দিষ্ট করে।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | পূর্ণসংখ্যা |
বৈধ মান | একটি মান বা মান ধারণকারী একটি ফ্লো ভেরিয়েবলের একটি রেফারেন্স। সময় একক নিম্নলিখিত হিসাবে নির্দিষ্ট করা যেতে পারে:
উদাহরণস্বরূপ, একটি |
<আইডি>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
নির্দিষ্ট jti দাবি সহ একটি JWT তৈরি করে। যখন টেক্সট মান এবং রেফ অ্যাট্রিবিউট উভয়ই খালি থাকে, তখন নীতিটি একটি এলোমেলো UUID ধারণকারী একটি jti তৈরি করবে। JWT আইডি (jti) দাবি JWT-এর জন্য একটি অনন্য শনাক্তকারী। jti সম্পর্কে আরও তথ্যের জন্য, RFC7519 দেখুন।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং, বা রেফারেন্স। |
বৈধ মান | হয় একটি স্ট্রিং বা ID ধারণকারী একটি ফ্লো ভেরিয়েবলের নাম। |
<অমীমাংসিত ভেরিয়েবলগুলিকে উপেক্ষা করুন>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
পলিসিতে উল্লেখ করা যেকোন রেফারেন্স ভেরিয়েবল অমীমাংসিত হলে আপনি যদি নীতিটি একটি ত্রুটি ছুঁড়তে চান তাহলে মিথ্যাতে সেট করুন৷ কোনো অমীমাংসিত ভেরিয়েবলকে খালি স্ট্রিং (নাল) হিসাবে বিবেচনা করার জন্য সত্যে সেট করুন।
ডিফল্ট | মিথ্যা |
উপস্থিতি | ঐচ্ছিক |
টাইপ | বুলিয়ান |
বৈধ মান | সত্য বা মিথ্যা |
<ইস্যুকারী>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
নীতিটি একটি JWT তৈরি করে যার মধ্যে একটি দাবি রয়েছে যার নাম iss, একটি মান নির্দিষ্ট মানের সাথে সেট করা আছে। একটি দাবি যা JWT প্রদানকারীকে চিহ্নিত করে। এটি RFC7519- এ উল্লিখিত দাবিগুলির একটি নিবন্ধিত সেট।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং, বা রেফারেন্স |
বৈধ মান | যে কোন |
<আগে নয়>
<!-- Specify an absolute time. --> <NotBefore>2017-08-14T11:00:21-07:00</NotBefore> -or- <!-- Specify a time relative to when the token is generated. --> <NotBefore>6h</NotBefore>
টোকেন বৈধ হওয়ার সময় নির্দিষ্ট করে। নির্দিষ্ট সময় পর্যন্ত টোকেনটি অবৈধ। আপনি হয় একটি নিখুঁত সময়ের মান, বা টোকেন তৈরি করার সময় সম্পর্কিত একটি সময় নির্দিষ্ট করতে পারেন।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
বৈধ মান | নিচে দেখুন. |
পরম সময়ের মানগুলির জন্য NotBefore উপাদানের জন্য বৈধ সময়ের মান
নাম | বিন্যাস | উদাহরণ |
বাছাইযোগ্য | yyyy-MM-dd'T'HH:mm:ss.SSSZ | 2017-08-14T11:00:21.269-0700 |
আরএফসি 1123 | EEE, dd MMM yyyy HH:mm:ss zzz | সোম, 14 আগস্ট 2017 11:00:21 PDT |
আরএফসি 850 | EEEE, dd-MMM-yy HH:mm:ss zzz | সোমবার, 14-আগস্ট-17 11:00:21 PDT |
ANCI-C | EEE MMM d HH:mm:ss yyyy | সোম 14 আগস্ট 11:00:21 2017 |
আপেক্ষিক সময়ের মানগুলির জন্য, একটি পূর্ণসংখ্যা এবং একটি সময়কাল নির্দিষ্ট করুন, উদাহরণস্বরূপ:
- 10s
- 60 মি
- 12 ঘন্টা
<আউটপুট ভেরিয়েবল>
<OutputVariable>jwt-variable</OutputVariable>
এই নীতি দ্বারা জেনারেট করা JWT কোথায় রাখতে হবে তা নির্দিষ্ট করে। ডিফল্টরূপে এটি ফ্লো ভেরিয়েবল jwt. POLICYNAME .generated_jwt
.
ডিফল্ট | jwt. POLICYNAME .generated_jwt |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং (একটি প্রবাহ পরিবর্তনশীল নাম) |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
JWT হেডারে অন্তর্ভুক্ত করার জন্য কী আইডি (কিড) নির্দিষ্ট করে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়৷
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
বৈধ মান | একটি প্রবাহ পরিবর্তনশীল বা স্ট্রিং |
<ব্যক্তিগত কী/পাসওয়ার্ড>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
প্রয়োজনে ব্যক্তিগত কী ডিক্রিপ্ট করার জন্য নীতিটি যে পাসওয়ার্ড ব্যবহার করবে তা নির্দিষ্ট করুন। একটি ফ্লো ভেরিয়েবলে কী পাস করতে রেফ অ্যাট্রিবিউট ব্যবহার করুন। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়৷
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
বৈধ মান | একটি প্রবাহ পরিবর্তনশীল রেফারেন্স। দ্রষ্টব্য: আপনাকে অবশ্যই একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে হবে। এজ একটি নীতি কনফিগারেশনকে অবৈধ হিসাবে প্রত্যাখ্যান করবে যেখানে পাসওয়ার্ডটি প্লেইনটেক্সটে নির্দিষ্ট করা আছে। ফ্লো ভেরিয়েবলের অবশ্যই "ব্যক্তিগত" উপসর্গ থাকতে হবে। উদাহরণস্বরূপ, |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
JWT স্বাক্ষর করতে ব্যবহৃত একটি PEM-এনকোড করা ব্যক্তিগত কী নির্দিষ্ট করে। একটি ফ্লো ভেরিয়েবলে কী পাস করতে রেফ অ্যাট্রিবিউট ব্যবহার করুন। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়৷
ডিফল্ট | N/A |
উপস্থিতি | RS256 অ্যালগরিদম ব্যবহার করে একটি JWT তৈরি করতে হবে। |
টাইপ | স্ট্রিং |
বৈধ মান | একটি PEM-এনকোডেড RSA ব্যক্তিগত কী মান প্রতিনিধিত্বকারী একটি স্ট্রিং ধারণকারী একটি ফ্লো ভেরিয়েবল। দ্রষ্টব্য: ফ্লো ভেরিয়েবলের অবশ্যই "ব্যক্তিগত" উপসর্গ থাকতে হবে। উদাহরণস্বরূপ, |
<সিক্রেটকি/আইডি>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
HMAC অ্যালগরিদমের সাথে স্বাক্ষরিত JWT-এর JWT হেডারে অন্তর্ভুক্ত করার জন্য কী আইডি (কিড) নির্দিষ্ট করে। অ্যালগরিদম HS256/HS384/HS512-এর মধ্যে একটি হলেই ব্যবহার করুন৷
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
বৈধ মান | একটি প্রবাহ পরিবর্তনশীল বা স্ট্রিং |
<গোপন কী/মান>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
একটি HMAC অ্যালগরিদম দিয়ে টোকেন যাচাই বা স্বাক্ষর করতে ব্যবহৃত গোপন কী প্রদান করে। অ্যালগরিদম HS256/HS384/HS512-এর মধ্যে একটি হলেই ব্যবহার করুন৷ একটি ফ্লো ভেরিয়েবলে কী পাস করতে রেফ অ্যাট্রিবিউট ব্যবহার করুন।
এজ HS256/HS384/HS512 অ্যালগরিদমের জন্য ন্যূনতম কী শক্তি প্রয়োগ করে। HS256 এর জন্য ন্যূনতম কী দৈর্ঘ্য হল 32 বাইট, HS384 এর জন্য এটি 48 বাইট এবং HS512 এর জন্য এটি 64 বাইট। একটি নিম্ন-শক্তির কী ব্যবহার করা একটি রানটাইম ত্রুটি ঘটায়।
ডিফল্ট | N/A |
উপস্থিতি | HMAC অ্যালগরিদমের জন্য প্রয়োজনীয়। |
টাইপ | স্ট্রিং |
বৈধ মান | একটি স্ট্রিং উল্লেখ করে একটি ফ্লো ভেরিয়েবল দ্রষ্টব্য: একটি ফ্লো ভেরিয়েবল হলে, এটি অবশ্যই "ব্যক্তিগত" উপসর্গ থাকতে হবে। উদাহরণস্বরূপ, |
<বিষয়>
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
যেমন:
<Subject ref="apigee.developer.email"/>
নীতিটি একটি JWT তৈরি করে যার মধ্যে একটি সাব ক্লেম রয়েছে, নির্দিষ্ট মান সেট করা হয়েছে৷ এই দাবিটি JWT এর বিষয় সম্পর্কে একটি বিবৃতি সনাক্ত করে বা শনাক্ত করে৷ এটি RFC7519- এ উল্লিখিত দাবিগুলির একটি আদর্শ সেট।
ডিফল্ট | N/A |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
বৈধ মান | কোনো মান অনন্যভাবে একটি বিষয় বা একটি ফ্লো ভেরিয়েবলকে চিহ্নিত করে একটি মানকে নির্দেশ করে। |
ফ্লো ভেরিয়েবল
জেনারেট জেডব্লিউটি নীতি ফ্লো ভেরিয়েবল সেট করে না।
ত্রুটি উল্লেখ
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
ফল্ট কোড | HTTP স্থিতি | যখন ঘটে |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration | 401 | যখন যাচাইকরণ নীতিতে একাধিক অ্যালগরিদম থাকে তখন ঘটে৷ |
steps.jwt.AlgorithmMismatch | 401 | জেনারেট নীতিতে নির্দিষ্ট করা অ্যালগরিদম যাচাই নীতিতে প্রত্যাশিত অ্যালগরিদমটির সাথে মেলেনি৷ নির্দিষ্ট করা অ্যালগরিদম অবশ্যই মিলবে৷ |
steps.jwt.FailedToDecode | 401 | নীতি JWT ডিকোড করতে অক্ষম ছিল. JWT সম্ভবত দূষিত হয়. |
steps.jwt.GenerationFailed | 401 | নীতি JWT তৈরি করতে অক্ষম ছিল। |
steps.jwt.InsufficientKeyLength | 401 | HS256 অ্যালগরিদমের জন্য 32 বাইটের কম, HS386 অ্যালগরিদমের জন্য 48 বাইটের কম এবং HS512 অ্যালগরিদমের জন্য 64 বাইটের কম। |
steps.jwt.InvalidClaim | 401 | একটি অনুপস্থিত দাবি বা দাবি অমিল, বা একটি অনুপস্থিত শিরোনাম বা শিরোনাম অমিলের জন্য৷ |
steps.jwt.InvalidCurve | 401 | কী দ্বারা নির্দিষ্ট করা বক্ররেখা উপবৃত্তাকার কার্ভ অ্যালগরিদমের জন্য বৈধ নয়। |
steps.jwt.InvalidJsonFormat | 401 | হেডার বা পেলোডে অবৈধ JSON পাওয়া গেছে। |
steps.jwt.InvalidToken | 401 | এই ত্রুটিটি ঘটে যখন JWT স্বাক্ষর যাচাইকরণ ব্যর্থ হয়। |
steps.jwt.JwtAudienceMismatch | 401 | দর্শকদের দাবি টোকেন যাচাইয়ে ব্যর্থ হয়েছে৷ |
steps.jwt.JwtIssuerMismatch | 401 | ইস্যুকারীর দাবি টোকেন যাচাইকরণে ব্যর্থ হয়েছে। |
steps.jwt.JwtSubjectMismatch | 401 | বিষয় দাবি টোকেন যাচাই ব্যর্থ হয়েছে. |
steps.jwt.KeyIdMissing | 401 | যাচাই নীতিতে একটি JWKS পাবলিক কীগুলির উত্স হিসাবে ব্যবহার করা হয়, তবে স্বাক্ষরিত JWT শিরোনামে একটি kid সম্পত্তি অন্তর্ভুক্ত করে না। |
steps.jwt.KeyParsingFailed | 401 | প্রদত্ত মূল তথ্য থেকে সর্বজনীন কী পার্স করা যায়নি। |
steps.jwt.NoAlgorithmFoundInHeader | 401 | তখন ঘটে যখন JWT-এ কোনো অ্যালগরিদম হেডার থাকে না। |
steps.jwt.NoMatchingPublicKey | 401 | যাচাই নীতিতে একটি JWKS-কে পাবলিক কীগুলির উৎস হিসেবে ব্যবহার করা হয়, কিন্তু স্বাক্ষরিত JWT-এর kid JWKS-এ তালিকাভুক্ত নয়। |
steps.jwt.SigningFailed | 401 | জেনারেটজেডব্লিউটি-তে, HS384 বা HS512 অ্যালগরিদমের ন্যূনতম আকারের চেয়ে কম একটি কী-এর জন্য |
steps.jwt.TokenExpired | 401 | নীতি একটি মেয়াদ উত্তীর্ণ টোকেন যাচাই করার চেষ্টা করে। |
steps.jwt.TokenNotYetValid | 401 | টোকেন এখনও বৈধ নয়. |
steps.jwt.UnhandledCriticalHeader | 401 | crit হেডারে যাচাই JWT নীতির দ্বারা পাওয়া একটি হেডার KnownHeaders এ তালিকাভুক্ত নয়। |
steps.jwt.UnknownException | 401 | একটি অজানা ব্যতিক্রম ঘটেছে. |
steps.jwt.WrongKeyType | 401 | ভুল ধরনের কী নির্দিষ্ট করা হয়েছে। উদাহরণস্বরূপ, যদি আপনি একটি উপবৃত্তাকার কার্ভ অ্যালগরিদমের জন্য একটি RSA কী বা একটি RSA অ্যালগরিদমের জন্য একটি কার্ভ কী উল্লেখ করেন। |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
ত্রুটির নাম | কারণ | ঠিক করুন |
---|---|---|
InvalidNameForAdditionalClaim | <AdditionalClaims> উপাদানের চাইল্ড এলিমেন্ট <Claim> এ ব্যবহৃত দাবি নিম্নলিখিত নিবন্ধিত নামগুলির মধ্যে একটি হলে স্থাপনা ব্যর্থ হবে: kid , iss , sub , aud , iat , exp , nbf , বা jti । | build |
InvalidTypeForAdditionalClaim | যদি <AdditionalClaims> উপাদানের চাইল্ড এলিমেন্ট <Claim> এ ব্যবহৃত দাবিটি string , number , boolean বা map প্রকারের না হয়, তাহলে স্থাপনা ব্যর্থ হবে। | build |
MissingNameForAdditionalClaim | যদি দাবির নাম <AdditionalClaims> উপাদানের চাইল্ড এলিমেন্ট <Claim> এ নির্দিষ্ট করা না থাকে, তাহলে স্থাপনা ব্যর্থ হবে। | build |
InvalidNameForAdditionalHeader | এই ত্রুটিটি ঘটে যখন <AdditionalClaims> উপাদানের চাইল্ড এলিমেন্ট <Claim> এ ব্যবহৃত দাবির নাম হয় alg বা typ । | build |
InvalidTypeForAdditionalHeader | যদি <AdditionalClaims> উপাদানের চাইল্ড এলিমেন্ট <Claim> এ ব্যবহৃত দাবির ধরনটি string , number , boolean বা map প্রকারের না হয়, তাহলে স্থাপনা ব্যর্থ হবে। | build |
InvalidValueOfArrayAttribute | এই ত্রুটিটি ঘটে যখন <AdditionalClaims> উপাদানের চাইল্ড এলিমেন্ট <Claim> এ অ্যারের অ্যাট্রিবিউটের মান true বা false সেট করা হয় না। | build |
InvalidConfigurationForActionAndAlgorithm | যদি <PrivateKey> উপাদানটি HS ফ্যামিলি অ্যালগরিদমের সাথে ব্যবহার করা হয় বা RSA ফ্যামিলি অ্যালগরিদমের সাথে <SecretKey> উপাদান ব্যবহার করা হয়, তাহলে স্থাপনা ব্যর্থ হবে। | build |
InvalidValueForElement | <Algorithm> এলিমেন্টে উল্লেখ করা মান সমর্থিত মান না হলে, স্থাপনা ব্যর্থ হবে। | build |
MissingConfigurationElement | এই ত্রুটি ঘটবে যদি <PrivateKey> উপাদানটি RSA ফ্যামিলি অ্যালগরিদমের সাথে ব্যবহার না করা হয় অথবা <SecretKey> উপাদানটি HS ফ্যামিলি অ্যালগরিদমের সাথে ব্যবহার না করা হয়। | build |
InvalidKeyConfiguration | যদি চাইল্ড উপাদান <Value> <PrivateKey> বা <SecretKey> উপাদানে সংজ্ঞায়িত না হয়, তাহলে স্থাপনা ব্যর্থ হবে। | build |
EmptyElementForKeyConfiguration | যদি <PrivateKey> বা <SecretKey> এলিমেন্টের চাইল্ড এলিমেন্ট <Value> এর রেফ অ্যাট্রিবিউট খালি বা অনির্দিষ্ট থাকে, তাহলে ডিপ্লয়মেন্ট ব্যর্থ হবে। | build |
InvalidVariableNameForSecret | এই ত্রুটিটি ঘটবে যদি <PrivateKey> বা <SecretKey> উপাদানের চাইল্ড এলিমেন্টের <Value> এর রেফ অ্যাট্রিবিউটে নির্দিষ্ট করা ফ্লো ভেরিয়েবল নামটিতে প্রাইভেট প্রিফিক্স (private.) না থাকে। | build |
InvalidSecretInConfig | এই ত্রুটিটি ঘটে যদি <PrivateKey> বা <SecretKey> উপাদানের চাইল্ড উপাদান <Value> ব্যক্তিগত উপসর্গ (private.) না থাকে। | build |
InvalidTimeFormat | যদি <NotBefore> উপাদানে উল্লিখিত মান একটি সমর্থিত বিন্যাস ব্যবহার না করে, তাহলে স্থাপনা ব্যর্থ হবে। | build |
ফল্ট ভেরিয়েবল
রানটাইম ত্রুটি ঘটলে এই ভেরিয়েবলগুলি সেট করা হয়। আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।
ভেরিয়েবল | যেখানে | উদাহরণ |
---|---|---|
fault.name=" fault_name " | fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। | fault.name Matches "TokenExpired" |
JWT.failed | সমস্ত JWT নীতি ব্যর্থতার ক্ষেত্রে একই পরিবর্তনশীল সেট করে। | JWT.failed = true |
উদাহরণ ত্রুটি প্রতিক্রিয়া
ত্রুটি পরিচালনার জন্য, সর্বোত্তম অনুশীলন হল ত্রুটি প্রতিক্রিয়ার errorcode
অংশটি আটকে রাখা। faultstring
-এ লেখার উপর নির্ভর করবেন না, কারণ এটি পরিবর্তন হতে পারে।
উদাহরণ দোষ নিয়ম
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>