شما در حال مشاهده اسناد 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 ایجاد کنید
پردازش خط مشی:
- اگر پیام XML نیست و IgnoreContentType روی
true
تنظیم نشده است، یک خطا را مطرح کنید. - اگر "الگو" تنظیم شده است، الگو را همانطور که برای خط مشی AssignMessage توضیح داده شده پردازش کنید. اگر متغیری وجود ندارد و IgnoreUnresolvedVariables تنظیم نشده است، یک خطا را مطرح کنید.
- اگر "الگو" تنظیم نشده باشد، یک ادعا بسازید که شامل مقادیر پارامترهای موضوع و صادرکننده یا مراجع آنها باشد.
- ادعا را با استفاده از کلید مشخص شده امضا کنید.
- ادعا را به پیام در XPath مشخص شده اضافه کنید.
تأیید صحت ادعای SAML
پردازش خط مشی:
- خطمشی پیام ورودی را بررسی میکند تا تأیید کند که نوع رسانه درخواست XML است، با بررسی اینکه آیا نوع محتوا با قالبهای
text/(.*+)?xml
یاapplication/(.*+)?xml
مطابقت دارد یا خیر. اگر نوع رسانه XML نباشد و<IgnoreContentType>
تنظیم نشده باشد، این خط مشی یک خطا ایجاد می کند. - این خط مشی XML را تجزیه می کند. اگر تجزیه ناموفق باشد، یک خطا ایجاد می کند.
- این خطمشی با استفاده از XPathهای مشخص شده مربوطه (
<SignedElementXPath>
و<AssertionXPath>
) عنصر امضا شده و ادعا را استخراج میکند. اگر یکی از این مسیرها عنصری را برنگرداند، خط مشی یک خطا ایجاد می کند. - این خطمشی تأیید میکند که ادعا همان عنصر امضا شده است یا فرزند عنصر امضا شده است. اگر این درست نباشد، این خطمشی یک خطا ایجاد میکند.
- اگر یکی از عناصر
<NotBefore>
یا<NotOnOrAfter>
در ادعا وجود داشته باشد، خط مشی مهر زمانی فعلی را در برابر این مقادیر بررسی می کند، همانطور که در بخش SAML Core 2.5.1 توضیح داده شده است. - این خطمشی قوانین اضافی را برای پردازش "شرایط" همانطور که در بخش SAML Core 2.5.1.1 توضیح داده شده اعمال میکند.
- این خطمشی با استفاده از مقادیر
<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> . | build |
TrustStoreNotConfigured | اگر عنصر <TrustStore> خالی باشد یا در خطمشی ValidateSAMLAssertion مشخص نشده باشد، استقرار پراکسی API با شکست مواجه میشود. یک فروشگاه معتبر معتبر مورد نیاز است. | build |
NullKeyStoreAlias | اگر عنصر فرزند <Alias> خالی باشد یا در عنصر <Keystore> خطمشی Generate SAML Assertion مشخص نشده باشد، در این صورت استقرار پراکسی API با شکست مواجه میشود. یک نام مستعار Keystore معتبر مورد نیاز است. | build |
NullKeyStore | اگر عنصر فرزند <Name> خالی باشد یا در عنصر <Keystore> خطمشی GenerateSAMLAssertion مشخص نشده باشد، در آن صورت استقرار پراکسی API با شکست مواجه میشود. یک نام Keystore معتبر مورد نیاز است. | build |
NullIssuer | اگر عنصر <Issuer> خالی باشد یا در خطمشی Generate SAML Assertion مشخص نشده باشد، استقرار پراکسی API با شکست مواجه میشود. یک مقدار معتبر <Issuer> مورد نیاز است. | build |
متغیرهای خطا
این متغیرها زمانی تنظیم می شوند که یک خطای زمان اجرا رخ دهد. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.
متغیرها | کجا | مثال |
---|---|---|
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>
موضوعات مرتبط
استخراج متغیرها: استخراج خط مشی متغیرها