SAMLA প্রত্যয়ন নীতি

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

কি

  • অন্তর্মুখী প্রমাণীকরণ এবং অনুমোদন: SAML দাবী নীতি যাচাই করুন
    SAML নীতির ধরন API প্রক্সিগুলিকে SAML দাবী যাচাই করতে সক্ষম করে যা অন্তর্মুখী SOAP অনুরোধের সাথে সংযুক্ত থাকে। 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 বিষয়বস্তুর প্রকার না হলে দাবীটি তৈরি করা হবে না। যদি এটি true সেট করা হয়, তাহলে বিষয়বস্তুর প্রকার নির্বিশেষে বার্তাটিকে XML হিসাবে গণ্য করা হবে৷
Issuer
পরিচয় প্রদানকারীর অনন্য শনাক্তকারী। যদি ঐচ্ছিক ref অ্যাট্রিবিউটটি উপস্থিত থাকে, তাহলে নির্দিষ্ট ভেরিয়েবলের উপর ভিত্তি করে রানটাইমে ইস্যুয়ারের মান নির্ধারণ করা হবে। যদি ঐচ্ছিক ref অ্যাট্রিবিউটটি উপস্থিত না থাকে, তাহলে Issuer-এর মান ব্যবহার করা হবে।
KeyStore
কীস্টোরের নাম যাতে প্রাইভেট কী এবং প্রাইভেট কী-এর উপনাম SAML দাবীতে ডিজিটালি স্বাক্ষর করতে ব্যবহৃত হয়।
OutputVariable
FlowVariable
Message নীতির লক্ষ্য। বৈধ মান হল message , request এবং responsemessage সেট করা হলে, নীতি শর্তসাপেক্ষে নীতির সংযুক্তি পয়েন্টের উপর ভিত্তি করে বার্তা বস্তুটি পুনরুদ্ধার করে। রিকোয়েস্ট ফ্লো-এর সাথে সংযুক্ত হলে, পলিসি অনুরোধের message সমাধান করে এবং রেসপন্স ফ্লো-এর সাথে সংযুক্ত হলে, পলিসি প্রতিক্রিয়ার message সমাধান করে।
XPath একটি XPath এক্সপ্রেশন যা আউটবাউন্ড XML ডকুমেন্টের উপাদানটিকে নির্দেশ করে যার সাথে নীতিটি SAML দাবি সংযুক্ত করবে৷
SignatureAlgorithm SHA1 বা SHA256
Subject
SAML দাবির বিষয়ের অনন্য শনাক্তকারী। যদি ঐচ্ছিক ref অ্যাট্রিবিউট থাকে, তাহলে নির্দিষ্ট ভেরিয়েবলের উপর ভিত্তি করে রানটাইমে Subject-এর মান নির্ধারণ করা হবে। ঐচ্ছিক ref অ্যাট্রিবিউট থাকলে Subject-এর মান ব্যবহার করা হবে।
Template
যদি উপস্থিত থাকে, তাহলে এই টেমপ্লেটটি চালনা করে, সংশ্লিষ্ট ভেরিয়েবলের সাথে {} নির্দেশিত সবকিছু প্রতিস্থাপন করে এবং তারপর ফলাফলে ডিজিটালভাবে স্বাক্ষর করার মাধ্যমে দাবী তৈরি করা হবে। টেমপ্লেটটি AssignMessage নীতি নিয়ম অনুসরণ করে প্রক্রিয়া করা হয়। বার্তা নীতি বরাদ্দ দেখুন।

SAML দাবী যাচাই করুন

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

ব্যবহারের নোট

সিকিউরিটি অ্যাসারশন মার্কআপ ল্যাঙ্গুয়েজ (SAML) স্পেসিফিকেশন ফরম্যাট এবং প্রোটোকলগুলিকে সংজ্ঞায়িত করে যা অ্যাপ্লিকেশানগুলিকে প্রমাণীকরণ এবং অনুমোদনের জন্য XML- ফর্ম্যাট করা তথ্য বিনিময় করতে সক্ষম করে৷

একটি "নিরাপত্তা দাবী" হল একটি বিশ্বস্ত টোকেন যা একটি অ্যাপ, একটি অ্যাপ ব্যবহারকারী বা লেনদেনে অন্য কোনো অংশগ্রহণকারীর বৈশিষ্ট্য বর্ণনা করে। নিরাপত্তা দাবী দুটি ধরনের সত্তা দ্বারা পরিচালিত এবং গ্রাস করা হয়:

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

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

SAML নীতির ধরন SAML দাবিগুলিকে সমর্থন করে যা SAML কোর স্পেসিফিকেশনের সংস্করণ 2.0 এবং WS-নিরাপত্তা SAML টোকেন প্রোফাইল স্পেসিফিকেশনের সংস্করণ 1.0 এর সাথে মেলে।

SAML দাবী জেনারেট করুন

নীতি প্রক্রিয়াকরণ:

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

SAML দাবী যাচাই করুন

নীতি প্রক্রিয়াকরণ:

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

একবার পলিসিটি কোনও ত্রুটি না করেই সম্পূর্ণ হয়ে গেলে, প্রক্সির বিকাশকারী নিম্নলিখিত বিষয়ে নিশ্চিত হতে পারেন:

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

অন্যান্য নীতি, যেমন ExtractVariables, আরো জটিল বৈধতার জন্য দাবীর কাঁচা XML পার্স করতে ব্যবহার করা যেতে পারে।


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

এমন অনেক তথ্য রয়েছে যা একটি SAML দাবীতে নির্দিষ্ট করা যেতে পারে। SAML দাবীটি নিজেই XML যা এক্সট্রাক্ট ভেরিয়েবল নীতি এবং অন্যান্য প্রক্রিয়া ব্যবহার করে পার্স করা যেতে পারে যাতে আরও জটিল বৈধতা বাস্তবায়ন করা যায়।

পরিবর্তনশীল বর্ণনা
saml.id SAML দাবী আইডি
saml.issuer দাবীর "ইস্যুকারী", তার নেটিভ এক্সএমএল টাইপ থেকে একটি স্ট্রিং-এ রূপান্তরিত হয়েছে
saml.subject দাবীর "বিষয়", তার নেটিভ XML প্রকার থেকে একটি স্ট্রিং-এ রূপান্তরিত হয়েছে৷
saml.valid বৈধতা পরীক্ষার ফলাফলের উপর ভিত্তি করে সত্য বা মিথ্যা প্রদান করে
saml.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 সেশন সূচক

ত্রুটি উল্লেখ

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
SourceNotConfigured One or more of the following elements of the Validate SAML Assertion policy is not defined or empty: <Source>, <XPath>, <Namespaces>, <Namespace>.
TrustStoreNotConfigured If the <TrustStore> element is empty or not specified in the ValidateSAMLAssertion policy, then the deployment of the API proxy fails. A valid Trust Store is required.
NullKeyStoreAlias If the child element <Alias> is empty or not specified in the <Keystore> element of Generate SAML Assertion policy, then the deployment of the API proxy fails. A valid Keystore alias is required.
NullKeyStore If the child element <Name> is empty or not specified in the <Keystore> element of GenerateSAMLAssertion policy, then the deployment of the API proxy fails. A valid Keystore name is required.
NullIssuer If the <Issuer> element is empty or not specified in the Generate SAML Assertion policy, then the deployment of the API proxy fails. A valid <Issuer> value is required.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault. The fault name is the last part of the fault code. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed For a validate SAML assertion policy configuration, the error prefix is ValidateSAMLAssertion. GenerateSAMLAssertion.failed = true

Example error response

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

Example fault rule

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

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

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