簡體   English   中英

跨域API身份驗證

[英]Cross Domain API authentication

我需要向公司的另一個分支公開JSON Web服務,它們將在公共Web應用程序中管理自己的用戶表,而只有當一組不同的用戶位於我們辦公室的LAN內時,我的應用程序才可以使用。 到目前為止的計划是,他們將使用AJAX請求使用Web服務,我應該返回JSON,但我不知道如何在不暴露HTML源代碼中的憑據的情況下進行身份驗證。 基本工作流程為:

  1. 用戶X登錄其他分支機構的Web應用程序(我無法控制此過程)
  2. 用戶X單擊按鈕,其他分支機構的服務器向我的服務器發出請求
  3. 我的服務器獲取數據並返回JSON
  4. 其他服務器填充一個dropdow(或類似的東西)

我已經閱讀了一些有關API的教程,但所有這些教程都涉及在用戶表中添加令牌字段,而這不是我的情況。 什么是安全的方法? 即使它在我們公司的局域網內,我也不想暴露未經身份驗證的Web服務

聽起來其他分支機構的Web應用程序是您的Web應用程序的客戶端。 授權他們的 Web應用程序向您的 Web應用程序發出請求的最標准化和最可接受的方法是通過OAuth集成這兩個應用程序。

使用OAuth服務器,希望與您的服務集成的Web應用程序被稱為“客戶端”。 向每個客戶端都發出client_idclient_secret 您可以遵循幾種不同的流程,每種流程都有自己的前提條件和期望。 我不會在這里重新介紹它們,但是本文看起來像是一篇不錯的摘要,可以很好地為您提供入門指南。

我會說,我認為最容易實現的流程是“密碼授予”,但是它要求您完全信任集成的應用程序,因為它會知道用戶的登錄憑據。 從問題的描述來看,這似乎不是問題。

注意-鏈接的DigitalOcean文章將密碼授予流稱為“密碼憑證流”

集成后,將請求授權令牌並將其保存在客戶端應用程序中。 如何請求和檢索它取決於您遵循的是哪個授予流程。 對API的每個請求都在Authorization標頭中包含此“ bearer”令牌,然后在資源服務器上對其進行檢查和驗證。 實際上,只有包含有效令牌的請求才會真正與應用程序中的數據一起使用。

我已經使用lucadegasperi / oauth2-server-laravel軟件包在Laravel中實現OAuth2服務器,沒有太多麻煩,但是自Laravel 5.3起,它似乎已被棄用。 您可以嘗試嘗試laravel / passport ,我沒有經驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM