fei / connect-package
Objective PHP 应用程序的连接客户端包集成
Requires
- php: >=7.0
- ext-openssl: *
- fei/connect-client: ^4.3.2
- objective-php/application: ^2.0
- objective-php/config: >= 2.0 < 2.0.2
Requires (Dev)
- dev-master
- v3.1.0
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.4.0
- v2.3.0
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.2
- v2.0.1
- v2.0.0
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.0
- dev-dependabot/composer/guzzlehttp/guzzle-6.5.8
- dev-dependabot/composer/guzzlehttp/psr7-1.8.5
- dev-dependabot/composer/codeception/codeception-3.1.3
- dev-feature/update_connect_client
- dev-fix/dependencies
- dev-master_v2
This package is auto-updated.
Last update: 2024-09-21 22:16:36 UTC
README
本包为Objective PHP v2应用程序提供连接客户端集成。
使用Connect包,您的Objective PHP应用程序可以集成SAML标准协议并充当服务提供商。
安装
Connect包需要PHP 7.0或更高版本,且需要安装openssl扩展才能正常运行。
您需要使用composer require fei/connect-package将其集成到您的Objective PHP项目中。
集成
为了正常工作,Connect包必须在您的应用程序中注册。
<?php namespace Fei\Service\Project; use ObjectivePHP\Application\AbstractHttpApplication; use Fei\Service\Connect\Package\ConnectPackage; /** * Class Application * * @package Showcase */ class Application extends AbstractHttpApplication { public function init() { $this->registerPackage(new ConnectPackage()); // Register other stuff } }
通过注册Connect包,您的应用程序将获得
- Connect-Client、Connect-Config和Connect-User服务及其关联的注入器
- 如果您的应用程序是HTTP应用程序(扩展
ObjectivePHP\Application\AbstractHttpApplication),Connect包的中间件
连接服务
Connect包公开了3个服务(有关服务名称用途的配置部分请参阅)
connect.config:这是注入到Connect-Client构造函数中的配置实例connect.client:用于获取Connect-User实例的Connect-Client实例connect.user:代表您的应用程序用户的当前身份的Connect-User实例
注入器
注入器是Objective-PHP服务工厂的一个出色功能。通过注入器,服务工厂将服务注入到正确的依赖项中。以下是一个示例
<?php namespace Fei\Service\Project\Services; use Fei\Service\Connect\Package\UserAwareInterface; use Fei\Service\Connect\Package\UserAwareTrait; /** * Class Application * * @package Showcase */ class MyService implements UserAwareInterface { use UserAwareTrait; public function myBusinessMethod() { // Doing my business $this->getUser(); // Returns Connect-User service instance // Doing other business stuff } }
通过实现Fei\Service\Connect\Package\UserAwareInterface,服务工厂将Connect-User服务的当前实例注入到您的服务中,通过注入器。
Connect包注册了2个注入器
Fei\Service\Connect\Package\Injector\UserAwareInjector:将Connect-User服务注入到实现Fei\Service\Connect\Package\UserAwareInterface接口的服务中。Fei\Service\Connect\Package\Injector\ConnectAwareInjector:将Connect-Client服务注入到实现Fei\Service\Connect\Package\ConnectAwareInterface接口的服务中。
通常,您会偏好注入Connect-User服务。这样,您将减少服务层与Connect-Client的耦合。
禁用连接行为和模拟用户
您可以禁用中间件并因此禁用连接行为。这在开发环境中很常见(例如,Connect-IDP未安装)。
如果您禁用中间件,Connect包将用您可以配置的模拟Connect-User实例替换Connect-User实例。
这样,您的应用程序将像连接到Connect-IDP一样工作。
配置
Connect包如下所示
{
"connect": {
"enable": true,
"name": "SP name",
"entity_id": "http://sp.com",
"idp_entity_id": "http://idp.com",
"client_service_id": "connect.client",
"config_service_id": "connect.config",
"user_service_id": "connect.user",
"mock_user" : {
"username": "Gauthier",
"current_role": "SUPER_ADMIN"
},
"default_target_path": "/",
"logout_target_path": "/",
"profile_association_path": "/connect/profile",
"profile_association_service_id": "connect.profile-association",
"saml_metadata_basedir": "app/config/Saml/metadata",
"sp_metadata_file": "sp.xml",
"idp_metadata_file": "idp.xml",
"idp_metadata_file_target": "/idp.xml",
"private_key_file_path": "/some/path/key/key.pem",
"admin_path_info": "/connect/admin",
"allowed_roles": ["USER", "ADMIN"],
"filters": ["service.filter.first", "service.filter.second"]
}
}
关于过滤器的最后一点
是的,是的,从这个点开始,您将准备好使用Connect包并享受Objective-PHP。
所以过滤器...
过滤器是一种激活或禁用连接中间件的方式。它具有与enable选项相同的效果,但具有执行上下文(例如,禁用API调用时的连接)。
过滤器是一个实现了ObjectivePHP\Filter\FilterInterface的类,当它由包运行时,它将决定是否注册连接中间件。
在使用过滤器之前,您必须将您的过滤器描述注册到服务工厂中。