SAMLAssertion নীতি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

কী

  • ইনবাউন্ড যাচাইকরণ ও অনুমোদন: SAML অ্যাসারশন যাচাই করুন নীতি
    SAML নীতি হল এমন একটি ধরন যা API প্রক্সিগুলিকে ইনবাউন্ড SOAP অনুরোধের সাথে অ্যাটাচ করা SAML অ্যাসারশন যাচাই করতে দেয়। SAML নীতি, ডিজিটাল সই করা SAML অ্যাসার্শন সহ ইনকামিং মেসেজ যাচাই করে, সেগুলি ভুল হলে বাতিল করে দেয় এবং এমন ভেরিয়েবল সেট করে যা অতিরিক্ত নীতি বা ব্যাকএন্ড পরিষেবাকে অ্যাসার্শনের তথ্য আরও যাচাই করতে দেয়।
  • আউটবাউন্ড টোকেন জেনারেশন: SAML অ্যাসার্শন নীতি তৈরি করুন
    SAML নীতি API প্রক্সিগুলিকে আউটবাউন্ড XML অনুরোধের সাথে SAML অ্যাসার্শন অ্যাটাচ করার সুবিধা দেয়। তারপর, সেইসব অ্যাসার্শন ব্যাকএন্ড পরিষেবাগুলিকে আরও নিরাপত্তা প্রসেসিং প্রয়োগ করার জন্য উপলভ্য হয়, যা যাচাইকরণ ও অনুমোদন সংক্রান্ত প্রসেসিং।

নমুনা

SAML অ্যাসার্শন তৈরি করা

<GenerateSAMLAssertion name="SAML" ignoreContentType="false">
  <CanonicalizationAlgorithm />
  <Issuer ref="reference">Issuer name</Issuer>
  <KeyStore>
    <Name ref="reference">keystorename</Name>
    <Alias ref="reference">alias</Alias>
  </KeyStore>
  <OutputVariable>
    <FlowVariable>assertion.content</FlowVariable>
    <Message name="request">
      <Namespaces>
        <Namespace prefix="test">http://www.example.com/test</Namespace>
      </Namespaces>
      <XPath>/envelope/header</XPath>
    </Message>
  </OutputVariable>
  <SignatureAlgorithm />
  <Subject ref="reference">Subject name</Subject>
  <Template ignoreUnresolvedVariables="false">
    <!-- A lot of XML goes here, in CDATA, with {} around
         each variable -->
  </Template>
</GenerateSAMLAssertion>

SAML অ্যাসার্শন তৈরি করা

SAML অ্যাসার্শন যাচাই করা

<ValidateSAMLAssertion name="SAML" ignoreContentType="false">
  <Source name="request">
    <Namespaces>
      <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace>
      <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace>
      <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace>
    </Namespaces>
    <AssertionXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</AssertionXPath>
    <SignedElementXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</SignedElementXPath>
  </Source>
  <TrustStore>TrustStoreName</TrustStore>
  <RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

SAML অ্যাসার্শন যাচাই করা


এলিমেন্ট রেফারেন্স

SAML অ্যাসার্শন তৈরি করা

