استفاده از SAML با API مدیریت Edge

Edge for Private Cloud نسخه 4.18.01

Basic Auth یکی از راه‌های احراز هویت هنگام برقراری تماس با API مدیریت Edge است. برای مثال، می‌توانید برای دسترسی به اطلاعات سازمان خود، درخواست cURL زیر را به API مدیریت Edge ارسال کنید:

> curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

در این مثال، شما از گزینه cURL -u برای ارسال اعتبارنامه پایه Auth استفاده می کنید. همچنین، می‌توانید برای برقراری تماس‌های API مدیریت Edge، یک توکن OAuth2 را در هدر Bearer ارسال کنید. به عنوان مثال:

> curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName

بعد از اینکه SAML را فعال کردید، می توانید به صورت اختیاری Basic Auth را غیرفعال کنید. اگر Basic Auth را غیرفعال کنید، همه اسکریپت‌ها (اسکریپت‌های Maven، اسکریپت‌های پوسته، apigeetool و غیره) که به فراخوان‌های API مدیریت Edge متکی هستند که از Basic Auth پشتیبانی می‌کنند، دیگر کار نمی‌کنند. شما باید هر تماس و اسکریپت API را که از Basic Auth برای ارسال نشانه های دسترسی OAuth2 در هدر Bearer استفاده می کند، به روز کنید.

استفاده از get_token برای دریافت و به‌روزرسانی توکن‌ها

ابزار get_token اعتبارنامه پایه Auth و یک رمز عبور برای دسترسی OAuth2 و توکن تازه‌سازی را مبادله می‌کند. ابزار get_token اعتبار شما را می پذیرد و یک نشانه دسترسی معتبر چاپ می کند. اگر نشانه ای را بتوان رفرش کرد، آن را رفرش کرده و چاپ می کند. اگر توکن به‌روزرسانی منقضی شود، اعتبار کاربر را درخواست می‌کند.

ابزار get_token توکن‌ها را روی دیسک ذخیره می‌کند و در صورت نیاز برای استفاده آماده است. همچنین یک نشانه دسترسی معتبر به stdout چاپ می کند. از آنجا، می توانید از Postman استفاده کنید یا آن را در یک متغیر محیطی برای استفاده در curl قرار دهید.

