我正在尝试将OAuth2用于我正在创建的API,但可以使用一些解释流程如何工作。我发现了类似的问题(例如:Securing my REST API with OAuth while still allowing authentication via third party OAuth providers (using DotNetOpenAuth))但是他们没有说清楚第三方登录。
我不希望使用OpenID(但是,无论如何),特别是当通过委派进行身份验证可能正常工作时。它似乎过于复杂,并没有很多支持良好的库。 (我正在使用PHP + Laravel 4)
问题分为4个(ish)实体:
我想我已经找到了用户在我的auth服务器上创建帐户并使用该帐户登录时的流程:
我还没有测试过工作流程,但这似乎可行。但是,第三方登录已证明更加困难。这是我到目前为止所得到的:
这可能会奏效,但感觉非常复杂。当然必须有一种方法可以跳过这些步骤中的一些步骤?我对第8-10步特别感兴趣。据我所知,用户永远不必使用第三方登录与我的Auth服务器进行交互。问题是如何最好地将Google / Facebook / LinkedIn中成功的id_token(或其他内容)连接到我的API上的“帐户”资源。
现在,我并不担心任何其他客户端连接到API,但它会在未来的某个时间发生。
答案 0 :(得分:0)
“据我所知,用户永远不必使用第三方登录与我的Auth服务器进行交互。” 这只是部分正确。从理论上讲,您可以使用第三方登录的令牌作为您自己的令牌。因此,正常的资源请求将是:
缺点是,每次发出请求时,您的API服务器都必须与第三方服务器通信(无论是否需要来自它们的数据)。相反,当您生成自己的令牌时,您可以获得更多控制权,并且验证请求更为简单。
我会坚持你的工作流程。我做了类似的事情,我的步骤几乎相同。在“计算”步骤时,您还必须考虑,对于步骤2-4,您基本上不得不做任何事情,因为Google,Facebook和co已经做得很好;)
答案 1 :(得分:0)
您的问题的后期贡献。
找到此资源,解释OAuth2的使用:OAuth2 in 8 Steps