ফিল্ডের নাম বিবরণ
nameটি অ্যাট্রিবিউট নীতি ইনস্ট্যান্সের নাম। সংস্থায় নাম অনন্য হতে হবে। নামে ব্যবহার করা যাবে এমন অক্ষরগুলি হল: A-Z0-9._\-$ %। তবে, ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ প্রয়োগ করে, যেমন অটোমেটিক এমন অক্ষর সরিয়ে দেয় যা আলফানিউমেরিক নয়।
ignoreContentTypeটি অ্যাট্রিবিউট true বা false হিসেবে সেট করা যায় এমন একটি বুলিয়ান। ডিফল্ট হিসেবে, মেসেজের কন্টেন্ট টাইপ XML Content-Type না হলে, অ্যাসারশন জেনারেট করা হবে না। এটি true হিসেবে সেট করা থাকলে, Content-type যাই হোক না কেন, মেসেজটিকে XML হিসেবে বিবেচনা করা হবে।
Issuer
আইডেন্টিটি প্রোভাইডারের অনন্য শনাক্তকারী। ঐচ্ছিক ref অ্যাট্রিবিউট উপস্থিত থাকলে, নির্দিষ্ট ভেরিয়েবেলের উপর ভিত্তি করে রানটাইমে ইস্যুকারীর ভ্যালু অ্যাসাইন করা হবে। ঐচ্ছিক ref অ্যাট্রিবিউট না থাকলে, ইস্যুকারীর ভ্যালু ব্যবহার করা হবে।
KeyStore
প্রাইভেট কী ও প্রাইভেট কীয়ের ছদ্মনাম যে KeyStore-এ থাকে, সেটি ডিজিটাল স্বাক্ষর করার জন্য SAML অ্যাসারশনে ব্যবহার করা হয়।
OutputVariable
FlowVariable
Message নীতির লক্ষ্য। সঠিক মান হল message, request, এবং response। message হিসেবে সেট করা থাকলে, নীতিটি শর্তসাপেক্ষে নীতির অ্যাটাচমেন্ট পয়েন্টের উপর ভিত্তি করে মেসেজ অবজেক্ট পুনরুদ্ধার করে। অনুরোধ ফ্লোতে অ্যাটাচ করা হলে, নীতিটি message অনুরোধের জন্য সমাধান করে এবং উত্তর ফ্লোতে অ্যাটাচ করা হলে, নীতিটি message উত্তরের জন্য সমাধান করে।
XPath আউটবাউন্ড XML ডকুমেন্টের সেই এলিমেন্টকে নির্দেশ করে এমন XPath এক্সপ্রেশন, যেখানে নীতিটি SAML অ্যাসার্শন অ্যাটাচ করবে।
SignatureAlgorithm SHA1 বা SHA256
Subject
SAML অ্যাসারশনের বিষয়ের অনন্য শনাক্তকারী। ঐচ্ছিক ref অ্যাট্রিবিউট উপস্থিত থাকলে, নির্দিষ্ট ভেরিয়েবেলের উপর ভিত্তি করে রানটাইমে Subject-এর ভ্যালু অ্যাসাইন করা হবে। ঐচ্ছিক ref অ্যাট্রিবিউট উপস্থিত থাকলে, Subject-এর ভ্যালু ব্যবহার করা হবে।
Template
উপস্থিত থাকলে, এই টেমপ্লেটটি চালিয়ে অ্যাসার্শন তৈরি করা হবে, এর মধ্যে {} দিয়ে চিহ্নিত করা সবকিছু সংশ্লিষ্ট ভেরিয়েবল দিয়ে পরিবর্তন করা হবে এবং তারপরে ফলাফল ডিজিটাল সিগনেচার করা হবে। AssignMessage নীতি সংক্রান্ত নিয়ম মেনে টেমপ্লেট প্রসেস করা হয়। অ্যাসাইন মেসেজ নীতি দেখুন। হলে তবেই মেসেজ টেমপ্লেটিং কাজ করে।

SAML অ্যাসার্শন যাচাই করা

ফিল্ডের নাম বিবরণ
nameটি অ্যাট্রিবিউট
নীতি ইনস্ট্যান্সের নাম। সংস্থায় নাম অনন্য হতে হবে। নামে ব্যবহার করা যাবে এমন অক্ষরগুলি হল: A-Z0-9._\-$ %। তবে, ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন অটোমেটিক অ্যালফানিউমেরিক নয় এমন অক্ষর সরিয়ে দেয়।
ignoreContentTypeটি অ্যাট্রিবিউট true বা false হিসেবে সেট করা যায় এমন একটি বুলিয়ান। ডিফল্ট হিসেবে, মেসেজের কন্টেন্ট টাইপ XML Content-Type না হলে, অ্যাসারশন জেনারেট করা হবে না। এটি true হিসেবে সেট করা থাকলে, কন্টেন্ট-টাইপ যাই হোক না কেন, মেসেজটিকে XML হিসেবে বিবেচনা করা হবে।
Source নীতির লক্ষ্য। সঠিক মান হল message, request, এবং response। message হিসেবে সেট করা থাকলে, নীতিটি শর্তসাপেক্ষে নীতির অ্যাটাচমেন্ট পয়েন্টের উপর ভিত্তি করে মেসেজ অবজেক্ট পুনরুদ্ধার করে। অনুরোধ ফ্লোতে অ্যাটাচ করা হলে, নীতিটি message অনুরোধের জন্য সমাধান করে এবং উত্তর ফ্লোতে অ্যাটাচ করা হলে, নীতিটি message উত্তরের জন্য সমাধান করে।
XPath
বন্ধ করে দেওয়া হয়েছে। Source-এর সন্তান। AssertionXPath ও SignedElementXPath ব্যবহার করুন।
AssertionXPath
Source-এর সন্তান। XPath এক্সপ্রেশন যা ইনবাউন্ড XML ডকুমেন্টের সেই এলিমেন্টকে নির্দেশ করে যেখান থেকে নীতি SAML অ্যাসারশন এক্সট্র্যাক্ট করতে পারে।
SignedElementXPath
Source-এর সন্তান। ইনবাউন্ড XML ডকুমেন্টের সেই এলিমেন্টকে নির্দেশ করে এমন XPath এক্সপ্রেশন যেখান থেকে নীতিটি স্বাক্ষরিত এলিমেন্ট এক্সট্র্যাক্ট করতে পারে। এটি AssertionXPath-এর XPath-এর মতো বা আলাদা হতে পারে।
TrustStore
TrustStore-এর নাম যাতে SAML অ্যাসারশনে ডিজিটাল স্বাক্ষর যাচাই করতে ব্যবহৃত বিশ্বস্ত X.509 সার্টিফিকেট থাকে।
RemoveAssertion
true বা false হিসেবে সেট করা যায় এমন একটি বুলিয়ান। যখন true, তখন ব্যাকএন্ড পরিষেবায় মেসেজ ফরওয়ার্ড করার আগে অনুরোধ মেসেজ থেকে SAML অ্যাসার্শন সরিয়ে দেওয়া হবে।

