在什么地方登录对话框3条腿验证了宁静的API(Where to place login dialog

2019-10-21 08:12发布

我想换我的头周围3条腿的认证,以确保一个宁静的API。

目前,我有在app.host.com需要由多个用户使用不同的帐户权限和数据,以及其在app_api.host.com保存所有数据的JSON的RESTful API访问的客户端应用程序

对于3条腿的权威性,我明白,我首先需要消费者密钥和密码属于客户app.host.com ......我也明白一个未经授权的请求令牌必须由服务提供商,这是考虑到客户端提供,然后将其重定向回服务提供商与一个登录对话框授权。

正因为此,在登录对话框,然后存在于app_api.host.com的API主机上的用户界面? 这难道不是打败我单独建立一个纯粹的JSON API宁静到客户端的目的是什么?

或者,我可以建立客户端然后将贴的用户名/密码信息给另一台auth端点的API,并提供一个200码时,请求令牌被授权在登录对话框? 再依次客户会要求从用户权限,这将再次被张贴到另一端点,然后与该用户相应的访问令牌响应?

TL; DR:我是否能够有登录对话框存在于客户端上,然后张贴数据到服务提供商? 我读过的所有指南建议为服务提供商,在这种情况下会破坏完全具有API作为一个单独的应用程序的目的对话框。 我应该如何去建立呢? 任何可用的引导?

Answer 1:

OAuth 2.0用户定义不同的流不同客户使用,这取决于你有多少信任的客户端。

授权码

第一个和最secury流量授权令牌流。 它是用来与您可以在其中存储机密信息安全相对传统Web应用程序(仅管理员权限的人应该可以访问存储在配置客户端ID和密码)。

当用户(资源所有者)想要进行身份验证,用户代理被重定向到属于该资源服务器的域(客户端想要消费数据,例如Facebook或谷歌)的授权服务器。 授权服务器呈现登录界面的用户。 当用户成功验证,它提出同意UI问,如果用户想要在客户端应用程序访问的资源。 如果用户同意,该用户代理被重定向回一个授权代码的客户端应用程序。 客户端应用程序现在可以使用此代码,它的客户端ID和秘密的直接对话授权服务器,并得到一个访问令牌。 在这个流程中,访问令牌是从来没有在用户代理的手中。

隐流

在隐式流程中,用户代理(这里通常是天然的(移动)应用程序或JavaScript客户端)重定向到授权服务器或打开浏览器窗口,以导航到授权服务器。 当用户成功并授予客户端应用程序进行身份验证,访问令牌本身被返回给客户端。 因此,用户代理不会看到用户名和密码的用户输入(如发生这种情况是由资源服务器控制的HTML页面),但确实有过访问令牌控制。

资源所有者密码凭据流

在这里,用户代理是完全值得信赖的,并询问用户名和密码的用户。 然后,它与授权服务器以获得访问令牌通信。 即使用户代理知道用户的凭证,它仅使用过一次获得访问令牌。 它并不需要沿着每个请求的资源服务器发送。

因此,要回答你的问题,你可以建立的登录对话框中您的应用程序,如果你认为你的用户会信任你的应用程序,足以给你他们的凭据。 否则,你可能应该去其他流之一。 你可以阅读更多有关OAuth的2 这里和这里 。



文章来源: Where to place login dialog for 3-legged Auth for restful API