به طور پیشفرض، جستجوی ابری گوگل فقط هویتهای گوگل ذخیره شده در فهرست راهنمای ابری گوگل (کاربران و گروهها) را تشخیص میدهد. رابطهای هویت برای همگامسازی هویتهای سازمانی شما با هویتهای گوگل مورد استفاده توسط جستجوی ابری گوگل استفاده میشوند.
گوگل گزینههای زیر را برای توسعه رابطهای هویتی ارائه میدهد:
کیت توسعه نرمافزاری رابط هویت (Identity Connector SDK). این گزینه برای توسعهدهندگانی است که با زبان برنامهنویسی جاوا برنامهنویسی میکنند. کیت توسعه نرمافزاری رابط هویت (Identity Connector SDK) یک پوشش پیرامون REST API است که به شما امکان میدهد به سرعت رابطها (Connectors) ایجاد کنید. برای ایجاد یک رابط هویت با استفاده از SDK، به بخش «ایجاد یک رابط هویت با استفاده از SDK رابط هویت» مراجعه کنید.
یک API سطح پایین REST و کتابخانههای API. این گزینهها برای توسعهدهندگانی است که ممکن است با جاوا برنامهنویسی نکنند یا کدبیس آنها با یک API REST یا یک کتابخانه سازگارتر باشد. برای ایجاد یک رابط هویت با استفاده از REST API، برای اطلاعات مربوط به نگاشت کاربران به Directory API: User Accounts و برای اطلاعات مربوط به نگاشت گروهها به Cloud Identity Documentation مراجعه کنید.
با استفاده از SDK رابط هویت، یک رابط هویت ایجاد کنید
یک رابط هویت معمولی وظایف زیر را انجام میدهد:
- کانکتور را پیکربندی کنید.
- همه کاربران را از سیستم هویت سازمانی خود بازیابی کنید و آنها را برای همگامسازی با هویتهای گوگل به گوگل ارسال کنید.
- تمام گروهها را از سیستم هویت سازمانی خود بازیابی کنید و آنها را برای همگامسازی با هویتهای گوگل به گوگل ارسال کنید.
وابستگیها را تنظیم کنید
برای استفاده از SDK باید وابستگیهای خاصی را در فایل ساخت خود لحاظ کنید. برای مشاهده وابستگیهای محیط ساخت خود، روی تب زیر کلیک کنید:
ماون
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-identity-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
گرادل
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-identity-connector-sdk',
version: 'v1-0.0.3'
پیکربندی کانکتور خود را ایجاد کنید
هر کانکتور یک فایل پیکربندی دارد که شامل پارامترهای مورد استفاده کانکتور، مانند شناسه مخزن شما، است. پارامترها به صورت جفتهای کلید-مقدار تعریف میشوند، مانند api.sourceId= 1234567890abcdef .
کیت توسعه نرمافزار جستجوی ابری گوگل (Google Cloud Search SDK) شامل چندین پارامتر پیکربندی ارائه شده توسط گوگل است که توسط همه کانکتورها استفاده میشود. شما باید پارامترهای ارائه شده توسط گوگل زیر را در فایل پیکربندی خود اعلام کنید:
- برای یک رابط محتوا، باید
api.sourceIdوapi.serviceAccountPrivateKeyFileرا تعریف کنید، زیرا این پارامترها محل مخزن شما و کلید خصوصی مورد نیاز برای دسترسی به مخزن را مشخص میکنند.
- برای یک رابط هویت، باید
api.identitySourceIdتعریف کنید زیرا این پارامتر محل منبع هویت خارجی شما را مشخص میکند. اگر کاربران را همگامسازی میکنید، بایدapi.customerIdنیز به عنوان شناسه منحصر به فرد برای حساب Google Workspace شرکت خود تعریف کنید.
مگر اینکه بخواهید مقادیر پیشفرض سایر پارامترهای ارائه شده توسط گوگل را لغو کنید، نیازی به اعلام آنها در فایل پیکربندی خود ندارید. برای اطلاعات بیشتر در مورد پارامترهای پیکربندی ارائه شده توسط گوگل، مانند نحوه تولید شناسهها و کلیدهای خاص، به پارامترهای پیکربندی ارائه شده توسط گوگل مراجعه کنید.
همچنین میتوانید پارامترهای مختص مخزن خود را برای استفاده در فایل پیکربندی خود تعریف کنید.
فایل پیکربندی را به کانکتور ارسال کنید
ویژگی config سیستم را طوری تنظیم کنید که فایل پیکربندی را به کانکتور شما منتقل کند. میتوانید این ویژگی را با استفاده از آرگومان -D هنگام شروع کانکتور تنظیم کنید. برای مثال، دستور زیر کانکتور را با فایل پیکربندی MyConfig.properties شروع میکند:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
اگر این آرگومان وجود نداشته باشد، SDK تلاش میکند به یک فایل پیکربندی پیشفرض با نام connector-config.properties دسترسی پیدا کند.
با استفاده از یک کلاس الگو، یک رابط هویت همگامسازی کامل ایجاد کنید
کیت توسعه نرمافزاری Identity Connector شامل یک کلاس الگوی FullSyncIdentityConnector است که میتوانید از آن برای همگامسازی همه کاربران و گروهها از مخزن identity با هویتهای گوگل استفاده کنید. این بخش نحوه استفاده از الگوی FullSyncIdentityConnector را برای انجام همگامسازی کامل کاربران و گروهها از یک مخزن identity غیر گوگل توضیح میدهد.
این بخش از مستندات به قطعه کدهایی از نمونه IdentityConnecorSample.java اشاره دارد. این نمونه، هویتهای کاربر و گروه را از دو فایل CSV میخواند و آنها را با هویتهای گوگل همگامسازی میکند.
نقطه ورود کانکتور را پیادهسازی کنید
نقطه ورود به یک کانکتور، متد main() است. وظیفه اصلی این متد ایجاد یک نمونه از کلاس Application و فراخوانی متد start() آن برای اجرای کانکتور است.
قبل از فراخوانی application.start() ، از کلاس IdentityApplication.Builder برای نمونهسازی الگوی FullSyncIdentityConnector استفاده کنید. FullSyncIdentityConnector یک شیء Repository را میپذیرد که متدهای آن را پیادهسازی خواهید کرد. قطعه کد زیر نحوه پیادهسازی متد main() را نشان میدهد:
در پشت صحنه، SDK متد initConfig() را پس از فراخوانی Application.build توسط متد main() کانکتور شما، فراخوانی میکند. متد initConfig() وظایف زیر را انجام میدهد:
- متد
Configuation.isInitialized()را فراخوانی میکند تا مطمئن شود کهConfigurationمقداردهی اولیه نشده است. - یک شیء
Configurationرا با جفتهای کلید-مقدار ارائه شده توسط گوگل مقداردهی اولیه میکند. هر جفت کلید-مقدار در یک شیءConfigValueدرون شیءConfigurationذخیره میشود.
پیادهسازی رابط Repository )
تنها هدف شیء Repository ، همگامسازی هویتهای مخزن با هویتهای گوگل است. هنگام استفاده از یک الگو، فقط باید متدهای خاصی را در رابط Repository برای ایجاد یک اتصالدهنده هویت، بازنویسی کنید. برای FullTraversalConnector ، احتمالاً متدهای زیر را بازنویسی خواهید کرد:
متد
init(). برای انجام هرگونه تنظیم و مقداردهی اولیه مخزن هویت، متد `init()` را بازنویسی کنید.متد
listUsers(). برای همگامسازی همه کاربران موجود در مخزن هویت با کاربران گوگل، متدlistUsers()را بازنویسی کنید.متد
listGroups(). برای همگامسازی همه گروههای موجود در مخزن هویت با گروههای گوگل، متدlistGroups()را بازنویسی کنید.(اختیاری) متد
close(). اگر نیاز به پاکسازی مخزن دارید، متدclose()را بازنویسی کنید. این متد یک بار در هنگام خاموش شدن کانکتور فراخوانی میشود.
دریافت پارامترهای پیکربندی سفارشی
به عنوان بخشی از مدیریت پیکربندی کانکتور، شما نیاز به دریافت پارامترهای سفارشی از شیء Configuration خواهید داشت. این کار معمولاً در متد init() کلاس Repository انجام میشود.
کلاس Configuration چندین متد برای دریافت انواع دادههای مختلف از یک پیکربندی دارد. هر متد یک شیء ConfigValue را برمیگرداند. سپس از متد get() شیء ConfigValue برای بازیابی مقدار واقعی استفاده خواهید کرد. قطعه کد زیر نحوه بازیابی مقادیر userMappingCsvPath و groupMappingCsvPath را از یک شیء Configuration نشان میدهد:
برای دریافت و تجزیه یک پارامتر حاوی چندین مقدار، از یکی از تجزیهکنندههای نوع کلاس Configuration برای تجزیه دادهها به تکههای گسسته استفاده کنید. قطعه کد زیر، از رابط آموزشی، از متد getMultiValue برای دریافت لیستی از نامهای مخزن GitHub استفاده میکند:
نقشه برداری را برای همه کاربران دریافت کنید
برای بازیابی نگاشت همه کاربران از مخزن هویت خود، تابع listUsers() را نادیده بگیرید. متد listUsers() یک نقطه بررسی (checkpoint) را میپذیرد که نشان دهنده آخرین هویتی است که باید همگامسازی شود. در صورت قطع شدن فرآیند، میتوان از این نقطه بررسی برای از سرگیری همگامسازی استفاده کرد. برای هر کاربر در مخزن خود، این مراحل را در متد listUsers() انجام خواهید داد:
- یک نگاشت شامل هویت گوگل و هویت خارجی مرتبط دریافت کنید.
- این جفت را در یک تکرارکننده که توسط متد
listUsers()برگردانده میشود، بستهبندی کنید.
نقشه کاربری دریافت کنید
قطعه کد زیر نحوه بازیابی نگاشتهای هویت ذخیره شده در یک فایل CSV را نشان میدهد:
بستهبندی نگاشت کاربر در یک تکرارکننده
متد listUsers() یک Iterator ، به طور خاص یک CheckpointCloseableIterable ، از اشیاء IdentityUser را برمیگرداند. میتوانید از کلاس CheckpointClosableIterableImpl.Builder برای ساخت و بازگرداندن یک iterator استفاده کنید. قطعه کد زیر نحوه بستهبندی هر نگاشت در لیست و ساخت iterator از آن لیست را نشان میدهد:
یک گروه دریافت کنید
برای بازیابی همه گروهها و اعضای آنها از مخزن هویت خود، تابع listGroups() را نادیده بگیرید. متد listGroups() یک Checkpoint میپذیرد که نشان دهنده آخرین هویتی است که باید همگامسازی شود. در صورت قطع شدن فرآیند، میتوان از Checkpoint برای از سرگیری همگامسازی استفاده کرد. برای هر کاربر در مخزن خود، این مراحل را در متد listGroups() انجام خواهید داد:
- گروه و اعضای آن را دریافت کنید.
- هر گروه و اعضا را در یک تکرارکننده که توسط متد
listGroups()برگردانده میشود، بستهبندی کنید.
دریافت شناسه گروه
قطعه کد زیر نحوه بازیابی گروهها و اعضای ذخیره شده در یک فایل CSV را نشان میدهد:
گروه و اعضا را در یک تکرارکننده بستهبندی کنید
متد listGroups() یک Iterator ، به طور خاص یک CheckpointCloseableIterable ، از اشیاء IdentityGroup را برمیگرداند. میتوانید از کلاس CheckpointClosableIterableImpl.Builder برای ساخت و بازگرداندن یک iterator استفاده کنید. قطعه کد زیر نحوه بستهبندی هر گروه و اعضا در یک لیست و ساخت iterator از آن لیست را نشان میدهد:
مراحل بعدی
در اینجا چند گام بعدی که میتوانید بردارید، آورده شده است:
- (اختیاری) متد close() را برای آزادسازی هرگونه منبع قبل از خاموش شدن پیادهسازی کنید.
- (اختیاری) با استفاده از کیت توسعه نرمافزار رابط محتوا (Content Connector SDK) ، یک رابط محتوا (content connector) ایجاد کنید .