ব্যবহার সংক্রান্ত নোট

Security Assertion Markup Language (SAML) স্পেসিফিকেশন এমন ফর্ম্যাট ও প্রোটোকল নির্ধারণ করে যা অ্যাপ্লিকেশনকে যাচাইকরণ ও অনুমোদনের জন্য XML-ফর্ম্যাট করা তথ্য আদান-প্রদান করতে সক্ষম করে।

"নিরাপত্তা সংক্রান্ত দাবি" হল একটি বিশ্বস্ত টোকেন যা কোনও অ্যাপ, অ্যাপ ব্যবহারকারী বা ট্রানজ্যাকশনে অংশগ্রহণকারী অন্য কোনও সত্তার অ্যাট্রিবিউট বর্ণনা করে। নিরাপত্তা সংক্রান্ত অ্যাসারশন দু'ধরনের এন্টিটি ম্যানেজ ও ব্যবহার করে:

  • পরিচয় প্রদানকারী: অংশগ্রহণকারীদের হয়ে নিরাপত্তা সংক্রান্ত অ্যাসার্শন তৈরি করে
  • পরিষেবা প্রদানকারী: পরিচয় প্রদানকারীর সাথে বিশ্বস্ত সম্পর্কের মাধ্যমে নিরাপত্তা সংক্রান্ত দাবি যাচাই করা

API প্ল্যাটফর্ম আইডেন্টিটি প্রোভাইডার ও পরিষেবা প্রদানকারী হিসেবে কাজ করতে পারে। এটি দাবি তৈরি করে এবং অনুরোধ মেসেজের সাথে তা অ্যাটাচ করে পরিচয় প্রদানকারী হিসেবে কাজ করে, এর ফলে ব্যাকএন্ড পরিষেবা সেইসব দাবি প্রসেস করতে পারে। ইনবাউন্ড অনুরোধ মেসেজে অ্যাসার্শন যাচাই করে এটি পরিষেবা প্রদানকারী হিসেবে কাজ করে।

SAML নীতিতে SAML অ্যাসারশন কাজ করে যা SAML Core স্পেসিফিকেশন ও WS-Security SAML টোকেন প্রোফাইল স্পেসিফিকেশনের ভার্সন ২.০ ও ১.০-এর সাথে ম্যাচ করে।

SAML অ্যাসার্শন তৈরি করা

নীতি প্রসেসিং:

  1. মেসেজটি XML না হলে এবং IgnoreContentType true হিসেবে সেট করা না থাকলে, একটি ফল্ট তৈরি করুন।
  2. "টেমপ্লেট" সেট করা থাকলে, AssignMessage নীতির জন্য বর্ণিত পদ্ধতি অনুযায়ী টেমপ্লেট প্রসেস করুন। কোনও ভেরিয়েবেল অনুপস্থিত থাকলে এবং IgnoreUnresolvedVariables সেট করা না থাকলে, একটি ফল্ট তৈরি করুন।
  3. "টেমপ্লেট" সেট করা না থাকলে, এমন একটি অ্যাসার্শন তৈরি করুন যাতে সাবজেক্ট এবং ইস্যুকারী প্যারামিটার বা তাদের রেফারেন্সের মান অন্তর্ভুক্ত থাকে।
  4. উল্লেখ করা কী ব্যবহার করে অ্যাসারশনে সাইন করুন।
  5. নির্দিষ্ট XPath-এ মেসেজে অ্যাসার্শন যোগ করুন।

