pubpackage / okta-sdk-php
Okta API 的 PHP 包装器
Requires
- php: ^7.2
- cache/filesystem-adapter: ^1.0
- guzzlehttp/psr7: ^1.4
- illuminate/collections: ^8.0
- lcobucci/jwt: ^4.0@alpha
- league/flysystem-memory: ^1.0
- nesbot/carbon: ^2.0
- php-http/client-common: ^1.6
- php-http/curl-client: ^1.7
- php-http/discovery: ^1.2
- php-http/httplug: ^1.1
- php-http/message: ^1.5
- psr/cache: ^1.0
- psr/http-message: ^1.0
- symfony/yaml: ^3.2|^4.3|^5.2
Requires (Dev)
- php-http/mock-client: ^1.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: 3.*
- vlucas/phpdotenv: ^3.3|^4.1|^5.2
This package is auto-updated.
Last update: 2024-09-15 07:12:02 UTC
README
安装
okta-sdk-php 作为 okta/sdk 包在 Packagist 上可用。
在终端中从您项目的根目录运行 composer require okta/sdk
,然后您就完成了。
客户端初始化
一旦您在项目中安装了 SDK,您将需要实例化一个客户端对象。我们遵循构建器模式来构建客户端。您可以通过调用 ClientBuilder 并依赖 ~/.okta/okta.yaml 文件中的设置来创建客户端。
$client = (new \Okta\ClientBuilder()) ->build();
默认情况下,客户端构建器将在您的家目录中查找包含您想要使用的 Okta 属性的文件。此文件应放置在 ~/.okta/okta.yaml
。如果您在此位置不需要定义该位置,或者您无法放置该文件,或者您正在 Windows 系统上,您必须手动定义该文件的位置才能使用该文件。
$client = (new \Okta\ClientBuilder()) ->setConfigFileLocation('path/to/okta.yaml') ->build();
如果您需要覆盖 ~/.okta/okta.yaml
文件中的任何默认设置,或者您没有该文件,您可以直接在客户端构建器上设置属性。必需的最小属性是您的令牌和组织 URL。
$client = (new \Okta\ClientBuilder()) ->setToken('YourApiToken') ->setOrganizationUrl('https://dev-123456.oktapreview.com') ->build();
更改您的 Http 客户端实例
Okta PHP SDK 遵循 PSR-7 标准,对于 HTTP 消息。我们使用 Httplug,这使得您可以使用任何 PSR-7 兼容的 Http 客户端。创建一个 Http\Client\HttpClient
实现的新实例,并将其传递给客户端构建器。
$client = (new \Okta\ClientBuilder()) ->setHttpClient(new Http\Client\HttpClient()) ->build();
OAuth 2.0
Okta 允许您使用范围 OAuth 2.0 访问令牌与 Okta API 进行交互。每个访问令牌都允许携带者执行特定 Okta 端点的特定操作,该能力由访问令牌包含的权限范围控制。
此 SDK 仅为此服务到服务应用程序支持此功能。请查看 我们的指南,了解有关如何使用私有和公钥对注册新服务应用程序的更多信息。
使用此方法时,您不需要 API 令牌,因为 SDK 将为您请求访问令牌。为了使用 OAuth 2.0,通过传递以下参数构建客户端实例:
$client = (new \Okta\ClientBuilder) ->setAuthorizationMode(new \Okta\Utilities\AuthorizationMode(\Okta\Utilities\AuthorizationMode::PRIVATE_KEY)) ->setClientId({{clientId}}) ->setScopes("okta.users.read okta.apps.read") ->setPrivateKey("{{PEM PRIVATE KEY BLOCK}}") ->build();
用户
通过 ID 查找用户
$user = new \Okta\Users\User(); $foundUser = $user->get('00uak5dkxjhg4AQ230h7'); dump($foundUser);
通过电子邮件查找用户
$user = new \Okta\Users\User(); $foundUser = $user->get('email@example.com'); dump($foundUser);
创建用户
$user = new \Okta\Users\User(); $profile = new \Okta\Users\UserProfile(); $profile->setFirstName('John') ->setLastName('User') ->setLogin('auser@example.com') ->setEmail('auser@example.com'); $user->setProfile($profile); $credentials = new \Okta\Users\Credentials(); $password = new \Okta\Users\Password(); $password->setPassword('Abcd1234!'); $recoveryQuestion = new \Okta\Users\RecoveryQuestion(); $recoveryQuestion->setQuestion('What Language do I write in?') ->setAnswer('PHP!'); $provider = new \Okta\Users\Provider(); $provider->setName('OKTA') ->setType('OKTA'); $credentials->setPassword($password); $credentials->setRecoveryQuestion($recoveryQuestion); $credentials->setProvider($provider); $user->setCredentials($credentials); $user->setGroupIds([ '00gajavp1anBX8svy0h7', '00gajb08d19WCvbsC0h7' ]); $user->create();
更新用户配置文件
我们的 SDK 允许您填写默认配置文件字段,以及您在配置文件中创建的其他动态字段。
$user = new \Okta\Users\User(); $foundUser = $user->get('00uak5dkxjhg4AQ230h7'); $profile = $foundUser->getProfile(); $profile->middleName = 'Middle Name'; $profile->someField = 'Just Testing Field'; $foundUser->setProfile($profile); $foundUser->save();
分页和集合
我们所有返回一系列项的调用都将返回一个 Collection 对象。我们构建的集合对象是 tightenco/collect。
获取所有用户
$users = (new \Okta\Okta)->getUsers(); // get the first user in the collection $firstUser = $users->first();
缩小响应
从第二个条目开始,获取下一个两个条目
$users = (new \Okta\Okta)->getUsers(['query' => ['limit' = 2, 'after' = 2]]);
缓存
Okta PHP SDK允许任何带有自链接的资源默认进行缓存。SDK使用您希望使用的任何PSR-6缓存适配器。默认情况下,我们附带文件系统缓存池,以及flysystem内存适配器。通过这种方式,无需进行任何配置,但如果您希望使用自己的缓存策略或更改默认行为,您可以更换缓存管理器。创建一个新的缓存管理器,该管理器扩展了基本类\Okta\Cache\CacheManager
,并调用父类的方法setCachePool()
。这应该使用PSR-6兼容的缓存池实现的一个实例来调用。创建后,您可以使用ClientBuilder
类更换管理器
$clientBuilder = new ClientBuilder(); $clientBuilder->setCacheManager(new MyCacheManager()); $client = $clientBuilder->build();
okta.yaml文件的内容
okta: client: orgUrl: "https://{yourOktaDomain}" token: "{token}"
当您使用OAuth 2.0时,完整的YAML配置看起来像
okta: client: connectionTimeout: 30 # seconds orgUrl: "https://{yourOktaDomain}" proxy: port: null host: null username: null password: null authorizationMode: "PrivateKey" clientId: "{yourClientId}" Scopes: - scope.1 - scope.2 PrivateKey: "{PEM PRIVATE KEY}" requestTimeout: 0 # seconds rateLimit: maxRetries: 4
您也可以传递您的私钥pem文件的路径,而不是将pem字符串复制到YAML配置中,例如:
PrivateKey: /Path/to/privateKey.pem
有关查询属性可以包含什么信息,请访问我们的文档