আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
কনফিগারযোগ্য ক্লেইম সেট সহ একটি স্বাক্ষরিত JWT তৈরি করে। এরপর JWT-টি ক্লায়েন্টদের কাছে ফেরত পাঠানো, ব্যাকএন্ড টার্গেটে প্রেরণ করা, বা অন্য উপায়ে ব্যবহার করা যেতে পারে। বিস্তারিত পরিচিতির জন্য JWS এবং JWT পলিসি ওভারভিউ দেখুন।
ভিডিও
কীভাবে একটি স্বাক্ষরিত JWT তৈরি করতে হয় তা শিখতে একটি সংক্ষিপ্ত ভিডিও দেখুন।
নমুনা
- HS256 অ্যালগরিদম ব্যবহার করে স্বাক্ষরিত একটি JWT তৈরি করুন।
- RS256 অ্যালগরিদম দ্বারা স্বাক্ষরিত একটি JWT তৈরি করুন।
HS256 অ্যালগরিদম ব্যবহার করে স্বাক্ষরিত একটি JWT তৈরি করুন।
এই উদাহরণ পলিসিটি একটি নতুন JWT তৈরি করে এবং HS256 অ্যালগরিদম ব্যবহার করে তাতে স্বাক্ষর করে। স্বাক্ষর করা এবং যাচাই করা, উভয় কাজের জন্যই HS256 একটি শেয়ার্ড সিক্রেটের উপর নির্ভর করে।
যখন এই পলিসি অ্যাকশনটি ট্রিগার করা হয়, Edge JWT হেডার এবং পেলোডকে এনকোড করে, তারপর JWT-টিকে ডিজিটালভাবে স্বাক্ষর করে। পলিসিতে কীভাবে অনুরোধ করতে হয় তা সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।
এখানকার পলিসি কনফিগারেশনটি JWT স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত এক সেট স্ট্যান্ডার্ড ক্লেইম সহ একটি JWT তৈরি করবে, যার মধ্যে ১ ঘণ্টার মেয়াদ এবং একটি অতিরিক্ত ক্লেইমও অন্তর্ভুক্ত থাকবে। আপনি আপনার ইচ্ছামতো যত খুশি অতিরিক্ত ক্লেইম যোগ করতে পারেন। এই নমুনা পলিসির প্রতিটি এলিমেন্টের প্রয়োজনীয়তা এবং বিকল্পগুলির বিশদ বিবরণের জন্য এলিমেন্ট রেফারেন্স দেখুন।
<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>
ফলস্বরূপ JWT-টির এই হেডারটি থাকবে …
{
"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-এনকোডেড আকারে প্রদান করতে হবে। পলিসির জন্য কীভাবে অনুরোধ করতে হয় তা সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।
যখন এই পলিসি অ্যাকশনটি ট্রিগার করা হয়, Edge ক্লেইমগুলো সহ 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 তৈরি করতে ব্যবহৃত কী নির্দিষ্ট করার জন্য আপনি যে উপাদানগুলো ব্যবহার করেন, তা নির্বাচিত অ্যালগরিদমের উপর নির্ভর করে, যেমনটি নিম্নলিখিত সারণিতে দেখানো হয়েছে:
| অ্যালগরিদম | মূল উপাদান | |
|---|---|---|
| এইচএস{২৫৬/৩৮৪/৫১২} * | <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> | |
| আরএস/পিএস/ইএস{২৫৬/৩৮৪/৫১২} * | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> | |
| মূল প্রয়োজনীয়তাগুলো সম্পর্কে আরও জানতে, ‘স্বাক্ষর এনক্রিপশন অ্যালগরিদম সম্পর্কে’ দেখুন। | ||
JWT তৈরি করার জন্য এলিমেন্ট রেফারেন্স
পলিসি রেফারেন্সে Generate JWT পলিসির উপাদান এবং বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।
দ্রষ্টব্য: আপনার ব্যবহৃত এনক্রিপশন অ্যালগরিদমের উপর নির্ভর করে কনফিগারেশন কিছুটা ভিন্ন হবে। নির্দিষ্ট ব্যবহারের ক্ষেত্রে কনফিগারেশন প্রদর্শনের জন্য নমুনাগুলো দেখুন।
শীর্ষ-স্তরের উপাদানে প্রযোজ্য অ্যাট্রিবিউটসমূহ
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
নিম্নলিখিত বৈশিষ্ট্যগুলি সকল পলিসি প্যারেন্ট এলিমেন্টের জন্য সাধারণ।
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| নাম | পলিসির অভ্যন্তরীণ নাম। নামে আপনি যে অক্ষরগুলো ব্যবহার করতে পারবেন তা হলো: A-Z0-9._\-$ % । তবে, Edge ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন অ্যালফানিউমেরিক নয় এমন অক্ষর স্বয়ংক্রিয়ভাবে মুছে ফেলা। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে পলিসিটিকে একটি ভিন্ন, স্বাভাবিক ভাষার নাম দিয়ে লেবেল করতে | প্রযোজ্য নয় | প্রয়োজনীয় |
| continueOnError | কোনো পলিসি ব্যর্থ হলে ত্রুটি ফেরত দিতে এটিকে false এ সেট করুন। বেশিরভাগ পলিসির ক্ষেত্রেই এটি একটি প্রত্যাশিত আচরণ। কোনো পলিসি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে এটিকে ' | মিথ্যা | ঐচ্ছিক |
| সক্ষম | নীতিটি কার্যকর করতে এটিকে true তে সেট করুন। পলিসিটি 'বন্ধ' করতে এটিকে 'ফলস' | সত্য | ঐচ্ছিক |
| অ্যাসিঙ্ক | এই অ্যাট্রিবিউটটি অপ্রচলিত। | মিথ্যা | অপ্রচলিত |
<ডিসপ্লে নাম>
<DisplayName>Policy Display Name</DisplayName>
ম্যানেজমেন্ট UI প্রক্সি এডিটরে পলিসিটিকে একটি ভিন্ন, স্বাভাবিক ভাষার নাম দিয়ে লেবেল করতে name অ্যাট্রিবিউটের পাশাপাশি এটি ব্যবহার করুন।
| ডিফল্ট | আপনি যদি এই উপাদানটি বাদ দেন, তাহলে পলিসির 'name' অ্যাট্রিবিউটের মান ব্যবহৃত হবে। |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
<অ্যালগরিদম>
<Algorithm>algorithm-here</Algorithm>
টোকেনটি স্বাক্ষর করার জন্য এনক্রিপশন অ্যালগরিদম নির্দিষ্ট করে।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | প্রয়োজনীয় |
| প্রকার | স্ট্রিং |
| বৈধ মান | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<দর্শক>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
পলিসিটি একটি JWT তৈরি করে, যাতে নির্দিষ্ট মানে সেট করা একটি 'aud' ক্লেইম থাকে। এই ক্লেইমটি সেই প্রাপকদের শনাক্ত করে যাদের জন্য JWT-টি উদ্দিষ্ট। এটি RFC7519- এ উল্লিখিত নিবন্ধিত ক্লেইমগুলোর মধ্যে একটি।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | অ্যারে (কমা দ্বারা পৃথক করা মানগুলির একটি তালিকা) |
| বৈধ মান | এমন যেকোনো কিছু যা দর্শককে শনাক্ত করে। |
<অতিরিক্ত দাবি/দাবি>
<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-এর পেলোডে অতিরিক্ত ক্লেইম নেম/ভ্যালু পেয়ার নির্দিষ্ট করার সুযোগ দেয়। আপনি ক্লেইমটিকে স্ট্রিং, সংখ্যা, বুলিয়ান, ম্যাপ বা অ্যারে হিসেবে স্পষ্টভাবে উল্লেখ করতে পারেন। ম্যাপ হলো মূলত নেম/ভ্যালু পেয়ারের একটি সেট।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| বৈধ মান | অতিরিক্ত ক্লেইমের জন্য আপনি যেকোনো মান ব্যবহার করতে পারেন। আপনি ক্লেইমটিকে স্ট্রিং, সংখ্যা, বুলিয়ান, ম্যাপ বা অ্যারে হিসেবে স্পষ্টভাবে উল্লেখ করতে পারেন। |
<Claim> এলিমেন্টটি এই অ্যাট্রিবিউটগুলো গ্রহণ করে:
- নাম - (আবশ্যক) দাবির নাম।
- ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। এটি উপস্থিত থাকলে, পলিসি এই ভেরিয়েবলের মানটিকে ক্লেইম হিসেবে ব্যবহার করবে। যদি একটি ref অ্যাট্রিবিউট এবং একটি সুস্পষ্ট ক্লেইম মান উভয়ই নির্দিষ্ট করা থাকে, তবে সুস্পষ্ট মানটি ডিফল্ট হিসেবে গণ্য হবে এবং উল্লেখিত ফ্লো ভেরিয়েবলটি অমীমাংসিত থাকলে সেটিই ব্যবহৃত হবে।
- ধরণ - (ঐচ্ছিক) নিম্নলিখিতগুলির মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান, বা ম্যাপ
- অ্যারে - (ঐচ্ছিক) মানটি বিভিন্ন টাইপের একটি অ্যারে কিনা তা নির্দেশ করতে ' true' সেট করুন। ডিফল্ট: 'false'।
যখন আপনি <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-এর হেডারে অতিরিক্ত ক্লেইম নেম/ভ্যালু পেয়ার(গুলি) যুক্ত করে।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| বৈধ মান | অতিরিক্ত ক্লেইমের জন্য আপনি যেকোনো মান ব্যবহার করতে পারেন। আপনি ক্লেইমটিকে স্ট্রিং, সংখ্যা, বুলিয়ান, ম্যাপ বা অ্যারে হিসেবে স্পষ্টভাবে উল্লেখ করতে পারেন। |
<Claim> এলিমেন্টটি এই অ্যাট্রিবিউটগুলো গ্রহণ করে:
- নাম - (আবশ্যক) দাবির নাম।
- ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। এটি উপস্থিত থাকলে, পলিসি এই ভেরিয়েবলের মানটিকে ক্লেইম হিসেবে ব্যবহার করবে। যদি একটি ref অ্যাট্রিবিউট এবং একটি সুস্পষ্ট ক্লেইম মান উভয়ই নির্দিষ্ট করা থাকে, তবে সুস্পষ্ট মানটি ডিফল্ট হিসেবে গণ্য হবে এবং উল্লেখিত ফ্লো ভেরিয়েবলটি অমীমাংসিত থাকলে সেটিই ব্যবহৃত হবে।
- ধরণ - (ঐচ্ছিক) নিম্নলিখিতগুলির মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান, বা ম্যাপ
- অ্যারে - (ঐচ্ছিক) মানটি বিভিন্ন টাইপের একটি অ্যারে কিনা তা নির্দেশ করতে ' true' সেট করুন। ডিফল্ট: 'false'।
<সমালোচনামূলক শিরোনাম>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
JWT হেডারে ক্রিটিক্যাল হেডার, crit , যোগ করে। crit হেডারটি হলো হেডারের নামগুলোর একটি অ্যারে, যা JWT রিসিভারের কাছে পরিচিত এবং স্বীকৃত হতে হবে। উদাহরণস্বরূপ:
{
“typ: “...”,
“alg” : “...”,
“crit” : [ “a”, “b”, “c” ],
}রানটাইমে, VerifyJWT পলিসিটি crit হেডার পরীক্ষা করে। crit হেডারে তালিকাভুক্ত প্রতিটি আইটেমের জন্য, এটি যাচাই করে যে VerifyJWT পলিসির <KnownHeaders> এলিমেন্টেও সেই হেডারটি তালিকাভুক্ত আছে কিনা। crit- এ VerifyJWT পলিসি এমন কোনো হেডার খুঁজে পায় যা <KnownHeaders> এ তালিকাভুক্ত নয়, যার ফলে VerifyJWT পলিসিটি ব্যর্থ হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | কমা দ্বারা পৃথক করা স্ট্রিংগুলির অ্যারে |
| বৈধ মান | হয় একটি অ্যারে অথবা অ্যারেটি ধারণকারী কোনো ভেরিয়েবলের নাম। |
কাস্টম দাবি
দ্রষ্টব্য: বর্তমানে, আপনি যখন UI-এর মাধ্যমে একটি নতুন GenerateJWT পলিসি যোগ করেন, তখন একটি CustomClaims এলিমেন্ট যুক্ত হয়ে যায়। এই এলিমেন্টটি কার্যকরী নয় এবং এটি উপেক্ষা করা হয়। এর পরিবর্তে ব্যবহার করার জন্য সঠিক এলিমেন্টটি হলো <AdditionalClaims> । পরবর্তীতে সঠিক এলিমেন্টগুলো যুক্ত করার জন্য 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 তৈরি করে। যখন টেক্সট ভ্যালু এবং ref অ্যাট্রিবিউট উভয়ই খালি থাকে, তখন পলিসিটি একটি র্যান্ডম UUID সম্বলিত একটি jti তৈরি করবে। JWT ID (jti) ক্লেইমটি হলো JWT-এর জন্য একটি অনন্য শনাক্তকারী। jti সম্পর্কে আরও তথ্যের জন্য, RFC7519 দেখুন।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং, অথবা রেফারেন্স। |
| বৈধ মান | হয় একটি স্ট্রিং অথবা আইডি ধারণকারী একটি ফ্লো ভেরিয়েবলের নাম। |
<অমীমাংসিত ভেরিয়েবল উপেক্ষা করুন>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
যদি আপনি চান যে পলিসিতে উল্লেখিত কোনো রেফারেন্সকৃত ভেরিয়েবল সমাধানযোগ্য না হলে পলিসিটি একটি ত্রুটি (error) দেখাবে, তাহলে এটিকে false সেট করুন। যেকোনো সমাধানযোগ্য নয় এমন ভেরিয়েবলকে একটি খালি স্ট্রিং (null) হিসেবে গণ্য করতে এটিকে true সেট করুন।
| ডিফল্ট | মিথ্যা |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | বুলিয়ান |
| বৈধ মান | সত্য বা মিথ্যা |
<ইস্যুকারী>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
এই পলিসিটি 'iss' নামের একটি ক্লেইম সম্বলিত একটি JWT তৈরি করে, যার মান নির্দিষ্ট ভ্যালুতে সেট করা থাকে। এই ক্লেইমটি JWT-এর ইস্যুকারীকে শনাক্ত করে। এটি RFC7519- এ উল্লিখিত নিবন্ধিত ক্লেইমগুলোর একটি।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং, বা রেফারেন্স |
| বৈধ মান | যেকোনো |
<পূর্বে নয়>
<!-- 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>
টোকেনটি কখন থেকে বৈধ হবে তা নির্দিষ্ট করে। নির্দিষ্ট সময় পর্যন্ত টোকেনটি অবৈধ থাকে। আপনি একটি নির্দিষ্ট সময়, অথবা টোকেনটি তৈরি হওয়ার সাপেক্ষে একটি সময় নির্দিষ্ট করতে পারেন।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | নিচে দেখুন। |
পরম সময়ের মানের জন্য NotBefore এলিমেন্টের বৈধ সময়ের মান
| নাম | ফর্ম্যাট | উদাহরণ |
| সাজানো যায় | yyyy-MM-dd'T'HH:mm:ss.SSSZ | 2017-08-14T11:00:21.269-0700 |
| আরএফসি ১১২৩ | EEE, dd MMM yyyy HH:mm:ss zzz | সোমবার, ১৪ আগস্ট ২০১৭ ১১:০০:২১ পিডিটি |
| আরএফসি ৮৫০ | EEEE, dd-MMM-yy HH:mm:ss zzz | সোমবার, ১৪-আগস্ট-১৭ ১১:০০:২১ পিডিটি |
| ANCI-C | EEE MMM d HH:mm:ss yyyy | সোমবার, ১৪ আগস্ট, ২০১৭, ১১:০০:২১ |
আপেক্ষিক সময়ের মানের জন্য, একটি পূর্ণসংখ্যা এবং একটি সময়কাল উল্লেখ করুন, উদাহরণস্বরূপ:
- ১০ সেকেন্ড
- ৬০ মিটার
- ১২ ঘন্টা
<আউটপুট ভেরিয়েবল>
<OutputVariable>jwt-variable</OutputVariable>
এই পলিসি দ্বারা তৈরি JWT কোথায় রাখা হবে তা নির্দিষ্ট করে। ডিফল্টরূপে এটি jwt. POLICYNAME .generated_jwt
| ডিফল্ট | jwt. POLICYNAME .generated_jwt |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং (একটি ফ্লো ভেরিয়েবলের নাম) |
<প্রাইভেট কী/আইডি>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
JWT হেডারে অন্তর্ভুক্ত করার জন্য কী আইডি (kid) নির্দিষ্ট করে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল বা স্ট্রিং |
<প্রাইভেট কী/পাসওয়ার্ড>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
প্রয়োজনে, প্রাইভেট কী ডিক্রিপ্ট করার জন্য পলিসি যে পাসওয়ার্ডটি ব্যবহার করবে তা নির্দিষ্ট করুন। ফ্লো ভেরিয়েবলে কী-টি পাস করার জন্য ref অ্যাট্রিবিউট ব্যবহার করুন। এটি শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি প্রবাহ পরিবর্তনশীল রেফারেন্স। দ্রষ্টব্য: আপনাকে অবশ্যই একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে হবে। Edge এমন কোনো পলিসি কনফিগারেশনকে অবৈধ বলে প্রত্যাখ্যান করবে যেখানে পাসওয়ার্ডটি প্লেইনটেক্সটে (সাধারণ ভাষায়) উল্লেখ করা থাকে। ফ্লো ভেরিয়েবলটির শুরুতে অবশ্যই 'private' উপসর্গটি থাকতে হবে। উদাহরণস্বরূপ, |
<ব্যক্তিগত কী/মান>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
JWT-তে স্বাক্ষর করার জন্য ব্যবহৃত একটি PEM-এনকোডেড প্রাইভেট কী নির্দিষ্ট করে। ফ্লো ভেরিয়েবলে কী-টি পাস করার জন্য ref অ্যাট্রিবিউট ব্যবহার করুন। এটি শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | RS256 অ্যালগরিদম ব্যবহার করে একটি JWT তৈরি করার জন্য এটি প্রয়োজন। |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল, যা একটি PEM-এনকোডেড RSA প্রাইভেট কী-এর মানকে প্রতিনিধিত্বকারী একটি স্ট্রিং ধারণ করে। দ্রষ্টব্য: ফ্লো ভেরিয়েবলের শুরুতে অবশ্যই 'private' উপসর্গটি থাকতে হবে। উদাহরণস্বরূপ, |
<গোপন কী/আইডি>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
HMAC অ্যালগরিদম দ্বারা স্বাক্ষরিত কোনো JWT-এর হেডারে অন্তর্ভুক্ত করার জন্য কী আইডি (kid) নির্দিষ্ট করে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি HS256/HS384/HS512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল বা স্ট্রিং |
<গোপন কী/মান>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
HMAC অ্যালগরিদম ব্যবহার করে টোকেন যাচাই বা স্বাক্ষর করার জন্য ব্যবহৃত গোপন কী প্রদান করে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি HS256/HS384/HS512-এর মধ্যে একটি হয়। ফ্লো ভেরিয়েবলে কী-টি পাস করার জন্য ref অ্যাট্রিবিউট ব্যবহার করুন।
Edge, HS256/HS384/HS512 অ্যালগরিদমগুলোর জন্য একটি ন্যূনতম কী-স্ট্রেংথ বা কী-শক্তি বাধ্যতামূলক করেছে। HS256-এর জন্য ন্যূনতম কী-লেংথ হলো ৩২ বাইট, HS384-এর জন্য ৪৮ বাইট এবং HS512-এর জন্য ৬৪ বাইট। এর চেয়ে কম শক্তির কী ব্যবহার করলে রানটাইম এরর দেখা দেয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | HMAC অ্যালগরিদমের জন্য আবশ্যক। |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল যা একটি স্ট্রিংকে নির্দেশ করে দ্রষ্টব্য: যদি এটি একটি ফ্লো ভেরিয়েবল হয়, তবে এর আগে অবশ্যই 'private' উপসর্গটি থাকতে হবে। উদাহরণস্বরূপ, |
বিষয়
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
উদাহরণস্বরূপ:
<Subject ref="apigee.developer.email"/>
পলিসিটি একটি সাব- ক্লেম সম্বলিত একটি JWT তৈরি করে, যা নির্দিষ্ট মানে সেট করা থাকে। এই ক্লেমটি JWT-এর বিষয়বস্তুকে শনাক্ত করে বা সে সম্পর্কে একটি বিবৃতি দেয়। এটি RFC7519- এ উল্লিখিত স্ট্যান্ডার্ড ক্লেমগুলোর একটি।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | যেকোনো মান যা কোনো বিষয়কে অনন্যভাবে শনাক্ত করে অথবা এমন কোনো ফ্লো ভেরিয়েবল যা কোনো মানকে নির্দেশ করে। |
প্রবাহ পরিবর্তনশীল
Generate JWT পলিসিটি ফ্লো ভেরিয়েবল সেট করে না।
ত্রুটির রেফারেন্স
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | 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>
আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
কনফিগারযোগ্য ক্লেইম সেট সহ একটি স্বাক্ষরিত JWT তৈরি করে। এরপর JWT-টি ক্লায়েন্টদের কাছে ফেরত পাঠানো, ব্যাকএন্ড টার্গেটে প্রেরণ করা, বা অন্য উপায়ে ব্যবহার করা যেতে পারে। বিস্তারিত পরিচিতির জন্য JWS এবং JWT পলিসি ওভারভিউ দেখুন।
ভিডিও
কীভাবে একটি স্বাক্ষরিত JWT তৈরি করতে হয় তা শিখতে একটি সংক্ষিপ্ত ভিডিও দেখুন।
নমুনা
- HS256 অ্যালগরিদম ব্যবহার করে স্বাক্ষরিত একটি JWT তৈরি করুন।
- RS256 অ্যালগরিদম দ্বারা স্বাক্ষরিত একটি JWT তৈরি করুন।
HS256 অ্যালগরিদম ব্যবহার করে স্বাক্ষরিত একটি JWT তৈরি করুন।
এই উদাহরণ পলিসিটি একটি নতুন JWT তৈরি করে এবং HS256 অ্যালগরিদম ব্যবহার করে তাতে স্বাক্ষর করে। স্বাক্ষর করা এবং যাচাই করা, উভয় কাজের জন্যই HS256 একটি শেয়ার্ড সিক্রেটের উপর নির্ভর করে।
যখন এই পলিসি অ্যাকশনটি ট্রিগার করা হয়, Edge JWT হেডার এবং পেলোডকে এনকোড করে, তারপর JWT-টিকে ডিজিটালভাবে স্বাক্ষর করে। পলিসিতে কীভাবে অনুরোধ করতে হয় তা সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।
এখানকার পলিসি কনফিগারেশনটি JWT স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত এক সেট স্ট্যান্ডার্ড ক্লেইম সহ একটি JWT তৈরি করবে, যার মধ্যে ১ ঘণ্টার মেয়াদ এবং একটি অতিরিক্ত ক্লেইমও অন্তর্ভুক্ত থাকবে। আপনি আপনার ইচ্ছামতো যত খুশি অতিরিক্ত ক্লেইম যোগ করতে পারেন। এই নমুনা পলিসির প্রতিটি এলিমেন্টের প্রয়োজনীয়তা এবং বিকল্পগুলির বিশদ বিবরণের জন্য এলিমেন্ট রেফারেন্স দেখুন।
<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>
ফলস্বরূপ JWT-টির এই হেডারটি থাকবে …
{
"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-এনকোডেড আকারে প্রদান করতে হবে। পলিসির জন্য কীভাবে অনুরোধ করতে হয় তা সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।
যখন এই পলিসি অ্যাকশনটি ট্রিগার করা হয়, Edge ক্লেইমগুলো সহ 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 তৈরি করতে ব্যবহৃত কী নির্দিষ্ট করার জন্য আপনি যে উপাদানগুলো ব্যবহার করেন, তা নির্বাচিত অ্যালগরিদমের উপর নির্ভর করে, যেমনটি নিম্নলিখিত সারণিতে দেখানো হয়েছে:
| অ্যালগরিদম | মূল উপাদান | |
|---|---|---|
| এইচএস{২৫৬/৩৮৪/৫১২} * | <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> | |
| আরএস/পিএস/ইএস{২৫৬/৩৮৪/৫১২} * | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> | |
| মূল প্রয়োজনীয়তাগুলো সম্পর্কে আরও জানতে, ‘স্বাক্ষর এনক্রিপশন অ্যালগরিদম সম্পর্কে’ দেখুন। | ||
JWT তৈরি করার জন্য এলিমেন্ট রেফারেন্স
পলিসি রেফারেন্সে Generate JWT পলিসির উপাদান এবং বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।
দ্রষ্টব্য: আপনার ব্যবহৃত এনক্রিপশন অ্যালগরিদমের উপর নির্ভর করে কনফিগারেশন কিছুটা ভিন্ন হবে। নির্দিষ্ট ব্যবহারের ক্ষেত্রে কনফিগারেশন প্রদর্শনের জন্য নমুনাগুলো দেখুন।
শীর্ষ-স্তরের উপাদানে প্রযোজ্য অ্যাট্রিবিউটসমূহ
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
নিম্নলিখিত বৈশিষ্ট্যগুলি সকল পলিসি প্যারেন্ট এলিমেন্টের জন্য সাধারণ।
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| নাম | পলিসির অভ্যন্তরীণ নাম। নামে আপনি যে অক্ষরগুলো ব্যবহার করতে পারবেন তা হলো: A-Z0-9._\-$ % । তবে, Edge ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন অ্যালফানিউমেরিক নয় এমন অক্ষর স্বয়ংক্রিয়ভাবে মুছে ফেলা। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে পলিসিটিকে একটি ভিন্ন, স্বাভাবিক ভাষার নাম দিয়ে লেবেল করতে | প্রযোজ্য নয় | প্রয়োজনীয় |
| continueOnError | কোনো পলিসি ব্যর্থ হলে ত্রুটি ফেরত দিতে এটিকে false এ সেট করুন। বেশিরভাগ পলিসির ক্ষেত্রেই এটি একটি প্রত্যাশিত আচরণ। কোনো পলিসি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে এটিকে ' | মিথ্যা | ঐচ্ছিক |
| সক্ষম | নীতিটি কার্যকর করতে এটিকে true তে সেট করুন। পলিসিটি 'বন্ধ' করতে এটিকে 'ফলস' | সত্য | ঐচ্ছিক |
| অ্যাসিঙ্ক | এই অ্যাট্রিবিউটটি অপ্রচলিত। | মিথ্যা | অপ্রচলিত |
<ডিসপ্লে নাম>
<DisplayName>Policy Display Name</DisplayName>
ম্যানেজমেন্ট UI প্রক্সি এডিটরে পলিসিটিকে একটি ভিন্ন, স্বাভাবিক ভাষার নাম দিয়ে লেবেল করতে name অ্যাট্রিবিউটের পাশাপাশি এটি ব্যবহার করুন।
| ডিফল্ট | আপনি যদি এই উপাদানটি বাদ দেন, তাহলে পলিসির 'name' অ্যাট্রিবিউটের মান ব্যবহৃত হবে। |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
<অ্যালগরিদম>
<Algorithm>algorithm-here</Algorithm>
টোকেনটি স্বাক্ষর করার জন্য এনক্রিপশন অ্যালগরিদম নির্দিষ্ট করে।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | প্রয়োজনীয় |
| প্রকার | স্ট্রিং |
| বৈধ মান | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<দর্শক>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
পলিসিটি একটি JWT তৈরি করে, যাতে নির্দিষ্ট মানে সেট করা একটি 'aud' ক্লেইম থাকে। এই ক্লেইমটি সেই প্রাপকদের শনাক্ত করে যাদের জন্য JWT-টি উদ্দিষ্ট। এটি RFC7519- এ উল্লিখিত নিবন্ধিত ক্লেইমগুলোর মধ্যে একটি।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | অ্যারে (কমা দ্বারা পৃথক করা মানগুলির একটি তালিকা) |
| বৈধ মান | এমন যেকোনো কিছু যা দর্শককে শনাক্ত করে। |
<অতিরিক্ত দাবি/দাবি>
<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-এর পেলোডে অতিরিক্ত ক্লেইম নেম/ভ্যালু পেয়ার নির্দিষ্ট করার সুযোগ দেয়। আপনি ক্লেইমটিকে স্ট্রিং, সংখ্যা, বুলিয়ান, ম্যাপ বা অ্যারে হিসেবে স্পষ্টভাবে উল্লেখ করতে পারেন। ম্যাপ হলো মূলত নেম/ভ্যালু পেয়ারের একটি সেট।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| বৈধ মান | অতিরিক্ত ক্লেইমের জন্য আপনি যেকোনো মান ব্যবহার করতে পারেন। আপনি ক্লেইমটিকে স্ট্রিং, সংখ্যা, বুলিয়ান, ম্যাপ বা অ্যারে হিসেবে স্পষ্টভাবে উল্লেখ করতে পারেন। |
<Claim> এলিমেন্টটি এই অ্যাট্রিবিউটগুলো গ্রহণ করে:
- নাম - (আবশ্যক) দাবির নাম।
- ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। এটি উপস্থিত থাকলে, পলিসি এই ভেরিয়েবলের মানটিকে ক্লেইম হিসেবে ব্যবহার করবে। যদি একটি ref অ্যাট্রিবিউট এবং একটি সুস্পষ্ট ক্লেইম মান উভয়ই নির্দিষ্ট করা থাকে, তবে সুস্পষ্ট মানটি ডিফল্ট হিসেবে গণ্য হবে এবং উল্লেখিত ফ্লো ভেরিয়েবলটি অমীমাংসিত থাকলে সেটিই ব্যবহৃত হবে।
- ধরণ - (ঐচ্ছিক) নিম্নলিখিতগুলির মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান, বা ম্যাপ
- অ্যারে - (ঐচ্ছিক) মানটি বিভিন্ন টাইপের একটি অ্যারে কিনা তা নির্দেশ করতে ' true' সেট করুন। ডিফল্ট: 'false'।
যখন আপনি <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-এর হেডারে অতিরিক্ত ক্লেইম নেম/ভ্যালু পেয়ার(গুলি) যুক্ত করে।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| বৈধ মান | অতিরিক্ত ক্লেইমের জন্য আপনি যেকোনো মান ব্যবহার করতে পারেন। আপনি ক্লেইমটিকে স্ট্রিং, সংখ্যা, বুলিয়ান, ম্যাপ বা অ্যারে হিসেবে স্পষ্টভাবে উল্লেখ করতে পারেন। |
<Claim> এলিমেন্টটি এই অ্যাট্রিবিউটগুলো গ্রহণ করে:
- নাম - (আবশ্যক) দাবির নাম।
- ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। এটি উপস্থিত থাকলে, পলিসি এই ভেরিয়েবলের মানটিকে ক্লেইম হিসেবে ব্যবহার করবে। যদি একটি ref অ্যাট্রিবিউট এবং একটি সুস্পষ্ট ক্লেইম মান উভয়ই নির্দিষ্ট করা থাকে, তবে সুস্পষ্ট মানটি ডিফল্ট হিসেবে গণ্য হবে এবং উল্লেখিত ফ্লো ভেরিয়েবলটি অমীমাংসিত থাকলে সেটিই ব্যবহৃত হবে।
- ধরণ - (ঐচ্ছিক) নিম্নলিখিতগুলির মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান, বা ম্যাপ
- অ্যারে - (ঐচ্ছিক) মানটি বিভিন্ন টাইপের একটি অ্যারে কিনা তা নির্দেশ করতে ' true' সেট করুন। ডিফল্ট: 'false'।
<সমালোচনামূলক শিরোনাম>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
JWT হেডারে ক্রিটিক্যাল হেডার, crit , যোগ করে। crit হেডারটি হলো হেডারের নামগুলোর একটি অ্যারে, যা JWT রিসিভারের কাছে পরিচিত এবং স্বীকৃত হতে হবে। উদাহরণস্বরূপ:
{
“typ: “...”,
“alg” : “...”,
“crit” : [ “a”, “b”, “c” ],
}রানটাইমে, VerifyJWT পলিসিটি crit হেডার পরীক্ষা করে। crit হেডারে তালিকাভুক্ত প্রতিটি আইটেমের জন্য, এটি যাচাই করে যে VerifyJWT পলিসির <KnownHeaders> এলিমেন্টেও সেই হেডারটি তালিকাভুক্ত আছে কিনা। crit- এ VerifyJWT পলিসি এমন কোনো হেডার খুঁজে পায় যা <KnownHeaders> এ তালিকাভুক্ত নয়, যার ফলে VerifyJWT পলিসিটি ব্যর্থ হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | কমা দ্বারা পৃথক করা স্ট্রিংগুলির অ্যারে |
| বৈধ মান | হয় একটি অ্যারে অথবা অ্যারেটি ধারণকারী কোনো ভেরিয়েবলের নাম। |
কাস্টম দাবি
দ্রষ্টব্য: বর্তমানে, আপনি যখন UI-এর মাধ্যমে একটি নতুন GenerateJWT পলিসি যোগ করেন, তখন একটি CustomClaims এলিমেন্ট যুক্ত হয়ে যায়। এই এলিমেন্টটি কার্যকরী নয় এবং এটি উপেক্ষা করা হয়। এর পরিবর্তে ব্যবহার করার জন্য সঠিক এলিমেন্টটি হলো <AdditionalClaims> । পরবর্তীতে সঠিক এলিমেন্টগুলো যুক্ত করার জন্য 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 তৈরি করে। যখন টেক্সট ভ্যালু এবং ref অ্যাট্রিবিউট উভয়ই খালি থাকে, তখন পলিসিটি একটি র্যান্ডম UUID সম্বলিত একটি jti তৈরি করবে। JWT ID (jti) ক্লেইমটি হলো JWT-এর জন্য একটি অনন্য শনাক্তকারী। jti সম্পর্কে আরও তথ্যের জন্য, RFC7519 দেখুন।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং, অথবা রেফারেন্স। |
| বৈধ মান | হয় একটি স্ট্রিং অথবা আইডি ধারণকারী একটি ফ্লো ভেরিয়েবলের নাম। |
<অমীমাংসিত ভেরিয়েবল উপেক্ষা করুন>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
যদি আপনি চান যে পলিসিতে উল্লেখিত কোনো রেফারেন্সকৃত ভেরিয়েবল সমাধানযোগ্য না হলে পলিসিটি একটি ত্রুটি (error) দেখাবে, তাহলে এটিকে false সেট করুন। যেকোনো সমাধানযোগ্য নয় এমন ভেরিয়েবলকে একটি খালি স্ট্রিং (null) হিসেবে গণ্য করতে এটিকে true সেট করুন।
| ডিফল্ট | মিথ্যা |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | বুলিয়ান |
| বৈধ মান | সত্য বা মিথ্যা |
<ইস্যুকারী>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
এই পলিসিটি 'iss' নামের একটি ক্লেইম সম্বলিত একটি JWT তৈরি করে, যার মান নির্দিষ্ট ভ্যালুতে সেট করা থাকে। এই ক্লেইমটি JWT-এর ইস্যুকারীকে শনাক্ত করে। এটি RFC7519- এ উল্লিখিত নিবন্ধিত ক্লেইমগুলোর একটি।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং, বা রেফারেন্স |
| বৈধ মান | যেকোনো |
<পূর্বে নয়>
<!-- 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>
টোকেনটি কখন থেকে বৈধ হবে তা নির্দিষ্ট করে। নির্দিষ্ট সময় পর্যন্ত টোকেনটি অবৈধ থাকে। আপনি একটি নির্দিষ্ট সময়, অথবা টোকেনটি তৈরি হওয়ার সাপেক্ষে একটি সময় নির্দিষ্ট করতে পারেন।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | নিচে দেখুন। |
পরম সময়ের মানের জন্য NotBefore এলিমেন্টের বৈধ সময়ের মান
| নাম | ফর্ম্যাট | উদাহরণ |
| সাজানো যায় | yyyy-MM-dd'T'HH:mm:ss.SSSZ | 2017-08-14T11:00:21.269-0700 |
| আরএফসি ১১২৩ | EEE, dd MMM yyyy HH:mm:ss zzz | সোমবার, ১৪ আগস্ট ২০১৭ ১১:০০:২১ পিডিটি |
| আরএফসি ৮৫০ | EEEE, dd-MMM-yy HH:mm:ss zzz | সোমবার, ১৪-আগস্ট-১৭ ১১:০০:২১ পিডিটি |
| ANCI-C | EEE MMM d HH:mm:ss yyyy | সোমবার, ১৪ আগস্ট, ২০১৭, ১১:০০:২১ |
আপেক্ষিক সময়ের মানের জন্য, একটি পূর্ণসংখ্যা এবং একটি সময়কাল উল্লেখ করুন, উদাহরণস্বরূপ:
- ১০ সেকেন্ড
- ৬০ মিটার
- ১২ ঘন্টা
<আউটপুট ভেরিয়েবল>
<OutputVariable>jwt-variable</OutputVariable>
এই পলিসি দ্বারা তৈরি JWT কোথায় রাখা হবে তা নির্দিষ্ট করে। ডিফল্টরূপে এটি jwt. POLICYNAME .generated_jwt
| ডিফল্ট | jwt. POLICYNAME .generated_jwt |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং (একটি ফ্লো ভেরিয়েবলের নাম) |
<প্রাইভেট কী/আইডি>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
JWT হেডারে অন্তর্ভুক্ত করার জন্য কী আইডি (kid) নির্দিষ্ট করে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল বা স্ট্রিং |
<প্রাইভেট কী/পাসওয়ার্ড>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
প্রয়োজনে, প্রাইভেট কী ডিক্রিপ্ট করার জন্য পলিসি যে পাসওয়ার্ডটি ব্যবহার করবে তা নির্দিষ্ট করুন। ফ্লো ভেরিয়েবলে কী-টি পাস করার জন্য ref অ্যাট্রিবিউট ব্যবহার করুন। এটি শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি প্রবাহ পরিবর্তনশীল রেফারেন্স। দ্রষ্টব্য: আপনাকে অবশ্যই একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে হবে। Edge এমন কোনো পলিসি কনফিগারেশনকে অবৈধ বলে প্রত্যাখ্যান করবে যেখানে পাসওয়ার্ডটি প্লেইনটেক্সটে (সাধারণ ভাষায়) উল্লেখ করা থাকে। ফ্লো ভেরিয়েবলটির শুরুতে অবশ্যই 'private' উপসর্গটি থাকতে হবে। উদাহরণস্বরূপ, |
<ব্যক্তিগত কী/মান>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
JWT-তে স্বাক্ষর করার জন্য ব্যবহৃত একটি PEM-এনকোডেড প্রাইভেট কী নির্দিষ্ট করে। ফ্লো ভেরিয়েবলে কী-টি পাস করার জন্য ref অ্যাট্রিবিউট ব্যবহার করুন। এটি শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | RS256 অ্যালগরিদম ব্যবহার করে একটি JWT তৈরি করার জন্য এটি প্রয়োজন। |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল, যা একটি PEM-এনকোডেড RSA প্রাইভেট কী-এর মানকে প্রতিনিধিত্বকারী একটি স্ট্রিং ধারণ করে। দ্রষ্টব্য: ফ্লো ভেরিয়েবলের শুরুতে অবশ্যই 'private' উপসর্গটি থাকতে হবে। উদাহরণস্বরূপ, |
<গোপন কী/আইডি>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
HMAC অ্যালগরিদম দ্বারা স্বাক্ষরিত কোনো JWT-এর হেডারে অন্তর্ভুক্ত করার জন্য কী আইডি (kid) নির্দিষ্ট করে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি HS256/HS384/HS512-এর মধ্যে একটি হয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল বা স্ট্রিং |
<গোপন কী/মান>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
HMAC অ্যালগরিদম ব্যবহার করে টোকেন যাচাই বা স্বাক্ষর করার জন্য ব্যবহৃত গোপন কী প্রদান করে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি HS256/HS384/HS512-এর মধ্যে একটি হয়। ফ্লো ভেরিয়েবলে কী-টি পাস করার জন্য ref অ্যাট্রিবিউট ব্যবহার করুন।
Edge, HS256/HS384/HS512 অ্যালগরিদমগুলোর জন্য একটি ন্যূনতম কী-স্ট্রেংথ বা কী-শক্তি বাধ্যতামূলক করেছে। HS256-এর জন্য ন্যূনতম কী-লেংথ হলো ৩২ বাইট, HS384-এর জন্য ৪৮ বাইট এবং HS512-এর জন্য ৬৪ বাইট। এর চেয়ে কম শক্তির কী ব্যবহার করলে রানটাইম এরর দেখা দেয়।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | HMAC অ্যালগরিদমের জন্য আবশ্যক। |
| প্রকার | স্ট্রিং |
| বৈধ মান | একটি ফ্লো ভেরিয়েবল যা একটি স্ট্রিংকে নির্দেশ করে দ্রষ্টব্য: যদি এটি একটি ফ্লো ভেরিয়েবল হয়, তবে এর আগে অবশ্যই 'private' উপসর্গটি থাকতে হবে। উদাহরণস্বরূপ, |
বিষয়
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
উদাহরণস্বরূপ:
<Subject ref="apigee.developer.email"/>
পলিসিটি একটি সাব- ক্লেম সম্বলিত একটি JWT তৈরি করে, যা নির্দিষ্ট মানে সেট করা থাকে। এই ক্লেমটি JWT-এর বিষয়বস্তুকে শনাক্ত করে বা সে সম্পর্কে একটি বিবৃতি দেয়। এটি RFC7519- এ উল্লিখিত স্ট্যান্ডার্ড ক্লেমগুলোর একটি।
| ডিফল্ট | প্রযোজ্য নয় |
| উপস্থিতি | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| বৈধ মান | যেকোনো মান যা কোনো বিষয়কে অনন্যভাবে শনাক্ত করে অথবা এমন কোনো ফ্লো ভেরিয়েবল যা কোনো মানকে নির্দেশ করে। |
প্রবাহ পরিবর্তনশীল
Generate JWT পলিসিটি ফ্লো ভেরিয়েবল সেট করে না।
ত্রুটির রেফারেন্স
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | 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>