问题标签 [fosoauthserverbundle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
510 浏览

php - Doctrine 不映射来自 FOSUserBundle 和 FOSOAuthServerBundle 的字段

我正在使用 Symfony 2.8、FOSUserBundle 1.3 和 FOSOAuthServerBundle 1.5

对于这些 Bundles 工作所需的所有类,我最终发现学说没有正确更新我的模式。我的意思是它没有考虑基类中的字段。

这是我的配置:

这是我的班级用户

所以,是的,我确实使用了正确的用法,而不是 FOS\UserBundle\Model\User 作为 BaseUser;

OAuthServerBundle 的类也是一样的:(我只是在这里放一个,它们都遵循相同的模式)

有谁知道为什么基类的字段没有放入我的数据库中?谢谢 :)

0 投票
2 回答
703 浏览

symfony - FOSOAuthServerBundle vs Symfony3 Security howto

我已经成功地使用 Symfony2.8 实现了 FOSOAuthServerBundle 并且它有效。当我尝试使用 Symfony3.2 时,我遇到了错误:

试图从命名空间“Symfony\Component\Security\Core”加载类“SecurityContext”。您是否忘记了另一个名称空间的“使用”语句?

所以我用谷歌搜索,现在知道 Symofny 3.2 中不再存在 SecurityContext 了。但是在 FOSOAuthServerBundle 官方文档“A Note About Security”中仍然存在函数 loginAction() 只能与 symfony2 压缩。

问题是: - 我可以将此捆绑包与 Symfony 3.2 一起使用吗?- 如果是,是否有任何文档如何做到这一点,或者更好的例子?

非常感谢您的回答

0 投票
2 回答
436 浏览

symfony - Symfony Security FOSOAuthServerBundle 公共和私有路由

我正在为我的 REST 应用程序使用 FOSOAuthBundle

我希望我的大多数路线都需要授权,但是有一些路线应该可以公开访问

我的 security.yml 中有以下内容:

例如:

我有一个产品EntityController

我希望这些CRUD操作是私有的,除了Read

所以:POST, PUT, DELETE on /products(/:id)应该是私有的,而GET应该是公共的。

我尝试将以下内容添加到 access_control:

我以为这会全部打开methods/products但出现错误:

我有很多entitiescontrollers我正在尝试将其应用于。

我将如何打开特定路线(包括method要求)?

0 投票
0 回答
151 浏览

mongodb - 自定义 WebserviceUserProvider 和 FOSAuthServerBundle

我正在使用基于本教程 https://gist.github.com/tjamps/11d617a4b318d65ca583的 SF2.8 API,但我使用的是 MongoDB。

当 FOSUser(使用 oAuth 表在我的数据库 A 上创建)连接到我的 API 时,我没有所需的所有信息,因为还有其他数据库。

我找到了一个 SF 文档,它解释了如何通过用自定义用户提供程序替换默认 FOS 用户提供程序来自定义 symfony 默认身份验证。

所以我决定在这个文档上创建相同的架构:http: //symfony.com/doc/2.8/security/custom_provider.html

在通过 HTTP Post 请求在 /oauth/v2/token 中询问我的 oAuth 令牌之前,我重写的 loadUserByUsername 方法调用外部 API 并实例化一个 WebserviceUser,其中包含用户公司的集合以及需要用户名、密码、盐等基本字段连接。

在 loadUserByUsername 调用之后,oAuth 尝试将生成的 accesstoken 到连接用户刷新到 DB 中,但是抛出异常,因为要在 AccessToken 文档中持久保存的 User 文档是 AppBundle\Security\User\WebserviceUser 而不是 AppBundle\Document\User (child FOSUser 文档),因此映射在持久化时失败。

我懂了 :

在链配置的命名空间 AppBundle\Document、FOS\UserBundle\Document、FOS\OAuthServerBundle\Document 中找不到类“AppBundle\Security\User\WebserviceUser”(500 内部服务器错误)

我做错什么了吗 ?

编辑:我的新 loadUserByUsername 方法:

fos_oauth_server yml 配置:

services.yml 配置:

security.yml 配置:

0 投票
1 回答
593 浏览

php - OAuthStorage::__construct() 必须实现接口 UserProviderInterface,给定 UserManager 的实例

我正在使用 OAuth 授权开发一个简单的 rest API。

我按照以下教程设置了所有内容(我从一个干净安装的 symfony 3 应用程序开始)

https://gist.github.com/tjamps/11d617a4b318d65ca583

安装完所有内容后,我通过以下方式更改了 config.yml

我还更改了security.yml以允许登录时使用用户名和电子邮件

现在我收到以下错误:

致命错误:未捕获的异常“Symfony\Component\Debug\Exception\ContextErrorException”和消息“可捕获的致命错误:参数 5 传递给FOS\OAuthServerBundle\Storage\OAuthStorage::__construct()必须实现接口Symfony\Component\Security\Core\ User\UserProviderInterface,给定的 FOS\UserBundle\Doctrine\UserManager 实例,在/Users/%username/rai-api/var/cache/prod/appProdProjectContainer.php的第 1614 行调用,并在/Users/%username/中定义rai-api/vendor/friendsofsymfony/oauth-server-bundle/Storage/OAuthStorage.php 第 80 行

我正在使用 symfony 3.2

0 投票
1 回答
80 浏览

php - 如何使用 FOSOAuthServerBundle 在 Symfony 3 中获取 AuthorizationCode GrantType

