我正在使用Symfony2(FOSRestBundle和FOSOAuthServerBundle)构建REST API,我不确定要为此服务使用哪种授权类型。
我会让其他开发者注册为用户。我正在查看GitHub,并且对于每个用户,他们在其设置中有一个名为“applications”的部分,允许添加应用程序,并返回client_id和client_secret。但AFAIK GitHub使用授权授权类型,这意味着您被发送到GitHub接受,然后使用身份验证代码重定向回您的应用程序(授权代码是永久存在还是什么?)。我不确定这是否是我正在寻找的。 p>
我想要的是一种方法,允许开发人员随身携带我的API,知道谁在访问(FOSUserBundle在这里很好地集成)以及他们可以做什么。
另外,我将拥有自己的基于浏览器的应用程序,Angular.js可能是开发人员可以注册的主要网站。它将进行API调用以显示任何开发日志的数据。我可以使用Node.js后端(需要它用于其他一些东西)所以实际的调用是从那里进行的,因为它似乎只是浏览器应用程序不是很安全。我在考虑使用Node.js后端的客户端凭据授权类型。
最后,我将拥有自己的移动应用程序与API交互。由于它是受信任的服务,因此应使用资源所有者凭据授权,对吧?
答案 0 :(得分:0)
我不确定我明白你的要求。据我了解,您的开发人员将拥有一个帐户,他们必须登录才能使用您的API。在这种情况下,Client Credentials似乎不合适,因为它不会识别开发人员而是客户端。客户端不代表用户,它代表“访问您的API的应用程序”(在您的情况下,您将拥有一个用于移动应用程序的客户端和一个用于Angular网站的客户端)。我会使用密码授予类型,不会将您重定向到外部服务。
当我必须为我的API实施OAuth2身份验证时,我发现this article非常有用,它基于Symfony2示例,但大多数解释适用于所有地方。