asmud / keycloak-admin
轻松连接到keycloak管理API - 补丁安装到mohammad-waleed/keycloak-admin-client
v0.40
2023-08-02 09:16 UTC
Requires
- php: >=5.6.0
- guzzlehttp/guzzle: ^6.0 || ^7.0
- guzzlehttp/guzzle-services: ^1.0
- dev-master
- v0.40
- v0.39.0
- 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
This package is auto-updated.
Last update: 2024-10-02 10:07:09 UTC
README
简介
这是一个无需烦恼即可连接到keycloak管理REST API的PHP客户端。
特性
- 易于使用
- 无需获取或生成令牌 - 客户端已处理
- 无需指定除基本URI之外的任何URL
- 无需对JSON进行编码/解码,只需按预期提供数据
与Keycloak 7.0+ 管理REST API兼容。
https://keycloak.com.cn/documentation -> "管理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文档相同