ima / keycloak-bearer-only-adapter-bundle
仅支持bearer类型的Keycloak安全适配器
v1.0.0
2023-12-18 19:22 UTC
Requires
- php: >=8.2
- ext-json: *
- symfony/config: ^7.0
- symfony/dependency-injection: ^7.0
- symfony/http-client: ^7.0
- symfony/http-kernel: ^7.0
- symfony/security-bundle: ^7.0
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的基本配置。