簡體   English   中英

MVC控制器中的承載令牌可訪問Web API

[英]Bearer token in MVC controller to access Web API

我有兩個項目:MVC,Web Api

在Web API項目中,我正在使用承載令牌認證。 該令牌會在24小時后過期。 在我的MVC項目中,我想通過MVC控制器(服務器到服務器)調用Web api項目。 最好的方法是:

  1. 獲取令牌
  2. 24小時后(或任何到期日)續訂令牌
  3. 調用安全操作方法

我的想法是使用WebClient,但不確定是否有更好的方法來解決此問題。

我也沒有設置使用承載令牌。 但是需要一種可靠的方法來認證服務器到服務器和客戶端(angularjs)到服務器(api)的身份。

服務器到服務器的OAuth流程:

  • 您的Web服務器使用共享密鑰連接到授權服務器(在本例中為AS,包含在Web API主機中)
  • AS(Web API)將令牌返回到您的Web服務器
  • Web服務器存儲令牌以在下一個Web API調用中使用它

對於客戶端到服務器,流程是不同的:

  • 當用戶使用您的Web應用程序並且需要訪問Web API時,您的應用程序會將瀏覽器重定向到auth服務器,在此它通知用戶哪些資源(范圍)正在嘗試訪問該應用程序,並請求批准。 此重定向包含一個URL回調
  • 如果用戶批准訪問,則AS會將瀏覽器重定向到回調URL,並在查詢字符串中包含一些信息,其中包括令牌
  • 瀏覽器會檢查網址,如果用戶批准了訪問,它將使用網址中的令牌向Auth服務器詢問Bearer令牌
  • 如果是SPA,則瀏覽器將存儲承載令牌並使用它來訪問Web API。 如果不是SPA,則令牌通常存儲在cookie中,這樣就不會丟失

處理令牌到期:

該令牌具有有關到期時間的信息,通常包括刷新令牌。 您可以使用刷新令牌在過期之前將其呈現給AS,因此您無需要求新的令牌

配置注意事項

必須在服務器中以不同的方式配置不同的流。

“服務器到服務器”的第一個流程使用共享機密將berare令牌直接返回給服務器應用程序。 在這種情況下,無需用戶批准,因為此過程中沒有用戶參與

從(不受信任的)客戶端到服務器的第二個流程需要用戶的授權,因為您的客戶端應用程序將代表用戶(資源所有者)訪問用戶的某些資源,因此需要用戶的批准。

還有其他流程,例如來回信任的客戶端,但它們不適用於這種情況。

所有這些事情的典型實現是dotnetopenauth 它有充分的文檔記錄,可以為您處理所有細碎的事情。

暫無
暫無

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

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