আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
হ্যাশ-ভিত্তিক বার্তা প্রমাণীকরণ কোড (HMAC) গণনা করে এবং যাচাই করে। কখনও কখনও কীড মেসেজ অথেন্টিকেশন কোড বা কীড হ্যাশ নামে পরিচিত, HMAC একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন ব্যবহার করে যেমন SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 বা MD-5, একটি "বার্তা"-তে প্রয়োগ করা হয় একটি গোপন কী দিয়ে, সেই বার্তায় একটি স্বাক্ষর বা বার্তা প্রমাণীকরণ কোড তৈরি করতে। এখানে "বার্তা" শব্দটি বাইটের যেকোনো স্ট্রিমকে বোঝায়। একটি বার্তা প্রেরক একটি রিসিভারকে একটি HMAC পাঠাতে পারে এবং প্রাপক বার্তাটি প্রমাণীকরণের জন্য HMAC ব্যবহার করতে পারে।
HMAC সম্পর্কে আরও জানতে, HMAC দেখুন: বার্তা প্রমাণীকরণের জন্য কীড-হ্যাশিং (rfc2104) ।
নমুনা
HMAC তৈরি করুন
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
HMAC যাচাই করুন
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- VerificationValue is optional. Include it to perform an HMAC check. --> <VerificationValue encoding='base16' ref='expected_hmac_value'/> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
একটি স্বাক্ষরের গণনা এবং সেই স্বাক্ষরের যাচাইকরণ ঠিক একই প্রক্রিয়া অনুসরণ করে। HMAC নীতি একটি HMAC গণনা করে, এবং ঐচ্ছিকভাবে একটি প্রত্যাশিত মানের বিপরীতে গণনাকৃত স্বাক্ষর যাচাই করতে পারে। ঐচ্ছিক ভেরিফিকেশন ভ্যালু এলিমেন্ট (যদি উপস্থিত থাকে) একটি পরিচিত বা প্রদত্ত মানের বিপরীতে গণনা করা মান পরীক্ষা করার জন্য নীতিকে নির্দেশ করে।
HMAC এর জন্য এলিমেন্ট রেফারেন্স
পলিসি রেফারেন্স HMAC নীতির উপাদান এবং গুণাবলী বর্ণনা করে।
উচ্চ-স্তরের উপাদানে প্রযোজ্য বৈশিষ্ট্য
<HMAC name="HMAC" continueOnError="false" enabled="true" async="false">
নিম্নলিখিত বৈশিষ্ট্যগুলি সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ৷
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
---|---|---|---|
নাম | নীতির অভ্যন্তরীণ নাম। আপনি নামের মধ্যে যে অক্ষরগুলি ব্যবহার করতে পারেন তাতে সীমাবদ্ধ: A-Z0-9._\-$ % । যাইহোক, Apigee UI অতিরিক্ত বিধিনিষেধ প্রয়োগ করে, যেমন স্বয়ংক্রিয়ভাবে অক্ষরগুলিকে অপসারণ করা যা আলফানিউমেরিক নয়। ঐচ্ছিকভাবে, Apigee UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষার নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ। একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
সক্রিয় | নীতি প্রয়োগ করতে true সেট করুন৷ নীতি "বন্ধ" করতে | সত্য | ঐচ্ছিক |
অ্যাসিঙ্ক | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<অ্যালগরিদম>
<Algorithm>algorithm-name</Algorithm>
HMAC গণনা করার জন্য হ্যাশ অ্যালগরিদম নির্দিষ্ট করে।
ডিফল্ট | N/A |
উপস্থিতি | প্রয়োজন |
টাইপ | স্ট্রিং |
বৈধ মান | SHA-1 , SHA-224 , SHA-256 , SHA-384 , SHA-512 , এবং MD-5 পলিসি কনফিগারেশন অ্যালগরিদম নামগুলিকে আলাদা আলাদা কেস ছাড়াই এবং অক্ষর এবং সংখ্যার মধ্যে ড্যাশ সহ বা ছাড়াই গ্রহণ করে। উদাহরণস্বরূপ, |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Apigee UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে নামের বৈশিষ্ট্য ছাড়াও ব্যবহার করুন৷
ডিফল্ট | আপনি এই উপাদানটি বাদ দিলে, নীতির নামের বৈশিষ্ট্যের মান ব্যবহার করা হবে। |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
<বার্তা>
<Message>message_template_here</Message> or <Message ref='variable_here'/>
স্বাক্ষর করার জন্য বার্তা পেলোড নির্দিষ্ট করে। এই উপাদানটির ইনপুট বার্তা টেমপ্লেট (ভেরিয়েবল প্রতিস্থাপন) সমর্থন করে যাতে রানটাইমে অতিরিক্ত আইটেম অন্তর্ভুক্ত করা যায়, যেমন টাইমস্ট্যাম্প, ননসেস, হেডারের তালিকা বা অন্যান্য তথ্য। যেমন:
<Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message>
বার্তা টেমপ্লেটটি নতুন লাইন এবং স্ট্যাটিক ফাংশন সহ স্থির এবং পরিবর্তনশীল অংশগুলি অন্তর্ভুক্ত করতে পারে। হোয়াইটস্পেস উল্লেখযোগ্য।
ডিফল্ট | N/A |
উপস্থিতি | প্রয়োজন |
টাইপ | স্ট্রিং |
বৈধ মান | যেকোনো স্ট্রিং টেক্সট মানের জন্য বৈধ। আপনি যদি একটি ref অ্যাট্রিবিউট প্রদান করেন তবে এটি পাঠ্য মানের চেয়ে অগ্রাধিকার পাবে। নীতিটি হয় পাঠ্য মান বা একটি বার্তা টেমপ্লেট হিসাবে উল্লেখিত পরিবর্তনশীলকে মূল্যায়ন করে। |
<আউটপুট>
<Output encoding='encoding_name'>variable_name</Output>
কম্পিউটেড HMAC মানের সাথে পলিসি সেট করা উচিত এমন ভেরিয়েবলের নাম নির্দিষ্ট করে। আউটপুটের জন্য ব্যবহার করার জন্য এনকোডিংও নির্দিষ্ট করে।
ডিফল্ট | ডিফল্ট আউটপুট ভেরিয়েবল হল |
উপস্থিতি | ঐচ্ছিক। এই উপাদানটি উপস্থিত না থাকলে, নীতিটি একটি base64-এনকোডেড মান সহ ফ্লো ভেরিয়েবল hmac.POLICYNAME.output সেট করে। |
টাইপ | স্ট্রিং |
বৈধ মান | এনকোডিংয়ের জন্য, মানগুলি কেস সংবেদনশীল; |
<সিক্রেটকি>
<SecretKey encoding='encoding_name' ref='private.secretkey'/>
HMAC গণনা করতে ব্যবহৃত গোপন কী নির্দিষ্ট করে। রেফারেন্স ভেরিয়েবল থেকে কী প্রাপ্ত হয়, নির্দিষ্ট এনকোডিং অনুযায়ী ডিকোড করা হয়।
ডিফল্ট | উল্লেখিত ভেরিয়েবলের জন্য কোনো ডিফল্ট মান নেই; একটি |
উপস্থিতি | প্রয়োজন |
টাইপ | স্ট্রিং |
বৈধ মান | একটি এনকোডিং বৈশিষ্ট্য ব্যবহার করে আপনি একটি কী নির্দিষ্ট করতে পারবেন যাতে UTF-8 মুদ্রণযোগ্য অক্ষরের সীমার বাইরে বাইট অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, ধরুন নীতি কনফিগারেশনে এটি অন্তর্ভুক্ত রয়েছে: <SecretKey encoding='hex' ref='private.encodedsecretkey'/> এবং ধরুন এই ক্ষেত্রে, কী বাইটগুলি এইভাবে ডিকোড করা হবে: [53 65 63 72 65 74 31 32 33] (প্রতিটি বাইট হেক্সে উপস্থাপন করা হয়)। অন্য একটি উদাহরণ হিসাবে, যদি |
<যাচাই মান>
<VerificationValue encoding='encoding_name' ref='variable_name'/> or <VerificationValue encoding='encoding_name'>string_value</VerificationValue>
(ঐচ্ছিক) যাচাইকরণের মান উল্লেখ করে, সেইসাথে এনকোডিং অ্যালগরিদম যা যাচাইকরণের মান এনকোড করতে ব্যবহৃত হয়েছিল। নীতিটি মান ডিকোড করতে এই অ্যালগরিদম ব্যবহার করবে।
ডিফল্ট | কোনো ডিফল্ট যাচাইকরণ মান নেই। যদি উপাদান উপস্থিত থাকে কিন্তু encoding বৈশিষ্ট্য অনুপস্থিত থাকে, নীতিটি base64 এর একটি ডিফল্ট এনকোডিং ব্যবহার করে |
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
বৈধ মান | এনকোডিং অ্যাট্রিবিউটের জন্য বৈধ মানগুলি হল: |
<অমীমাংসিত ভেরিয়েবলগুলিকে উপেক্ষা করুন>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
পলিসিতে উল্লেখ করা যেকোন রেফারেন্স ভেরিয়েবল অমীমাংসিত হলে আপনি যদি নীতিটি একটি ত্রুটি ছুঁড়তে চান তাহলে false
সেট করুন৷ কোনো অমীমাংসিত ভেরিয়েবলকে খালি স্ট্রিং (নাল) হিসাবে বিবেচনা করার জন্য true
সেট করুন।
IgnoreUnresolvedVariables বুলিয়ান শুধুমাত্র বার্তা টেমপ্লেট দ্বারা উল্লেখ করা ভেরিয়েবলগুলিকে প্রভাবিত করে। যদিও SecretKey
এবং VerificationValue
একটি ভেরিয়েবলকে উল্লেখ করতে পারে, সেগুলির উভয়কেই সমাধানযোগ্য হতে হবে, তাই ignore
সেটিং তাদের ক্ষেত্রে প্রযোজ্য নয়।
ডিফল্ট | মিথ্যা |
উপস্থিতি | ঐচ্ছিক |
টাইপ | বুলিয়ান |
বৈধ মান | সত্য বা মিথ্যা |
ফ্লো ভেরিয়েবল
নীতি কার্যকর করার সময় এই ভেরিয়েবল সেট করতে পারে।
পরিবর্তনশীল | বর্ণনা | উদাহরণ |
---|---|---|
hmac. policy_name .message | নীতিটি কার্যকরী বার্তার সাথে এই পরিবর্তনশীলকে সেট করে, Message উপাদানে নির্দিষ্ট বার্তা টেমপ্লেট মূল্যায়নের ফলাফল। | hmac.HMAC-Policy.message = "Hello, World" |
hmac. policy_name .output | HMAC গণনার ফলাফল পায়, যখন Output উপাদান একটি পরিবর্তনশীল নাম নির্দিষ্ট করে না। | hmac.HMAC-Policy.output = /yyRjydfP+fBHTwXFgc5AZhLAg2kwCri+e35girrGw4= |
hmac. policy_name .outputencoding | আউটপুট এনকোডিং এর নাম পায়। | hmac.HMAC-Policy.outputencoding = base64 |
ত্রুটি উল্লেখ
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি Apigee দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
ফল্ট কোড | HTTP স্থিতি | যখন ঘটে |
---|---|---|
steps.hmac.UnresolvedVariable | 401 | এই ত্রুটিটি ঘটে যদি HMAC নীতিতে নির্দিষ্ট একটি পরিবর্তনশীল হয়:
|
steps.hmac.HmacVerificationFailed | 401 | HMAC যাচাইকরণ ব্যর্থ হয়েছে; প্রদত্ত যাচাইকরণ মান গণনাকৃত মানের সাথে মেলে না। |
steps.hmac.HmacCalculationFailed | 401 | নীতি HMAC গণনা করতে অক্ষম ছিল. |
steps.hmac.EmptySecretKey | 401 | গোপন কী ভেরিয়েবলের মান খালি। |
steps.hmac.EmptyVerificationValue | 401 | যাচাইকরণ মান ধরে রাখা ভেরিয়েবলটি খালি। |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
ত্রুটির নাম | HTTP স্থিতি | যখন ঘটে |
---|---|---|
steps.hmac.MissingConfigurationElement | 401 | এই ত্রুটিটি ঘটে যখন একটি প্রয়োজনীয় উপাদান বা বৈশিষ্ট্য অনুপস্থিত থাকে। |
steps.hmac.InvalidValueForElement | 401 | এই ত্রুটিটি ঘটে যদি অ্যালগরিদম উপাদানে উল্লিখিত মান নিম্নলিখিত মানগুলির মধ্যে একটি না হয়: SHA-1 , SHA-224 , SHA-256 , SHA-512 , বা MD-5 ৷ |
steps.hmac.InvalidSecretInConfig | 401 | SecretKey এর জন্য স্পষ্টভাবে একটি পাঠ্য মান দেওয়া থাকলে এই ত্রুটিটি ঘটে। |
steps.hmac.InvalidVariableName | 401 | এই ত্রুটিটি ঘটবে যদি SecretKey ভেরিয়েবলে private উপসর্গ ( private. ) না থাকে। |
ফল্ট ভেরিয়েবল
রানটাইম ত্রুটি ঘটলে এই ভেরিয়েবলগুলি সেট করা হয়। আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।
ভেরিয়েবল | যেখানে | উদাহরণ |
---|---|---|
fault.name=" fault_name " | fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। | fault.name Matches "UnresolvedVariable" |
hmac. policy_name .failed | নীতি ব্যর্থতার ক্ষেত্রে এই পরিবর্তনশীল সেট করে। | hmac.HMAC-Policy.failed = true |
উদাহরণ ত্রুটি প্রতিক্রিয়া
ত্রুটি পরিচালনার জন্য, সর্বোত্তম অনুশীলন হল ত্রুটি প্রতিক্রিয়ার errorcode
অংশটি আটকে রাখা। faultstring
-এ লেখার উপর নির্ভর করবেন না, কারণ এটি পরিবর্তন হতে পারে।
উদাহরণ দোষ নিয়ম
<FaultRules> <FaultRule name="HMAC Policy Errors"> <Step> <Name>AM-Unauthorized</Name> <Condition>(fault.name Matches "HmacVerificationFailed")</Condition> </Step> <Condition>hmac.HMAC-1.failed = true</Condition> </FaultRule> </FaultRules>