SAML অ্যাসার্শন যাচাই করা

নীতি প্রসেসিং:

  1. নীতিটি ইনবাউন্ড মেসেজ চেক করে দেখে যে অনুরোধের মিডিয়া ধরন XML কিনা, এটি কন্টেন্টের ধরন text/(.*+)?xml ফর্ম্যাটের সাথে মিলছে কিনা তা চেক করে অথবা application/(.*+)?xml। মিডিয়ার ধরন XML না হলে এবং <IgnoreContentType> সেট করা না থাকলে, নীতিটি একটি সমস্যা তৈরি করবে।
  2. নীতিটি XML পার্স করবে। পার্সিং করা না গেলে, এটি একটি ফল্ট তৈরি করবে।
  3. নীতিটি সংশ্লিষ্ট XPath নির্দিষ্ট (<SignedElementXPath> এবং <AssertionXPath>) ব্যবহার করে স্বাক্ষরিত এলিমেন্ট এবং অ্যাসারশন এক্সট্র্যাক্ট করবে। এইসব পাথের মধ্যে কোনওটি এলিমেন্ট রিটার্ন না করলে, নীতিটি একটি ফল্ট তৈরি করবে।
  4. নীতি যাচাই করে দেখবে যে অ্যাসারশনটি স্বাক্ষর করা এলিমেন্টের সমান অথবা সেটি স্বাক্ষর করা এলিমেন্টের চাইল্ড। এটি সত্যি না হলে, নীতিটি একটি ত্রুটি দেখাবে।
  5. অ্যাসারশনে <NotBefore> বা <NotOnOrAfter> উপাদানগুলির মধ্যে যেকোনও একটি উপস্থিত থাকলে, SAML Core বিভাগের 2.5.1-এ বর্ণিত অনুযায়ী, নীতিটি এইসব ভ্যালুর সাথে বর্তমান টাইমস্ট্যাম্প চেক করবে।
  6. SAML Core-এর ২.৫.১.১ বিভাগে বর্ণিত "কন্ডিশন" প্রসেস করার জন্য নীতিটি যেকোনও অতিরিক্ত নিয়ম প্রয়োগ করবে।
  7. নীতিটি উপরে বর্ণিত (<TrustStore>) বিশ্বস্ত স্টোরের মান ব্যবহার করে XML ডিজিটাল স্বাক্ষর যাচাই করে। যাচাইকরণ করা না গেলে, নীতি একটি ফল্ট তৈরি করে।

নীতিতে কোনও সমস্যা না হলে, প্রক্সি ডেভেলপারের নিম্নলিখিত বিষয়গুলি সম্পর্কে নিশ্চিত হওয়া উচিত:

  • অ্যাসারশনের ডিজিটাল স্বাক্ষরটি সঠিক এবং কোনও বিশ্বাসযোগ্য CA দ্বারা স্বাক্ষরিত
  • অ্যাসারশন বর্তমান সময়সীমার জন্য বৈধ
  • দাবিটির সাবজেক্ট ও ইস্যুকারীকে এক্সট্র্যাক্ট করে ফ্লো ভেরিয়েবলে সেট করা হবে। অতিরিক্ত যাচাইকরণের জন্য এইসব ভ্যালু ব্যবহার করার দায়িত্ব অন্যান্য নীতির, যেমন সাবজেক্টের নাম বৈধ কিনা তা চেক করা অথবা যাচাইকরণের জন্য টার্গেট সিস্টেমে পাঠানো।

আরও জটিল যাচাইকরণের জন্য, ExtractVariables-এর মতো অন্যান্য নীতি অ্যাসারশনের কাঁচা XML পার্স করতে ব্যবহার করা হতে পারে ।


ফ্লো ভেরিয়েবল

