nzta / silverstripe-okta-api
与Okta API的集成
Requires
- guzzlehttp/guzzle: ^7.0
- silverstripe/cms: ^4.2
- silverstripe/framework: ^4.2
- symbiote/silverstripe-queuedjobs: ^4.2
Requires (Dev)
- phake/phake: ^3.1
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3
README
提供与Okta API集成以及将Okta中的用户和组同步到SilverStripe数据库的能力。
Okta Users API的文档可以在这里找到。Okta Groups API的文档可以在这里找到
需求
SilverStripe 4.x
功能
- 队列任务以同步Okta用户到SilverStripe
- 队列任务以同步Okta组到SilverStripe
- 可配置队列任务的重新安排时间(用于按用户定义的时间间隔同步)
- 可配置将SilverStripe数据库字段映射到Okta API字段
- 可配置List Users API的缓存有效期
- 可配置要同步的状态列表
- CMS可配置的过滤器,用于定义要存储的同步组
安装
composer require nzta/silverstripe-okta-api
您需要在您的.env
文件中添加以下常量
SS_OKTA_GATEWAY_REST_URL="https://<organisation>.okta.com/api/v1/"
SS_OKTA_API_TOKEN="<token>"
其中{organisation}
是您的组织Okta子域,{token}
是您的API令牌,可以通过以下说明生成。
配置
您可以通过向您的mysite/_config/config.yml
中添加以下内容来更新您的成员字段映射
OktaProfileMemberExtension:
okta_ss_member_fields_name_map:
CustomField: 'customField'
ExtraCustomField: 'profile.extraCustomField'
其中CustomField
和ExtraCustomField
是SilverStripe Member数据库字段名称,而customField
和profile.extraCustomField
是Okta API返回的每个用户的键。在profile.extraCustomField
中的点表示法允许您映射到嵌套一级的字段,例如,在profile
顶级键内的extraCustomField
键。
注意:这会替换默认配置,因此如果您需要同步原始成员字段,例如FirstName、Surname和Email,则必须包含它们。
您可以通过向您的mysite/_config/config.yml
中添加以下内容来添加/更新额外的队列任务
SyncOktaUsersJob:
additional_job_list:
- 'AdditionalFirstJob'
- 'AdditionalSecondJob'
其中AdditionalFirstJob
和AdditionalSecondJob
是您可以在主任务(SyncOktaUsersJob
)完成后运行的额外SilverStripe QueuedJobs。您可以设置public $schedule_after
静态属性以延迟额外任务的启动时间。例如,设置public $schedule_after = 30
意味着附加任务将在主任务完成后30秒开始。
Okta组过滤器
您可以在CMS中创建过滤器来定义应保存到SilverStripe数据库中的组。这些过滤器通过定义一个Okta API组应匹配的键/值对来工作。这些过滤器配置为使用OR样式过滤器进行匹配,因此您可以创建多个过滤器,而Okta API中的每个组只需匹配其中一个过滤器。
这些过滤器可以在Okta Group Filters ModelAdmin中创建,每个过滤器都有一个Filter
和Value
字段,分别映射到相应的键/值对。