روش زیر نحوه استفاده از get_token را برای به دست آوردن یک نشانه دسترسی OAuth2 برای برقراری تماس های API مدیریت Edge توضیح می دهد:

  1. بسته sso-cli را دانلود کنید:
    > curl http:// edge_sso_IP_DNS: 9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    جایی که edge_sso_IP_DNS آدرس IP نام DNS دستگاه میزبان ماژول Edge SSO است. اگر TLS را روی Edge SSO پیکربندی کرده اید، از https و شماره پورت TLS صحیح استفاده کنید.
  2. بسته ssocli-bundle.zip را از حالت فشرده خارج کنید:
    > ssocli-bundle.zip را از حالت فشرده خارج کنید
  3. get_token را در /usr/local/bin نصب کنید:
    > ./install از گزینه -b برای تعیین مکان متفاوت استفاده کنید: > ./install -b مسیر
  4. متغیر محیطی SSO_LOGIN_URL را روی URL ورود خود به این شکل تنظیم کنید:
    صادرات SSO_LOGIN_URL="http:// edge_sso_IP_DNS :9099"

    جایی که edge_sso_IP_DNS آدرس IP نام DNS دستگاه میزبان ماژول Edge SSO است. اگر TLS را روی Edge SSO پیکربندی کرده اید، از https و شماره پورت TLS صحیح استفاده کنید.
  5. در یک مرورگر، برای دریافت رمز عبور یکبار مصرف، به آدرس اینترنتی زیر بروید:
    http:// edge_sso_IP_DNS :9099/passcode

    اگر TLS را روی Edge SSO پیکربندی کرده اید، از https و شماره پورت TLS صحیح استفاده کنید.

    توجه : اگر در حال حاضر توسط ارائه دهنده هویت خود وارد نشده اید، از شما خواسته می شود که وارد شوید.

    این URL یک رمز عبور یک بار مصرف را برمی گرداند که تا زمانی که آن URL را برای به دست آوردن یک رمز عبور جدید بازخوانی نکنید، یا از رمز عبور با get_token برای تولید رمز دسترسی استفاده کنید، معتبر باقی می ماند.
  6. برای به دست آوردن نشانه دسترسی OAuth2، get_token را فراخوانی کنید:
    > get_token -u آدرس ایمیل

    که در آن emailAddress آدرس ایمیل یک کاربر Edge است. از شما خواسته می شود رمز عبور یک بار مصرفی را که در مرحله 3 به دست آورده اید وارد کنید:
    کد یکبار مصرف (در https://edge_sso_IP.com/passcode یکی را دریافت کنید)
    اگر SAML فعال است، رمز عبور را وارد کنید یا ENTER را فشار دهید:


    رمز عبور را وارد کنید. ابزار get_token نشانه دسترسی OAuth2 را دریافت می‌کند، آن را روی صفحه چاپ می‌کند و آن را می‌نویسد و توکن refresh را در ~/.sso-cli می‌نویسد.

    می توانید رمز عبور را در خط فرمان با استفاده از دستور get_token به شکل زیر وارد کنید:
    > get_token -u emailAddress -p passcode
  7. رمز دسترسی را به عنوان هدر حامل به یک تماس API مدیریت Edge ارسال کنید:
    > curl -H "Authorization: Bearer access_token " https:// ms_IP :8080/v1/organizations/ orgName

    پس از دریافت یک نشانه دسترسی جدید برای اولین بار، می توانید نشانه دسترسی را دریافت کرده و آن را در یک دستور به یک فراخوانی API ارسال کنید، همانطور که در زیر نشان داده شده است:
    > header=`get_token` && curl -H "Authorization: Bearer $header" https:// ms_IP :8080/v1/o/ orgName

    با این فرم از دستور، اگر نشانه دسترسی منقضی شده باشد، به طور خودکار تا زمانی که نشانه رفرش منقضی شود، رفرش می شود.

پس از انقضای توکن به‌روزرسانی، get_token از شما می‌خواهد یک رمز عبور جدید دریافت کنید. قبل از اینکه بتوانید یک نشانه دسترسی OAuth جدید ایجاد کنید، باید به URL نشان داده شده در بالا در مرحله 3 بروید و یک رمز عبور جدید ایجاد کنید.

استفاده از API مدیریت برای دریافت و به‌روزرسانی نشانه‌ها

استفاده از امنیت OAuth2 با API مدیریت Apigee Edge حاوی دستورالعمل‌هایی است که نشان می‌دهد چگونه از API مدیریت Edge برای به دست آوردن و به‌روزرسانی نشانه‌ها استفاده کنید. همچنین می‌توانید از فراخوان‌های Edge API برای توکن‌های تولید شده از اظهارات SAML استفاده کنید.

تنها تفاوت بین تماس‌های API مستند شده در استفاده از امنیت OAuth2 با API مدیریت Apigee Edge این است که URL تماس باید به نام منطقه شما اشاره کند. علاوه بر این، برای تولید رمز دسترسی اولیه، باید رمز عبور را وارد کنید، همانطور که در مرحله 3 از روش بالا نشان داده شده است.

به عنوان مثال، از فراخوانی API زیر برای ایجاد توکن‌های دسترسی اولیه و تازه‌سازی استفاده کنید:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'  

برای مجوز، یک اعتبار مشتری رزرو شده OAuth2 را در هدر مجوز ارسال کنید. تماس، نشانه‌های دسترسی و تازه‌سازی را روی صفحه چاپ می‌کند.

برای بازخوانی نشانه دسترسی، از فراخوانی زیر که شامل نشانه رفرش است استفاده کنید:

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" /
-H "Accept: application/json;charset=utf-8" /
-H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
https://edge_sso_IP_DNS:9099/oauth/token /
-d 'grant_type=refresh_token&refresh_token=refreshToken'