我需要向公司的另一个分支公开JSON web服务,他们将在公共web应用程序中管理自己的用户表,而我的应用程序只有在不同的用户组在我们办公室的局域网内时才能访问。目前的计划是,它们将使用AJAX请求来消费web服务,我应该返回JSON,但我不知道如何在不暴露HTML源代码中的凭据的情况下进行身份验证。基本的工作流程是:
- 用户X登录其他分支机构的web应用程序(我无法控制此过程)
- 用户X点击一个按钮,其他分支的服务器向我的服务器发出请求
- 我的服务器获取数据并返回JSON
- 其他服务器填充下拉(或类似的东西)
我读过一些关于api的教程,但它们都在讨论在用户表中添加令牌字段,我的情况不是这样。安全的方法是什么?即使它在我们的公司局域网内,我也不想在没有身份验证的情况下公开web服务
听起来好像另一个分支的web应用是你的web应用的客户端。授权他们的 web应用向你的 web应用发出请求的最标准化和公认的方法是通过OAuth集成两个应用。
使用OAuth服务器,希望与您的服务集成的web应用程序被称为"客户端"。每个客户端都有一个client_id
和一个client_secret
。你可以遵循几种不同的流程,每种流程都有自己的前提条件和期望。我不会在这里重述它们,但这篇文章看起来有一个很好的总结,可以作为你的入门指南。我想说的是,我认为最容易实现的流程是Password Grant,但要求您完全信任集成的应用程序,因为它将知道用户的登录凭据。从你对问题的描述来看,这似乎不是个问题。注意-链接的DigitalOcean文章将密码授予流程称为"密码凭证流程"
集成后,请求授权令牌并将其保存在客户端应用程序中。如何请求和检索它取决于您所遵循的授权流。对API的每个请求都包括Authorization
标头中的这个"承载"令牌,然后在您的资源服务器上进行检查和验证。只有包含有效令牌的请求才会实际使用来自应用程序的数据。
我已经使用lucadegasperi/OAuth2 -server- Laravel包在Laravel中实现OAuth2服务器,没有太大的麻烦,但看起来从Laravel 5.3开始它已经被弃用了。