丹麦数字图书馆/代理认证包

针对开放平台的机构认证

3.0.0 2022-07-05 13:36 UTC

This package is auto-updated.

Last update: 2024-09-05 18:07:57 UTC


README

Github Release PHP Version Build Status Codecov Code Coverage Read License Package downloads on Packagist

此包允许对开放平台(丹麦公共图书馆共享API)进行“机构”(图书馆)认证。为了使用此包,您必须从DBC获取一对CLIENT_ID / CLIENT_SECRET

该包验证机构访问令牌对开放平台的 introspection 终端。如果提供的令牌有效,则从 Symfony 的 安全组件 中可以获得一个带有 ROLE_OPENPLATFORM_AGENCYUser 对象。

注意

如果您需要“用户”(个人)认证,请使用 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_AGENCYUser 对象的 自我验证通行证。您可以使用 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文件。