丹麦数字图书馆 / 代理认证包
针对开放平台的机构认证
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
- symfony/cache: ^6.0
- symfony/config: ^6.0
- symfony/dependency-injection: ^6.0
- symfony/http-client: ^6.0
- symfony/http-foundation: ^6.0
- symfony/http-kernel: ^6.0
- symfony/security-core: ^6.0
- symfony/security-http: ^6.0
Requires (Dev)
- drenso/phan-extensions: ^3.1
- friendsofphp/php-cs-fixer: ^3.8
- symfony/phpunit-bridge: ^6.0
- vimeo/psalm: ^4.8
README
此包允许对开放平台(丹麦公共图书馆共享API)进行“机构”(图书馆)认证。为了使用此包,您必须从DBC获取一对CLIENT_ID / CLIENT_SECRET
。
该包验证机构访问令牌对开放平台的 introspection 终端。如果提供的令牌有效,则从 Symfony 的 安全组件 中可以获得一个带有 ROLE_OPENPLATFORM_AGENCY
的 User
对象。
注意
如果您需要“用户”(个人)认证,请使用 danskernesdigitalebibliotek/oauth2-adgangsplatformen
安装
使用 Composer 安装包:composer require danskernesdigitalebibliotek/agency-auth-bundle
包配置
添加一个 config/packages/ddb_agency_auth.yaml
文件
ddb_agency_auth: # Your client id supplied by DBC openplatform_id: '%env(OPENPLATFORM_ID)%' # Your client secret supplied by DBC openplatform_secret: '%env(OPENPLATFORM_SECRET)%' # The introspection URL to query against openplatform_introspection_url: 'https://login.bib.dk/oauth/introspection' # A comma separated allow list of CLIENT_IDs. An empty list allows all. openplatform_allowed_clients: '%env(OPENPLATFORM_ALLOWED_CLIENTS)%' # [Optional] A service id for the cache service to use for caching token/user pairs auth_token_cache: token.cache # [Optional] A service id for the logger to use for error logging. auth_logger: logger
在您的 .env
中添加
###> Openplatform ### OPENPLATFORM_ID=myId OPENPLATFORM_SECRET=mySecret OPENPLATFORM_INTROSPECTION_URL=https://login.bib.dk/oauth/introspection OPENPLATFORM_ALLOWED_CLIENTS='' ###< Openplatform ###
然后在实际的 .env.local
中设置值。(见基于环境变量的配置)
安全配置
根据您的需要,在您的 config/packages/security.yml
中配置防火墙、访问控制和角色。该包提供了一个可用的 TokenAuthenticator
,您可以使用它作为 自定义认证器,以及一个 OpenPlatformUserProvider
,您可以使用它作为 自定义用户提供者。如果认证成功,它将返回一个带有 ROLE_OPENPLATFORM_AGENCY
的 User
对象的 自我验证通行证。您可以使用 Symfony 的 层次角色 将此角色映射到您的应用程序的角色。
一个有效的安全配置可以是
security: # https://symfony.ac.cn/doc/current/security.html#where-do-users-come-from-user-providers providers: openplatform_provider: id: DanskernesDigitaleBibliotek\AgencyAuthBundle\Security\OpenPlatformUserProvider firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: stateless: true custom_authenticators: - DanskernesDigitaleBibliotek\AgencyAuthBundle\Security\TokenAuthenticator access_control: # Allows accessing the Swagger UI - { path: '^/api/docs', roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: '^/api', roles: ROLE_API_USER } role_hierarchy: ROLE_OPENPLATFORM_AGENCY: [ROLE_API_USER, ROLE_ENTRY_READ]
开发配置
此项目包含一个带有 PHP 7.4 映像的 docker-compose.yml
文件。要安装依赖项,您可以运行
docker compose up -d
docker compose exec phpfpm composer install
单元测试
此库包含一个 PhpUnit 设置。要运行单元测试
docker compose exec phpfpm composer install docker compose exec phpfpm ./vendor/bin/simple-phpunit
Psalm 静态分析
我们使用 Psalm 进行静态分析。要运行 psalm,请
docker compose exec phpfpm composer install docker compose exec phpfpm ./vendor/bin/psalm
检查编码标准
以下命令可让您测试代码是否遵循项目的编码标准。
-
PHP 文件(PHP-CS-Fixer)
docker compose exec phpfpm composer check-coding-standards
-
Markdown 文件(markdownlint 标准规则)
docker run -v ${PWD}:/app itkdev/yarn:latest install docker run -v ${PWD}:/app itkdev/yarn:latest check-coding-standards
应用编码标准
尝试自动修复编码风格
-
PHP 文件(PHP-CS-Fixer)
docker compose exec phpfpm composer apply-coding-standards
-
Markdown 文件(markdownlint 标准规则)
docker run -v ${PWD}:/app itkdev/yarn:14 install docker run -v ${PWD}:/app itkdev/yarn:14 apply-coding-standards
CI
GitHub Actions 用于在所有 PR 上运行测试套件和代码风格检查。
如果您想在本地上测试作业,您可以安装 act。然后执行
act -P ubuntu-latest=shivammathur/node:latest pull_request
版本控制
我们使用SemVer进行版本控制。有关可用的版本,请参阅此存储库中的标签。
许可证
本项目遵循AGPL-3.0许可证 - 详细信息请参阅LICENSE.md文件。