ima/keycloak-bearer-only-adapter-bundle

仅支持bearer类型的Keycloak安全适配器

v1.0.0 2023-12-18 19:22 UTC

This package is auto-updated.

Last update: 2024-09-19 11:56:30 UTC


README

此Symfony包是一个适配器,允许使用keycloak Bearer Only客户端来保护API。

安装

在安装包之前,可以通过以下命令激活自动包配置

composer config extra.symfony.allow-contrib true

使用composer

composer require ima/keycloak-bearer-only-adapter-bundle

配置

如果您想在本地设置Keycloak,可以在此下载它,并遵循官方文档中的说明。

包配置

通过食谱(自动)

此包有一个Symfony食谱,允许通过Symfony Flex Composer插件自动化配置。要为项目启用食谱,请运行以下命令

composer config extra.symfony.allow-contrib true

手动

如果您已经在本地或Docker中运行Keycloak并且已经配置了一个具有访问类型 = bearer-only的客户端,以下是使用此配置的步骤

# config/packages/ima_keycloak_bearer_only_adapter.yaml
ima_keycloak_bearer_only_adapter:
    issuer: '%env(OAUTH_KEYCLOAK_ISSUER)%' # your accessible keycloak url
    realm: '%env(OAUTH_KEYCLOAK_REALM)%' # your keycloak realm name
    client_id: '%env(OAUTH_KEYCLOAK_CLIENT_ID)%' # your keycloak client id
    client_secret: '%env(OAUTH_KEYCLOAK_CLIENT_SECRET)%' # your keycloak client secret
    #ssl_verification: False # by default ssl_verification is set to False

最佳实践是从.env文件加载您的配置。

# .env
...
###> Ima_keycloak_bearer_only_adapter ###
OAUTH_KEYCLOAK_ISSUER=keycloak:8080
OAUTH_KEYCLOAK_REALM=my_realm
OAUTH_KEYCLOAK_CLIENT_ID=my_bearer_client
OAUTH_KEYCLOAK_CLIENT_SECRET=my_bearer_client_secret
###< Ima_keycloak_bearer_only_adapter ###
...

自Keycloak 17以来,默认的发行版现在由Quarkus提供支持,而由WildFly支持的旧版发行版仍将存在,直到2022年6月
新的发行版引入了许多破坏性变更,包括

  • /auth从默认上下文路径中删除
    ⚠️ 如果您正在使用旧版,请确保将/auth包含在OAUTH_KEYCLOAK_ISSUER中
    例如:keycloak:8080/auth

如果在使用本地Docker中的Keycloak,请将issuer值替换为您的keycloak容器在网络中的引用

例如,您可以使用服务名称或容器IPAdresse,您可以使用以下命令获取它

docker inspect <container id> | grep "IPAddress"

Symfony安全配置

要使用Keycloak保护您的API,您必须更改symfony中的默认安全配置。

以下是一个简单的配置,仅将/api/*路由限制为具有角色ROLE_USER的用户

# config/packages/security.yaml
security:
    providers:
        keycloak_bearer_user_provider:
            id: IMA\Bundle\keycloakBearerOnlyAdapterBundle\Security\User\KeycloakBearerUserProvider
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        api:
            pattern: ^/api/
            provider: keycloak_bearer_user_provider
            custom_authenticators:
              - IMA\Bundle\keycloakBearerOnlyAdapterBundle\Security\Authenticator\KeycloakBearerAuthenticator
            stateless: true
    access_control:
        - { path: ^/api/, roles: [ROLE_USER] }

ℹ️ 请参阅Symfony 文档,角色必须以ROLE_开头(否则,事情可能不会按预期工作)

Keycloak配置

要配置Keycloak以与该包一起使用,请参阅此处的逐步文档,用于Keycloak的基本配置。

兼容性