6
我試圖創建基於FOSOauthServerBundle
,FOSRestBundle
和FOSUserBundle
的oauth2服務器。我創建演示應用程序來測試我oauth-server
和它未能通過接收數據的GET reguest訪問oauth2服務器中的/ api方法
(接收401錯誤「的錯誤=‘ACCESS_DENIED’,ERROR_DESCRIPTION =‘的OAuth2 需要認證’」),
儘管用戶已通過身份驗證並且客戶端已正確收到訪問令牌。
我該如何實現api控制器,以便oauth2執行認證過程?
此外,我想看看基於這些捆綁的真正的工作oauth服務器示例,所以我將能夠檢查我的應用程序。
我security.yml:
jms_security_extra:
secure_all_services: false
expressions: true
security:
acl:
connection: default
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
fos_userbundle:
id: fos_user.user_provider.username
encoders:
FOS\UserBundle\Model\UserInterface: sha512
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
api:
pattern: ^/api
fos_oauth: true
stateless: true
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: /oauth/v2/auth_login_check
login_path: /oauth/v2/auth_login
use_referer: true
anonymous: true
oauth_token:
pattern: ^/oauth/v2/token
security: false
secured_area:
pattern: ^/
anonymous: ~
form_login:
provider: fos_userbundle
check_path: /login_check
login_path: /login
always_use_default_target_path: true
default_target_path:/
access_control:
- { path: ^/oauth/v2/auth_login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/oauth/v2/auth, role: ROLE_USER }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
- { path: ^/, roles: ROLE_USER }
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }
感謝。
解決了它。問題在於我沒有將訪問令牌作爲參數發送給我的請求,而是將其設置在標題處。 – user1976651
也許你可以回答你自己的問題,以幫助其他人嘗試相同的問題。 –
@ user1976651您可以與我們分享在請求中傳遞訪問令牌的代碼嗎?此代碼是JavaScript? –