چگونه از فلاسک یا بطری با SAML استفاده کنیم؟
پیام بگذارید
SAML یا Security Assertion Markup Language، یک استاندارد باز برای تبادل دادههای احراز هویت و مجوز بین طرفین است، بهویژه در زمینه ثبتنام واحد مبتنی بر وب (SSO). ادغام SAML با چارچوب های وب مانند Flask یا Bottle می تواند امنیت و تجربه کاربری برنامه های شما را به میزان قابل توجهی افزایش دهد. به عنوان یک تامین کننده Flask and Bottle، من اینجا هستم تا شما را در فرآیند استفاده از این چارچوب ها با SAML راهنمایی کنم.
آشنایی با مبانی SAML
قبل از فرو رفتن در فرآیند ادغام، درک مفاهیم اولیه SAML ضروری است. SAML بر روی یک مدل سه جانبه عمل می کند: ارائه دهنده خدمات (SP)، ارائه دهنده هویت (IdP) و کاربر. SP برنامه ای است که نیاز به احراز هویت دارد، در حالی که IdP مسئول تأیید هویت کاربر است. هنگامی که کاربر سعی می کند به یک منبع محافظت شده در SP دسترسی پیدا کند، SP کاربر را برای احراز هویت به IdP هدایت می کند. هنگامی که IdP هویت کاربر را تأیید کرد، یک ادعای SAML را به SP ارسال می کند، که سپس به کاربر اجازه دسترسی به منبع درخواستی را می دهد.
پیش نیازها
برای ادغام SAML با Flask یا Bottle، به موارد زیر نیاز دارید:
- یک برنامه فلاسک یا بطری
- ارائه دهنده هویت SAML (IdP). میتوانید از یک IdP تجاری مانند Okta یا OneLogin استفاده کنید یا خودتان را با استفاده از راهحلهای منبع باز مانند Shibboleth تنظیم کنید.
- این
python3-samlکتابخانه ای که اجرای پایتون از پروتکل SAML را ارائه می دهد.
ادغام SAML با Flask
بیایید با ادغام SAML با یک برنامه Flask شروع کنیم. ابتدا، نصب کنیدpython3-samlکتابخانه با استفاده از پیپ:
پیپ نصب python3-saml
بعد، یک برنامه Flask ایجاد کنید و تنظیمات SAML را پیکربندی کنید. در اینجا یک مثال است:
از واردات فلاسک فلاسک، تغییر مسیر، درخواست از onelogin.saml2.auth واردات OneLogin_Saml2_Auth از onelogin.saml2.utils import OneLogin_Saml2_Utils app = Flask(__name__) def init_saml_auth(req): auth = OneLogin_Saml2, custom_base_path='saml_config') return auth def përgatit_flask_request(درخواست): return { 'https': 'روشن' if request.scheme == 'https' else 'off'، 'http_host': request.host، 'server_port': request.environ['SERVER_flask_PORT'], 'scripttaco', request. 'post_data': request.form.copy() } @app.route('/') def index(): req = përgatit_flask_request(درخواست) auth = init_saml_auth(req) return redirect(auth.login()) @app.route('/acs', method=['post_post', method=['post_post']) init_saml_auth(req) auth.process_response() errors = auth.get_errors() اگر خطا نباشد: "با موفقیت تایید شد!" else: return 'تأیید هویت انجام نشد: {}'.format(', '.join(خطاها)) اگر __name__ == '__main__': app.run(debug=True)
در این مثال،/route کاربر را برای احراز هویت به IdP هدایت می کند. این/acsمسیر، نقطه پایانی خدمات مصرف کننده (ACS) است، که ادعای SAML را از IdP دریافت می کند و آن را پردازش می کند.
ادغام SAML با بطری
ادغام SAML با یک برنامه Bottle مشابه ادغام Flask است. ابتدا، نصب کنیدpython3-samlکتابخانه اگر قبلاً این کار را نکرده اید. سپس، یک برنامه Bottle ایجاد کنید و تنظیمات SAML را پیکربندی کنید. در اینجا یک مثال است:
از واردات بطری بطری، تغییر مسیر، درخواست از onelogin.saml2.auth واردات OneLogin_Saml2_Auth از onelogin.saml2.utils import OneLogin_Saml2_Utils app = Bottle() def init_saml_auth(req): auth = OneLogin_Saml2_Auth=OneLogin_Saml2_Auth def ready_bottle_request(درخواست): return { 'https': 'روشن' اگر request.url.startswith('https') در غیر اینصورت 'خاموش'، 'http_host': request.host، 'server_port': request.environ.get('SERVER_PORT'، '80')، 'script_name': request.path', 'get._da' request.forms.dict } @app.route('/') def index(): req =prepar_bottle_request(درخواست) auth = init_saml_auth(req) return redirect(auth.login()) @app.route('/acs', method='POST') def acs(): req =report_bottle_request(ml request) auth.process_response() errors = auth.get_errors() اگر خطا نباشد: 'با موفقیت تأیید شد!' else: return 'تأیید هویت انجام نشد: {}'.format(', '.join(خطاها)) اگر __name__ == '__main__': app.run(debug=True)
در این مثال،/route کاربر را برای احراز هویت به IdP هدایت می کند و/acsroute ادعای SAML را پردازش می کند.
پیکربندی تنظیمات SAML
تنظیمات SAML در یک فایل پیکربندی ذخیره می شود. یک دایرکتوری به نام ایجاد کنیدsaml_configدر ریشه پروژه خود و یک فایل به نام ایجاد کنیدsettings.jsonداخل آن در اینجا یک نمونه پیکربندی آمده است:
{ "strict": true، "debug": true، "sp": { "entityId": "https://your-app.com/metadata"، "assertionConsumerService": { "url": "https://your-app.com/acs"، "binding": "urn:oasis:names:tc:p. "singleLogoutService": { "url": "https://your-app.com/slo"، "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" }، "NameIDFormat": "urn:oasis:names:tc:unnameid",-binding:tc:unnameid: "x509cert": ""، "privateKey": "" }، "idp": { "entityId": "https://your-idp.com/metadata"، "singleSignOnService": { "url": "https://your-idp.com/sso"، "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" }، "singleLogoutService": { "url": "https://your-idp.com/slo"، "binding": "urn:oasis:names:tc:SAML:2.0:PB,SAML:2.0:PCertx0" "-----شروع گواهی -----\n...\n----- پایان گواهی -----" } }
URL ها و اطلاعات گواهی را با مقادیر واقعی خود جایگزین کنید.


مزایای استفاده از SAML با فلاسک یا بطری
ادغام SAML با فلاسک یا بطری چندین مزیت دارد:
- امنیت پیشرفته: SAML روشی امن برای احراز هویت کاربران با استفاده از امضای دیجیتال و رمزگذاری فراهم می کند.
- ورود به سیستم (SSO): کاربران می توانند با یک مجموعه از اعتبارنامه ها به چندین برنامه وارد شوند و تجربه کاربری را بهبود ببخشند.
- مدیریت هویت متمرکز: SAML به شما امکان می دهد تا هویت کاربران را از یک مکان مرکزی مدیریت کنید و کنترل دسترسی به برنامه های خود را آسان تر می کند.
نتیجه گیری
ادغام SAML با Flask یا Bottle یک فرآیند ساده است که می تواند امنیت و تجربه کاربری برنامه های شما را به میزان قابل توجهی افزایش دهد. به عنوان یک تامین کننده فلاسک و بطری، می توانم پشتیبانی و منابع لازم را برای اطمینان از یکپارچگی روان در اختیار شما قرار دهم. اگر علاقه مند به خرید محصولات Flask یا Bottle ما هستید، یا اگر در مورد ادغام SAML سؤالی دارید، لطفاًبرای بحث دقیق با ما تماس بگیرید.
محصول مرتبط
اگر شما نیز به دنبال ظروف عایق با کیفیت بالا هستید، ما را بررسی کنیدقهوه جوش عایق از فولاد ضد زنگ. برای سرد یا گرم نگه داشتن نوشیدنی های شما برای مدت طولانی بسیار مناسب است.
مراجع
- اسناد کتابخانه OneLogin Python SAML
- مستندات فلاسک
- مستندات بطری
- مشخصات SAML