我正在尝试为基于 FOSOAuth 的具有 OAuth2 支持的 Symfony3 REST 应用程序构建引导程序。我目前的实施基于以下来源:

  1. git:maxpou docker-symfony用于 Docker 设置
  2. symfony.com - CustomUserProvider为自己的 Userprovider
  3. 导致您卡住 - oauth2 解释了 OAuth 配置
  4. bitgandtter.blog - Symfony 中用于 OAuth的宁静应用程序

并且可以在这里找到自述文件中描述的所有设置步骤。

客户端凭据登录现在正在工作,但是我遇到了 AuthorizationCode 流问题,它没有重定向到导致您卡住 - AuthorizationCodeclient.local中描述的那样,而是再次重定向到-Route。我认为 FOSOAuth 正在捕获请求并将其重定向到auth_loginclient.local

因为涉及到这么多组件,所以我放弃发布代码片段并请参考git 存储库

提前感谢您提供的任何帮助!

0 投票
2 回答
809 浏览

symfony - Angular2 和 symfony3 FOSOAuthServerBundle 授权

我想将我的 angular2 前端应用程序与 symfony 后端连​​接起来。所以我使用 FOSOAuthServerBundle ( https://github.com/FriendsOfSymfony/FOSOAuthServerBundle ) 来授权我的前端应用程序,但我不清楚如何实现这一点。

  1. 我尝试了“令牌”端点方法,但我必须从我的 angular2 应用程序发送 client_id 和 client_secret。而且我认为将 client_secret 公开存储是不好的。

  2. “授权”端点不使用 client_secret,但要求登录表单,这对我的情况不利。

  3. 我尝试了自定义授权扩展,但 FOSOAuthServerBundle 还需要使用 client_secret 验证客户端。

使用 symfony 授权 angular2 的最佳实践是什么?可以在前端存储client_secret吗?或者我应该扩展 FOSOAuthServerBundle 并删除 client_secret 检查?

0 投票
1 回答
313 浏览

javascript - Javascript 应用程序中 OAuth 2 身份验证的最佳安全实践

我有一个带有 OAuth 2 身份验证机制的 REST API(Symfony 3 应用程序上的 FOSOAuthServerBundle)。

要获取/刷新令牌,URL 如下所示:https://api.example.com/oauth/v2/token?grant_type=[password|refresh_token]&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]

这在服务器到服务器调用上效果很好,但不能应用于 Javascript 应用程序。

如何从前端应用程序实现 API Oauth 2 身份验证?(JWT 不存在于服务器上)。

0 投票
1 回答
1168 浏览

symfony - 使用 FOSUserBundle + FOSOAuthServerBundle 的用户身份验证流程

我一直在努力设置 FOSUserBundle/RestBundle/OAuthServerBundle 三重奏,以创建一个无头后端,然后我可以在其上放置一个单独的前端,并最终扩展到移动设备和可能的第三方 API 访问。我根据可用的各种资源和说明进行了常规配置,并且可以使用客户端凭据生成访问令牌。

正在添加的应用程序是一个现有的应用程序,它使用标准 Symfony/Twig 进行前端/后端交互并使用 FOSUserBundle 进行身份验证。

我有两个与身份验证流程有关的问题。

  1. 我希望用户能够访问 API 的某些部分而无需通过客户端级别的身份验证,并且某些部分将需要用户级别的身份验证来验证他们拥有所请求的资源。我没有找到一种方法来做到这一点。我发现帖子谈论了这种可能性,但没有给出任何关于如何实现它的方向。我相信我需要在控制器级别检查适当的访问权限,也许使用自定义选民,因为在与客户端进行身份验证后,检查“IS_AUTHENTICATED_FULLY”会返回为真。我希望能够以编程方式对用户进行身份验证,绕过 UI 登录表单——这可能只是覆盖 FOSUserBundle 登录控制器,但我不确定。
  2. 我要么需要创建一个没有访问令牌过期的客户端,要么找到一种方法来实现刷新令牌。我真的不明白为什么我自己的应用程序需要刷新令牌,但如果这是执行此操作的标准方法,我可以遵循以下规范。

下面是一些相关代码,但总的来说,这些代码是从 FOSOAuthServer 设置指南复制过来的漂亮的标准内容。

安全.yml

config.yml 片段

0 投票
1 回答
314 浏览

rest - FOSOAuthServerBundle + FOSRestBundle + CamelCase = 不认证

我一直在 Symfony 2.8 中的服务器上工作,构建了一个以 camelCase 样式返回 json 对象的 rest api,现在的问题是,当我集成 OauthServer 捆绑包时,它会引发这个错误Invalid grant_type parameter or parameter missing",我知道这是因为我正在使用array_normalizer: fos_rest.normalizer.camel_keys body我的fos_rest配置中的监听器。这是我的代码configuration.yml

这里是我的 Oauth 配置security.yml

我发现我不是第一个发生这种情况的人,并且zone添加了该属性来缓解这种情况,但在我的情况下,它只适用于 下的所有内容,^/api因为当我更改模式时,它会按预期停止使用侦听器但是当我调用^/oauth/v2/token路径时,它似乎忽略了zone给定的路径。

为了检索我的令牌,我使用了下一个 POST 请求:

我想澄清一下,如果我停用侦听器,我会成功获得令牌,但我的应用程序的其余部分会停止工作,因为它在任何地方都使用 camelCase,我知道一旦替代方法是在客户端序列化我的数据,但它是目前很复杂。

我究竟做错了什么?我无法弄清楚我错过了什么。