mohammad-waleed / keycloak-admin-client
轻松连接到 keycloak 管理API
v0.38.0
2024-04-02 12:36 UTC
Requires
- php: >=5.6.0
- guzzlehttp/guzzle: ^6.0 || ^7.0
- guzzlehttp/guzzle-services: ^1.0
- dev-develop
- v0.38.0
- v0.37.0
- v0.36.0
- v0.35.0
- v0.34.0
- v0.33.0
- v0.32.0
- v0.31.0
- v0.30.0
- v0.29.0
- v0.28.0
- v0.27.0
- v0.26.0
- v0.25.0
- v0.24.0
- v0.23.0
- v0.22.0
- v0.21.0
- v0.20.0
- v0.19.0
- v0.18.0
- v0.17.0
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.0
- v0.12.0
- v0.11.0
- v0.10.0
- v0.9.0
- v0.8.0
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.0
- v0.0.1
- dev-master
This package is auto-updated.
Last update: 2024-09-18 10:37:44 UTC
README
介绍
这是一个无需头痛即可连接到 keycloak 管理REST API的 PHP客户端。
功能
- 易于使用
- 无需获取令牌或生成它 - 客户端已处理
- 无需指定除基本URI以外的任何URL
- 无需对 JSON 进行编码/解码,只需按预期提供数据
与 Keycloak 7.0+ 管理REST API 兼容。
https://keycloak.com.cn/documentation -> "Administration REST API"
如何使用
1. 创建新客户端
$client = Keycloak\Admin\KeycloakClient::factory([ 'realm' => 'master', 'username' => 'admin', 'password' => '1234', 'client_id' => 'admin-cli', 'baseUri' => 'http://127.0.0.1:8180', ]);
从版本 0.30 开始,如果您的 Keycloak 基础URL以 auth/
开头,请将其添加到 baseUri
(例如,http://127.0.0.1:8180/auth/)。Keycloak 7 到 16 版本的基础URL系统性地为 auth/
。在 Keycloak 17+ 中,这取决于您的设置。
2. 使用它
$client->getUsers(); //Result // Array of users /* [ [ "id" => "39839a9b-de08-4d2c-b91a-a6ce2595b1f3", "createdTimestamp" => 1571663375749, "username" => "admin", "enabled" => true, "totp" => false, "emailVerified" => false, "disableableCredentialTypes" => [ "password", ], "requiredActions" => [], "notBefore" => 0, "access" => [ "manageGroupMembership" => true, "view" => true, "mapRoles" => true, "impersonate" => true, "manage" => true, ], ], ] */ $client->createUser([ 'username' => 'test', 'email' => 'test@test.com', 'enabled' => true, 'credentials' => [ [ 'type'=>'password', 'value'=>'1234', ], ], ]);
定制
支持的凭证
您可以通过更改 keycloak 客户端配置来更改用于身份验证的凭证类型。
目前,以下凭证被支持
- 密码凭证,默认使用
- 用于通过用户帐户进行身份验证
$client = Keycloak\Admin\KeycloakClient::factory([ ... 'grant_type' => 'password', 'username' => 'admin', 'password' => '1234', ]);
- 客户端凭证
- 用于通过客户端服务帐户进行身份验证
$client = Keycloak\Admin\KeycloakClient::factory([ ... 'grant_type' => 'client_credentials', 'client_id' => 'admin-cli', 'client_secret' => '84ab3d98-a0c3-44c7-b532-306f222ce1ff', ]);
注入中间件
您可以通过使用 middlewares
关键字在 keycloak 客户端配置中注入 Guzzle 客户端中间件。
例如
use GuzzleHttp\Middleware; use Psr\Http\Message\RequestInterface; $client = Keycloak\Admin\KeycloakClient::factory([ ... 'middlewares' => [ // throws exceptions when request fails Middleware::httpErrors(), // other custom middlewares Middleware::mapRequest(function (RequestInterface $request) { return $request; }), ], ]);
更改令牌的保存和存储方式
默认情况下,令牌在运行时保存。这意味着在创建新客户端时不会使用之前的令牌。
您可以通过实现自己的 TokenStorage
(一个描述令牌如何存储和检索的接口)来自定义客户端配置中令牌的存储方式。
class CustomTokenStorage implements TokenStorage { public function getToken() { // TODO } public function saveToken(array $token) { // TODO } } $client = Keycloak\Admin\KeycloakClient::factory([ ... 'token_storage' => new CustomTokenStorage(), ]);
自定义 Keycloak 端点
您可以通过使用 custom_operations
关键字在 keycloak 客户端配置中注入 Guzzle 服务操作。这样,您可以通过自定义扩展内置支持的端点。
$client = KeycloakClient::factory([ ... 'custom_operations' => [ 'getUsersByAttribute' => [ 'uri' => '/auth/realms/{realm}/userapi-rest/users/search-by-attr', 'description' => 'Get users by attribute Returns a list of users, filtered according to query parameters', 'httpMethod' => 'GET', 'parameters' => [ 'realm' => [ 'location' => 'uri', 'description' => 'The Realm name', 'type' => 'string', 'required' => true, ], 'attr' => [ 'location' => 'query', 'type' => 'string', 'required' => true, ], 'value' => [ 'location' => 'query', 'type' => 'string', 'required' => true, ], ], ], ] ]);
支持的API
攻击检测
认证管理
客户端属性证书
客户端初始访问
客户端注册策略
客户端角色映射
客户端作用域
客户端
组件
组
身份提供者
密钥
协议映射器
注意:Ids 以 clientScopeId 或 clientId 发送,mapperId,其余的都如 Keycloak 文档中所述