هنگام استفاده از یک IDP خارجی با Edge API، فرآیندی که برای به دست آوردن دسترسی OAuth2 و بهروزرسانی توکنها از تعامل IDP استفاده میکنید، جریان کد عبور نامیده میشود. با جریان کد عبور، شما از یک مرورگر برای به دست آوردن یک کد عبور یکبار مصرف استفاده میکنید که سپس برای به دست آوردن توکنهای OAuth2 از آن استفاده میکنید.
با این حال، محیط توسعه شما ممکن است از اتوماسیون برای وظایف توسعه رایج، مانند اتوماسیون تست یا CI/CD، پشتیبانی کند. برای خودکارسازی این وظایف هنگام فعال بودن یک IDP خارجی، به روشی برای دریافت و بهروزرسانی توکنهای OAuth2 بدون نیاز به کپی/پیست کردن کد عبور از مرورگر نیاز دارید.
Edge از تولید خودکار توکن از طریق استفاده از کاربران دستگاه در سازمانهایی که IDP فعال دارند، پشتیبانی میکند. یک کاربر دستگاه میتواند توکنهای OAuth2 را بدون نیاز به مشخص کردن کد عبور دریافت کند. این بدان معناست که شما میتوانید با استفاده از API مدیریت Edge، فرآیند دریافت و بهروزرسانی توکنهای OAuth2 را کاملاً خودکار کنید.
دو راه برای ایجاد کاربر ماشین برای یک سازمان دارای قابلیت IDP وجود دارد:
هر یک از این روشها در بخشهای بعدی توضیح داده شده است.
شما نمیتوانید برای سازمانهایی که IDP خارجی فعال ندارند، کاربر دستگاه ایجاد کنید.
با apigee-ssoadminapi.sh یک کاربر ماشین ایجاد کنید
از ابزار apigee-ssoadminapi.sh برای ایجاد یک کاربر ماشین در یک سازمان دارای قابلیت IDP استفاده کنید. برای اطلاعات بیشتر به بخش «استفاده از apigee-ssoadminapi.sh» مراجعه کنید. میتوانید یک کاربر ماشین واحد ایجاد کنید که توسط همه سازمانهای شما استفاده شود، یا برای هر سازمان یک کاربر ماشین جداگانه ایجاد کنید.
کاربر دستگاه در حافظه داده Edge ایجاد و ذخیره میشود، نه در IDP شما. بنابراین، شما مسئولیتی در قبال نگهداری کاربر دستگاه با استفاده از رابط کاربری Edge و API مدیریت Edge ندارید.
هنگام ایجاد کاربر دستگاه، باید یک آدرس ایمیل و رمز عبور مشخص کنید. پس از ایجاد کاربر دستگاه، آن را به یک یا چند سازمان اختصاص میدهید.
برای ایجاد یک کاربر ماشین با apigee-ssoadminapi.sh :
- برای ایجاد کاربر دستگاه از دستور
apigee-ssoadminapi.shزیر استفاده کنید:apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \ --secret SSO_ADMIN_SECRET --host Edge_SSO_IP_or_DNS \ -u machine_user_email -p machine_user_password
کجا:
- SSO_ADMIN_NAME نام کاربری ادمین است که توسط ویژگی
SSO_ADMIN_NAMEدر فایل پیکربندی مورد استفاده برای پیکربندی ماژول Apigee SSO تعریف شده است. مقدار پیشفرضssoadminاست. - SSO_ADMIN_SECRET رمز عبور مدیر است که توسط ویژگی
SSO_ADMIN_SECRETدر فایل پیکربندی مشخص شده است.در این مثال، میتوانید مقادیر مربوط به
--portو--sslرا حذف کنید زیرا ماژولapigee-ssoاز مقادیر پیشفرض ۹۰۹۹ برای--portو http برای--sslاستفاده میکند. اگر نصب شما از این مقادیر پیشفرض استفاده نمیکند، آنها را به صورت مناسب مشخص کنید.
- SSO_ADMIN_NAME نام کاربری ادمین است که توسط ویژگی
- به رابط کاربری Edge وارد شوید و ایمیل کاربر دستگاه را به سازمانهای خود اضافه کنید و نقش لازم را به کاربر دستگاه اختصاص دهید. برای اطلاعات بیشتر به افزودن کاربران سراسری مراجعه کنید.
ایجاد یک کاربر دستگاه با API مدیریت Edge
شما میتوانید به جای استفاده از ابزار apigee-ssoadminapi.sh با استفاده از Edge management API یک کاربر ماشین ایجاد کنید.
برای ایجاد یک کاربر دستگاه با API مدیریت :
- از دستور
curlزیر برای دریافت توکن برای کاربرssoadmin، نام کاربری حساب کاربری ادمین برایapigee-sso، استفاده کنید:curl "http://Edge_SSO_IP_DNS:9099/oauth/token" -i -X POST \ -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \ -d "response_type=token" -d "grant_type=client_credentials" \ --data-urlencode "client_secret=SSO_ADMIN_SECRET" \ --data-urlencode "client_id=ssoadmin"
که در آن SSO_ADMIN_SECRET رمز عبور ادمینی است که هنگام نصب
apigee-ssoطبق ویژگیSSO_ADMIN_SECRETدر فایل پیکربندی، تنظیم کردهاید.این دستور توکنی را نمایش میدهد که برای برقراری تماس بعدی به آن نیاز دارید.
- از دستور
curlزیر برای ایجاد کاربر دستگاه استفاده کنید و توکنی را که در مرحله قبل دریافت کردید، به آن ارسال کنید:curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \ -H "Accept: application/json" -H "Content-Type: application/json" \ -d '{"userName" : "machine_user_email", "name" : {"formatted":"DevOps", "familyName" : "last_name", "givenName" : "first_name"}, "emails" : [ {"value" : "machine_user_email", "primary" : true } ], "active" : true, "verified" : true, "password" : "machine_user_password" }' \ -H "Authorization: Bearer token"در مراحل بعدی به رمز عبور کاربر دستگاه نیاز دارید.
- وارد رابط کاربری Edge شوید.
- ایمیل کاربر دستگاه را به سازمانهای خود اضافه کنید و نقش لازم را به کاربر دستگاه اختصاص دهید. برای اطلاعات بیشتر به افزودن کاربران سراسری مراجعه کنید.
توکنهای کاربر دستگاه را دریافت و بهروزرسانی کنید
از API Edge برای دریافت و بهروزرسانی توکنهای OAuth2 با ارسال اعتبارنامههای کاربر دستگاه، به جای کد عبور، استفاده کنید.
برای دریافت توکنهای OAuth2 برای کاربر دستگاه:
- از فراخوانی 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 \ http://Edge_SSO_IP_DNS:9099/oauth/token -s \ -d 'grant_type=password&username=m_user_email&password=m_user_password'
توکنها را برای استفادههای بعدی ذخیره کنید.
- توکن دسترسی را به عنوان هدر
Bearerبه یک فراخوانی API مدیریت Edge ارسال کنید، همانطور که در مثال زیر نشان داده شده است:curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
که در آن org_name نام سازمانی است که کاربر دستگاه در آن قرار دارد.
- برای بهروزرسانی توکن دسترسی در آینده، از فراخوانی زیر که شامل توکن بهروزرسانی است استفاده کنید:
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 \ http://edge_sso_IP_DNS:9099/oauth/token \ -d 'grant_type=refresh_token&refresh_token=refreshToken'