hwi_oauth 无法连接到 FOS_OAUTH_SERVER
hwi_oauth can't connect to FOS_OAUTH_SERVER
我看了几个集中登录服务的解决方案。
我的情况如下:
- login.domain.tld
下的中央登录
- backend.domain.tld下的后端
- 客户服务:support.domain.tld
- frontend.domain.tld下的前端
- accounts.domain.tld
下的帐户和发票
我按照配置中提到的正确路由设置了 Symfony oauth 服务器的朋友,包括表等。
我还为 backend.domain.tld
添加了 oauth 登录令牌等
据我所知,一切都按照预期的方式设置。 (配置不多)
在后端,我安装了版本 0 中的 hwi_oauth 包。6.x
这些是配置文件:
httplug.yaml:
httplug:
plugins:
redirect:
preserve_header: true
discovery:
client: 'auto'
clients:
default:
factory: 'httplug.factory.curl'
app:
http_methods_client: true
plugins:
- 'httplug.plugin.content_length'
- 'httplug.plugin.redirect'
hwi_special:
factory: 'httplug.factory.guzzle6'
config: # You pass here the Guzzle configuration, exactly like before.
timeout: 10
verify: false
max_redirects: 1
ignore_errors: false
HWI_oauth.yaml
hwi_oauth:
http:
client: httplug.client.hwi_special
firewall_names: [ main ]
resource_owners:
domain_oauth:
type: oauth2
client_id: '%env(OAUTH_CLIENT_ID)%'
client_secret: '%env(OAUTH_CLIENT_TOKEN)%'
access_token_url: '%env(OAUTH_PROVIDER)%'
authorization_url: '%env(OAUTH_AUTHORISATION)%'
options:
csrf: true
infos_url: '%env(OAUTH_USERINFO)%'
scope: "read"
user_response_class: HWI\Bundle\OAuthBundle\OAuth\Response\PathUserResponse
paths:
identifier: id
nickname: username
realname: fullname
需要 env 文件,因为我需要替换开发系统 urls(xxx.domain.test 及其高效的对应系统)
security.yaml
security:
access_control:
- path: ^/login
roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]
requires_channel: https
- path: ^/
roles: ROLE_STAFF
requires_channel: https
providers:
domain_provider:
entity:
class: Domain\Library\EntitiesBundle\Entities\User\User
property: email
# - { path: ^/admin, roles: ROLE_ADMIN }
# - { path: ^/profile, roles: ROLE_USER }
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
oauth:
resource_owners:
domain_oauth: "/login/domainLogin"
login_path: "/login"
use_forward: true
failure_path: "/login"
oauth_user_provider:
service: Domain\Library\ClientAuthBundle\Authorisation\HwiOAuthProvider
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
role_hierarchy:
ROLE_GUEST:
ROLE_USER: [ ROLE_GUEST ]
ROLE_STAFF: [ ROLE_USER ]
Bundle Domain\Library\EntitiesBundle\Entities\User\User 是一个包含所有迁移数据和实体表的私有 Bundle。
最后但同样重要的是 twi_oauth_routing.yaml
# app/config/routing.yml
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect_41.xml"
prefix: /connect
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect_41.xml"
prefix: /connect
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login_41.xml"
prefix: /login
domain_oauth_login:
path: /login/domainLogin
我目前面临的困难是,当我调用 backend.domain.test/login 时,我无法在登录系统上看到连接尝试
我看到 link 指向 /connect/domain-oauth (我从未在任何地方配置过)。
如果我点击它,它会将我重定向到 /login
但是我在日志中没有看到连接。
有什么线索是我监督的吗?
我想让它工作大约一个星期。
完成了几个示例,但我无法使其正常工作。
感谢任何帮助。
软件:Symfony 4.2,PHP7.3 MySQL 8,Redis 作为缓存
更新:到目前为止我能够让它工作。
我缺少一个 access_control 路径规则到 /connect/.... path.
现在我可以看到允许/拒绝按钮。
但是只要我允许,我就会在分析器中得到以下 url bevor 它被重定向到登录页面:
我错过了什么?
我不知道这个错误想告诉我什么。
问题已解决。
与防火墙设置相关的问题以及由于缺少授权范围而导致的问题。
我看了几个集中登录服务的解决方案。
我的情况如下:
- login.domain.tld 下的中央登录
- backend.domain.tld下的后端
- 客户服务:support.domain.tld
- frontend.domain.tld下的前端
- accounts.domain.tld 下的帐户和发票
我按照配置中提到的正确路由设置了 Symfony oauth 服务器的朋友,包括表等。
我还为 backend.domain.tld
添加了 oauth 登录令牌等据我所知,一切都按照预期的方式设置。 (配置不多)
在后端,我安装了版本 0 中的 hwi_oauth 包。6.x
这些是配置文件:
httplug.yaml:
httplug:
plugins:
redirect:
preserve_header: true
discovery:
client: 'auto'
clients:
default:
factory: 'httplug.factory.curl'
app:
http_methods_client: true
plugins:
- 'httplug.plugin.content_length'
- 'httplug.plugin.redirect'
hwi_special:
factory: 'httplug.factory.guzzle6'
config: # You pass here the Guzzle configuration, exactly like before.
timeout: 10
verify: false
max_redirects: 1
ignore_errors: false
HWI_oauth.yaml
hwi_oauth:
http:
client: httplug.client.hwi_special
firewall_names: [ main ]
resource_owners:
domain_oauth:
type: oauth2
client_id: '%env(OAUTH_CLIENT_ID)%'
client_secret: '%env(OAUTH_CLIENT_TOKEN)%'
access_token_url: '%env(OAUTH_PROVIDER)%'
authorization_url: '%env(OAUTH_AUTHORISATION)%'
options:
csrf: true
infos_url: '%env(OAUTH_USERINFO)%'
scope: "read"
user_response_class: HWI\Bundle\OAuthBundle\OAuth\Response\PathUserResponse
paths:
identifier: id
nickname: username
realname: fullname
需要 env 文件,因为我需要替换开发系统 urls(xxx.domain.test 及其高效的对应系统)
security.yaml
security:
access_control:
- path: ^/login
roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]
requires_channel: https
- path: ^/
roles: ROLE_STAFF
requires_channel: https
providers:
domain_provider:
entity:
class: Domain\Library\EntitiesBundle\Entities\User\User
property: email
# - { path: ^/admin, roles: ROLE_ADMIN }
# - { path: ^/profile, roles: ROLE_USER }
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
oauth:
resource_owners:
domain_oauth: "/login/domainLogin"
login_path: "/login"
use_forward: true
failure_path: "/login"
oauth_user_provider:
service: Domain\Library\ClientAuthBundle\Authorisation\HwiOAuthProvider
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
role_hierarchy:
ROLE_GUEST:
ROLE_USER: [ ROLE_GUEST ]
ROLE_STAFF: [ ROLE_USER ]
Bundle Domain\Library\EntitiesBundle\Entities\User\User 是一个包含所有迁移数据和实体表的私有 Bundle。
最后但同样重要的是 twi_oauth_routing.yaml
# app/config/routing.yml
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect_41.xml"
prefix: /connect
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect_41.xml"
prefix: /connect
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login_41.xml"
prefix: /login
domain_oauth_login:
path: /login/domainLogin
我目前面临的困难是,当我调用 backend.domain.test/login 时,我无法在登录系统上看到连接尝试 我看到 link 指向 /connect/domain-oauth (我从未在任何地方配置过)。 如果我点击它,它会将我重定向到 /login 但是我在日志中没有看到连接。
有什么线索是我监督的吗? 我想让它工作大约一个星期。 完成了几个示例,但我无法使其正常工作。
感谢任何帮助。
软件:Symfony 4.2,PHP7.3 MySQL 8,Redis 作为缓存
更新:到目前为止我能够让它工作。 我缺少一个 access_control 路径规则到 /connect/.... path.
现在我可以看到允许/拒绝按钮。
但是只要我允许,我就会在分析器中得到以下 url bevor 它被重定向到登录页面:
我错过了什么? 我不知道这个错误想告诉我什么。
问题已解决。
与防火墙设置相关的问题以及由于缺少授权范围而导致的问题。