簡體   English   中英

我的 ASP.NET 核心應用程序應該使用哪種類型的授權?

[英]What sort of grant type I should use for my ASP.NET Core app?

我有一個 ASP.NET 核心應用程序和一個 REST API 作為我想要保護的資源。

我使用 IdentityServer4 獲取訪問令牌,並將該令牌用於來自 API 的請求。

我的問題是,我應該在這種情況下使用哪種類型的授權類型

  1. 客戶端憑據? 機器對機器?
  2. 密碼授予?

我是這個話題的新手,我很困惑:(

客戶憑證

客戶端使用客戶端憑據授予類型來獲取用戶上下文之外的訪問令牌。

客戶端最常使用它來訪問不被視為私人用戶數據的內部數據。

密碼授予

密碼授權是一種傳統授權類型,它是一種將用戶憑據交換為訪問令牌的方式。 因為客戶端應用程序必須收集用戶的密碼並將其發送到授權服務器,所以不建議再使用此授權。

此流程沒有為多因素身份驗證或委托帳戶等機制提供任何機制,因此在實踐中非常有限。

最新的 OAuth 2.0 安全最佳當前實踐完全不允許密碼授予。

授權碼

假設您訪問用戶數據的數據應該考慮使用授權碼。

授權代碼授權類型由機密和公共客戶端用於交換訪問令牌的授權代碼。

用戶通過重定向URL返回客戶端后,應用程序會從URL獲取授權碼,並用它來請求訪問令牌。

建議所有客戶端也將此流程與 PKCE 擴展一起使用,以提供更好的安全性。

規格

我建議查看Grant types上面的大部分信息直接來自 SPECS。

今天,您應該考慮的只有兩個流程,授權代碼流程和客戶端憑據流程。

如果涉及用戶(使用瀏覽器的用戶),那么您應該使用授權碼流。

如果它是機器對機器的通信(不涉及用戶),那么您應該使用客戶端憑據流。

所有其他流程均已棄用且不推薦使用。

暫無
暫無

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

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