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
的类,当它由包运行时,它将决定是否注册连接中间件。
在使用过滤器之前,您必须将您的过滤器描述注册到服务工厂中。