سیاست های اظهارنظر SAMLA

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

چی

  • احراز هویت ورودی و مجوز: اعتبارسنجی سیاست SAML Assertion
    نوع خط مشی SAML، پراکسی های API را قادر می سازد تا ادعاهای SAML را که به درخواست های SOAP ورودی پیوست شده اند، تأیید کنند. خط‌مشی SAML پیام‌های دریافتی حاوی یک ادعای SAML با امضای دیجیتال را تأیید می‌کند، در صورت نامعتبر بودن آنها را رد می‌کند، و متغیرهایی را تنظیم می‌کند که به سیاست‌های اضافی یا خود سرویس‌های پشتیبان اجازه می‌دهد تا اطلاعات موجود در ادعا را بیشتر تأیید کنند.
  • تولید توکن خروجی: خط مشی اظهارنظر SAML را ایجاد کنید
    نوع خط مشی SAML به پراکسی های API امکان می دهد اظهارات SAML را به درخواست های XML خروجی متصل کنند. سپس این ادعاها برای فعال کردن خدمات پشتیبان برای اعمال پردازش امنیتی بیشتر برای احراز هویت و مجوز در دسترس هستند.

نمونه ها

ادعای 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._\-$ % . با این حال، مدیریت رابط کاربری محدودیت‌های بیشتری را اعمال می‌کند، مانند حذف خودکار نویسه‌هایی که حروف عددی نیستند.
ویژگی ignoreContentType یک بولی که می تواند روی true یا false تنظیم شود. اگر نوع محتوای پیام XML Content-Type نباشد، به طور پیش‌فرض، ادعا ایجاد نمی‌شود. اگر روی true تنظیم شود، بدون در نظر گرفتن نوع محتوا، پیام به عنوان XML تلقی می شود.
Issuer
شناسه منحصر به فرد ارائه دهنده هویت. اگر ویژگی ref اختیاری وجود داشته باشد، مقدار Issuer در زمان اجرا بر اساس متغیر مشخص شده تخصیص داده می شود. اگر ویژگی اختیاری ref وجود نداشته باشد، از مقدار Issuer استفاده می شود.
KeyStore
نام KeyStore که حاوی کلید خصوصی و نام مستعار کلید خصوصی است که برای امضای دیجیتالی اظهارات SAML استفاده می‌شود.
OutputVariable
FlowVariable
Message هدف سیاست مقادیر معتبر message , request و response هستند . وقتی روی message تنظیم شود، خط مشی به صورت مشروط شی پیام را بر اساس نقطه پیوست خط مشی بازیابی می کند. هنگامی که به جریان درخواست پیوست می شود، خط مشی message به درخواست را حل می کند و هنگامی که به جریان پاسخ پیوست می شود، خط مشی message به پاسخ را حل می کند.
XPath یک عبارت XPath که عنصری را در سند XML خروجی نشان می دهد که خط مشی عبارت SAML را به آن پیوست می کند.
SignatureAlgorithm SHA1 یا SHA256
Subject
شناسه منحصر به فرد موضوع ادعای SAML. اگر ویژگی اختیاری ref وجود داشته باشد، مقدار Subject در زمان اجرا بر اساس متغیر مشخص شده تخصیص داده می شود. اگر ویژگی اختیاری ref وجود داشته باشد، از مقدار Subject استفاده می شود.
Template
اگر وجود داشته باشد، با اجرای این الگو، جایگزین کردن هر چیزی که نشان داده شده است {} با متغیر مربوطه، و سپس به صورت دیجیتالی نتیجه را امضا می کند، ادعا ایجاد می شود. این الگو طبق قوانین خط مشی AssignMessage پردازش می شود. به تعیین خط مشی پیام مراجعه کنید.

تأیید صحت ادعای SAML