SAML অ্যাসারশনে উল্লেখ করা যেতে পারে এমন অনেক তথ্য আছে। SAML অ্যাসারশনটি নিজেই XML যা ExtractVariables নীতি এবং অন্যান্য মেকানিজম ব্যবহার করে পার্স করা যেতে পারে যাতে আরও জটিল যাচাইকরণ প্রয়োগ করা যায়।

ভেরিয়েবেল বিবরণ
saml.id SAML অ্যাসারশন আইডি
saml.issuer অ্যাসারশনের "ইস্যুকারী", এর নেটিভ XML ধরন থেকে স্ট্রিংয়ে কনভার্ট করা হয়েছে
saml.subject অ্যাসারশনের "সাবজেক্ট", এর নেটিভ XML ধরন থেকে স্ট্রিংয়ে কনভার্ট করা হয়েছে
saml.valid বৈধতা চেকের ফলাফলের উপর ভিত্তি করে সত্য বা মিথ্যা রিটার্ন করে
saml.issueInstant IssueInstant
saml.subjectFormat বিষয় ফর্ম্যাট
saml.scmethod বিষয় কনফার্ম করার পদ্ধতি
saml.scdaddress বিষয় কনফার্মেশন ডেটা ঠিকানা
saml.scdinresponse উত্তরে বিষয় কনফার্মেশন ডেটা
saml.scdrcpt বিষয় কনফার্ম করা ডেটা প্রাপক
saml.authnSnooa AuthnStatement SessionNotOnOrAfter
saml.authnContextClassRef AuthnStatement AuthnContextClassRef
saml.authnInstant AuthnStatement AuthInstant
saml.authnSessionIndex AuthnStatement সেশন ইন্ডেক্স

সমস্যার রেফারেন্স

এই বিভাগে, এই নীতি কোনও সমস্যার ট্রিগার করলে Edge-এর দ্বারা সেট করা ফল্ট কোড, সমস্যার মেসেজ এবং ফল্ট ভেরিয়েবল সম্পর্কে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

সমস্যার নাম কারণ এর সমাধান করুন
SourceNotConfigured Validate SAML Assertion নীতির নিম্নলিখিত এক বা একাধিক এলিমেন্ট সংজ্ঞায়িত করা নেই বা খালি আছে: <Source>, <XPath>, <Namespaces>, <Namespace>.
TrustStoreNotConfigured <TrustStore> এলিমেন্ট খালি থাকলে অথবা ValidateSAMLAssertion নীতিতে উল্লেখ করা না থাকলে, API প্রক্সি ডেপ্লয় করা যায় না। সঠিক Trust Store থাকতে হবে।
NullKeyStoreAlias Generate SAML Assertion নীতির <Keystore> এলিমেন্টে চাইল্ড এলিমেন্ট <Alias> খালি থাকলে বা উল্লেখ করা না থাকলে, API প্রক্সি ডেপ্লয় করা যায় না। সঠিক Keystore alias প্রয়োজন।
NullKeyStore GenerateSAMLAssertion নীতির <Keystore> এলিমেন্টে চাইল্ড এলিমেন্ট <Name> খালি থাকলে বা উল্লেখ করা না থাকলে, API প্রক্সি ডেপ্লয় করা যায় না। সঠিক Keystore-এর নাম প্রয়োজন।
NullIssuer Generate SAML Assertion নীতিতে <Issuer> এলিমেন্ট খালি থাকলে বা উল্লেখ করা না থাকলে, API প্রক্সি ডেপ্লয় করা যায় না। A সঠিক <Issuer> ভ্যালু প্রয়োজন।

ফল্ট ভেরিয়েবল

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

ভেরিয়েবল কোথায় উদাহরণ
fault.name="fault_name" fault_name হল সমস্যার নাম। ফল্ট কোডের শেষ অংশটি হল ফল্টের নাম। fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed সঠিক SAML অ্যাসারশন নীতি কনফিগারেশনের জন্য, সমস্যার উপসর্গ হল ValidateSAMLAssertion। GenerateSAMLAssertion.failed = true

সমস্যার উত্তরের উদাহরণ

{
  "fault": {
    "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type",
    "detail": {
      "errorcode": "steps.saml.generate.InvalidMediaTpe"
    }
  }
}

ভুল নিয়মের উদাহরণ

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

সম্পর্কিত বিষয়

ভেরিয়েবল এক্সট্র্যাক্ট করা: ভেরিয়েবল এক্সট্র্যাক্ট করুন নীতি