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

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

چه

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

نمونه‌ها

ایجاد ادعای 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 نباشد، assertion تولید نمی‌شود. اگر این مقدار روی true تنظیم شود، پیام صرف نظر از نوع Content-type، به عنوان 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 پردازش می‌شود. به خط‌مشی Assign Message مراجعه کنید.

اعتبارسنجی ادعای SAML

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

یادداشت‌های استفاده

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

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

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

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

نوع سیاست SAML از ادعاهای SAML پشتیبانی می‌کند که با نسخه ۲.۰ از مشخصات اصلی SAML و نسخه ۱.۰ از مشخصات پروفایل توکن SAML WS-Security مطابقت دارند.

تولید ادعای SAML

پردازش سیاست:

  1. اگر پیام XML نیست و IgnoreContentType روی true تنظیم نشده است، آنگاه یک خطا ایجاد می‌شود.
  2. اگر "Template" تنظیم شده باشد، آن را مطابق با توضیحات مربوط به سیاست AssignMessage پردازش کنید. اگر هر متغیری از دست رفته باشد و IgnoreUnresolvedVariables تنظیم نشده باشد، یک خطا ایجاد کنید.
  3. اگر «الگو» تنظیم نشده باشد، یک ادعا (asser) بسازید که شامل مقادیر پارامترهای موضوع (Subject) و صادرکننده (Former) یا ارجاعات آنها باشد.
  4. با استفاده از کلید مشخص شده، بیانیه را امضا کنید.
  5. عبارت تاکیدی را در XPath مشخص شده به پیام اضافه کنید.

اعتبارسنجی ادعای SAML

پردازش سیاست:

  1. این خط‌مشی، پیام ورودی را بررسی می‌کند تا تأیید کند که نوع رسانه درخواست XML است، و این کار را با بررسی اینکه آیا نوع محتوا با فرمت‌های text/(.*+)?xml یا application/(.*+)?xml مطابقت دارد یا خیر، انجام می‌دهد. اگر نوع رسانه XML نباشد و <IgnoreContentType> تنظیم نشده باشد، خط‌مشی خطایی ایجاد می‌کند.
  2. این سیاست، XML را تجزیه و تحلیل می‌کند. اگر تجزیه با شکست مواجه شود، خطایی رخ می‌دهد.
  3. این سیاست، عنصر امضا شده و ادعا را با استفاده از XPath های مربوطه مشخص شده ( <SignedElementXPath> و <AssertionXPath> ) استخراج می‌کند. اگر هر یک از این مسیرها عنصری را برنگردانند، در آن صورت این سیاست یک خطا ایجاد می‌کند.
  4. این سیاست بررسی می‌کند که آیا عبارت Assertion با عنصر امضا شده یکسان است یا فرزند عنصر امضا شده است. اگر این درست نباشد، سیاست یک خطا (fault) ایجاد می‌کند.
  5. اگر هر یک از عناصر <NotBefore> یا <NotOnOrAfter> در ادعا وجود داشته باشند، این خط‌مشی، مهر زمانی فعلی را با این مقادیر، همانطور که در بخش ۲.۵.۱ از SAML Core توضیح داده شده است، بررسی خواهد کرد.
  6. این خط‌مشی، هرگونه قانون اضافی برای پردازش «شرایط» را مطابق آنچه در بخش ۲.۵.۱.۱ از SAML Core شرح داده شده است، اعمال خواهد کرد.
  7. این خط‌مشی، امضای دیجیتال XML را با استفاده از مقدار ذخیره اعتماد ( <TrustStore> ) که در بالا توضیح داده شد، اعتبارسنجی می‌کند. اگر اعتبارسنجی با شکست مواجه شود، خط‌مشی خطایی را ایجاد می‌کند.

پس از اتمام خط‌مشی بدون بروز خطا، توسعه‌دهنده پروکسی می‌تواند از موارد زیر مطمئن باشد:

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

سیاست‌های دیگری مانند ExtractVariables ممکن است برای تجزیه XML خام ادعا برای اعتبارسنجی پیچیده‌تر استفاده شوند.


متغیرهای جریان

اطلاعات زیادی وجود دارد که ممکن است در یک ادعای SAML مشخص شود. خود ادعای SAML یک XML است که می‌تواند با استفاده از سیاست ExtractVariables و سایر مکانیسم‌ها تجزیه شود تا اعتبارسنجی‌های پیچیده‌تری پیاده‌سازی شوند.

متغیر توضیحات
saml.id شناسه ادعای SAML
saml.issuer «صادرکننده» ادعا، که از نوع XML بومی خود به یک رشته تبدیل شده است
saml.subject "موضوع" ادعا، که از نوع XML بومی خود به یک رشته تبدیل شده است
saml.valid بر اساس نتیجه بررسی اعتبار، مقدار درست یا نادرست را برمی‌گرداند
saml.issueInstant صدور فوری
saml.subjectFormat قالب موضوعی
saml.scmethod روش تأیید موضوع
saml.scdaddress آدرس داده تأیید موضوع
saml.scdinresponse اطلاعات تأیید موضوع در پاسخ
saml.scdrcpt گیرنده داده تأیید موضوع
saml.authnSnooa AuthnStatement SessionNotOnOrAfter
saml.authnContextClassRef دستور احراز هویت AuthnContextClassRef
saml.authnInstant دستور احراز هویت (AuthnStatement)
saml.authnSessionIndex فهرست جلسه AuthnStatement

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطا را که توسط 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>

مباحث مرتبط

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