نام فیلد توضیحات
ویژگی name
نام نمونه سیاست. نام باید در سازمان منحصر به فرد باشد. نویسه هایی که می توانید در نام استفاده کنید محدود به: A-Z0-9._\-$ % . با این حال، مدیریت رابط کاربری محدودیت‌های بیشتری را اعمال می‌کند، مانند حذف خودکار نویسه‌هایی که حروف عددی نیستند.
ویژگی 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 . یک عبارت XPath که عنصری را در سند XML ورودی نشان می دهد که خط مشی می تواند عنصر امضا شده را از آن استخراج کند. این ممکن است متفاوت یا مشابه XPath برای AssertionXPath باشد.
TrustStore
نام TrustStore که حاوی گواهی‌های مطمئن X.509 است که برای اعتبارسنجی امضاهای دیجیتال در اظهارات SAML استفاده می‌شود.
RemoveAssertion
یک بولی که می تواند روی true یا false تنظیم شود. وقتی true ، ادعای SAML از پیام درخواست حذف می‌شود قبل از اینکه پیام به سرویس پشتیبان ارسال شود.

نکات استفاده

مشخصات زبان نشانه‌گذاری ادعای امنیتی (SAML) فرمت‌ها و پروتکل‌هایی را تعریف می‌کند که برنامه‌ها را قادر می‌سازد تا اطلاعات با فرمت XML را برای احراز هویت و مجوز مبادله کنند.

"ادعای امنیتی" یک نشانه قابل اعتماد است که ویژگی یک برنامه، یک کاربر برنامه یا برخی از شرکت کنندگان دیگر در یک تراکنش را توصیف می کند. ادعاهای امنیتی توسط دو نوع نهاد مدیریت و مصرف می شوند:

  • ارائه دهندگان هویت: ادعاهای امنیتی را از طرف شرکت کنندگان ایجاد کنید
  • ارائه دهندگان خدمات: اظهارات امنیتی را از طریق روابط قابل اعتماد با ارائه دهندگان هویت تأیید کنید

پلت فرم API می تواند به عنوان یک ارائه دهنده هویت و به عنوان یک ارائه دهنده خدمات عمل کند. با ایجاد ادعاها و پیوست کردن آنها به پیام‌های درخواستی، به‌عنوان یک ارائه‌دهنده هویت عمل می‌کند و این ادعاها را برای پردازش توسط خدمات باطن در دسترس قرار می‌دهد. به عنوان یک ارائه دهنده خدمات با اعتبار سنجی اظهارات در پیام های درخواست ورودی عمل می کند.

نوع خط مشی SAML از اظهارات SAML پشتیبانی می کند که با نسخه 2.0 مشخصات هسته SAML و نسخه 1.0 مشخصات نمایه توکن SAML WS-Security مطابقت دارد.

ادعای 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 2.5.1.1 توضیح داده شده اعمال می‌کند.
  7. این خط‌مشی با استفاده از مقادیر <TrustStore> و <ValidateSigner> همانطور که در بالا توضیح داده شد، امضای دیجیتال 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 Session Index

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطا را که توسط Edge تنظیم می‌شوند، هنگامی که این خط‌مشی خطا را راه‌اندازی می‌کند، توضیح می‌دهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت رفع کنید
SourceNotConfigured یک یا چند عنصر زیر از خط‌مشی اعتبارسنجی SAML Assertion تعریف نشده یا خالی نیست: <Source> ، <XPath> ، <Namespaces> ، <Namespace> .
TrustStoreNotConfigured اگر عنصر <TrustStore> خالی باشد یا در خط‌مشی ValidateSAMLAssertion مشخص نشده باشد، استقرار پراکسی API با شکست مواجه می‌شود. یک فروشگاه معتبر معتبر مورد نیاز است.
NullKeyStoreAlias اگر عنصر فرزند <Alias> خالی باشد یا در عنصر <Keystore> خط‌مشی Generate SAML Assertion مشخص نشده باشد، در این صورت استقرار پراکسی API با شکست مواجه می‌شود. یک نام مستعار Keystore معتبر مورد نیاز است.
NullKeyStore اگر عنصر فرزند <Name> خالی باشد یا در عنصر <Keystore> خط‌مشی GenerateSAMLAssertion مشخص نشده باشد، در آن صورت استقرار پراکسی API با شکست مواجه می‌شود. یک نام Keystore معتبر مورد نیاز است.
NullIssuer اگر عنصر <Issuer> خالی باشد یا در خط‌مشی Generate SAML Assertion مشخص نشده باشد، استقرار پراکسی API با شکست مواجه می‌شود. یک مقدار معتبر <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>

موضوعات مرتبط

استخراج متغیرها: استخراج خط مشی متغیرها