ASP.NET Core身份認證服務框架IdentityServer4 介紹

来源:https://www.cnblogs.com/bob-zb/archive/2020/03/12/12469481.html
-Advertisement-
Play Games

IdentityServer4是ASP.NET Core 2的OpenID Connect和OAuth 2.0框架。它可以在您的應用程式中提供以下功能: 它使你的應用程式具有如下特點: 認證即服務 適用於所有應用程式(web, native, mobile, services)的集中登錄邏輯和工作流 ...


IdentityServer4是ASP.NET Core 2的OpenID Connect和OAuth 2.0框架。它可以在您的應用程式中提供以下功能:

它使你的應用程式具有如下特點:

認證即服務

適用於所有應用程式(web, native, mobile, services)的集中登錄邏輯和工作流程。IdentityServer是OpenID Connect的官方認證實現。

單點登錄/註銷

多個類型的應用程式在一個點進行登錄和註銷操作。

API 訪問控制

為各種類型的客戶端頒發API的訪問令牌,例如 伺服器到伺服器、Web應用程式,SPA、本地應用和移動應用程式。

聯合網關

支持Azure Active Directory,Google,Facebook等外部身份提供商。這可以保護您的應用程式免受如何連接到這些外部提供商的詳細信息的影響。

專註於定製

最重要的部分 - IdentityServer的許多方面都可以根據您的需求進行定製。由於IdentityServer是一個框架而不是現成的產品或SaaS,因此您可以編寫代碼以使系統適應您的方案。

成熟的開源

IdentityServer使用的Apache 2開源協議,允許在其上構建商業產品。它也是.NET Foundation的一部分,它提供治理和法律支持。

免費和商業支持

如果您需要幫助構建或運行您的身份平臺,請告知IdentityServer官方。 他們可以通過多種方式為您提供幫助。

一.整體介紹

現代應用程式看起來更像這個:

最常見的相互作用:

  • 瀏覽器與Web應用程式的通信 Browser -> Web App
  • Web應用程式與Web API通信
  • 基於瀏覽器的應用程式與Web API
  • 本機應用程式與Web API進行溝通
  • 基於伺服器的應用程式與Web API
  • Web API與Web API通信

通常,每個層(前端、中間層和後端)必須保護資源並實現身份驗證或授權——通常針對同一個用戶存儲區。

 

將這些基本安全功能外包給安全令牌服務可以防止在這些應用程式和端點上複製該功能。

 

應用支持安全令牌服務將引起下麵的體繫結構和協議:

這樣的設計將安全問題分為兩部分:

二.認證(Authentication)

認證可以讓一個應用程式知道當前用戶的身份。 通常,這些應用程式代表該用戶管理數據,並且需要確保該用戶只能訪問允許他訪問的數據。最常見的示例是Web應用程式,但基於本地和基於js的應用程式也需要進行身份驗證。

 

最常用的認證協議saml2p、WS-Federation和OpenID,saml2p協議是最流行和實際應用最多的。

OpenID Connect對於現在應用來說是被認為是未來最有潛力的,這是專為移動應用場景設計的,一開始就被設計成對移動應用場景友好。

 

三.API訪問

應用程式有兩種基本方式與API進行通信,一種是使用應用程式標識,另一種是委托用戶的身份。有時這兩種方法都需要結合。

OAuth2協議,它允許應用程式從一個安全令牌服務要求訪問令牌,使用這個訪問令牌來訪問API。這個機制降低了客戶機應用程式和API的複雜性,因為身份驗證和授權可以是集中式的。

 

四.OpenID Connect 和 OAuth 2.0 結合

 OpenID Connect 和 OAuth 2.0非常相似,事實上OpenID Connect 是在OAuth 2.0之上的一個擴展。兩個基本的安全問題,認證和API訪問,被組合成單個協議,通常只需一次往返安全令牌服務。

 我們認為OpenID Connect和OAuth 2.0的組合是可預見在未來是保護現代應用程式的最佳方法。IdentityServer4是這兩種協議的實現,並且被高度優化以解決當今移動應用、本地應用和web應用的典型安全問題

 

五.IdentityServer4可以幫助你做什麼

IdentityServer是將規範相容的OpenID Connect和OAuth 2.0端點添加到任意ASP.NET Core應用程式的中間件。通常,您構建(或重新使用)包含登錄和註銷頁面的應用程式,IdentityServer中間件會向其添加必要的協議頭,以便客戶端應用程式可以與其對話 使用這些標準協議。

我們通常建議通過僅包含認證相關的UI來使攻擊面儘可能小。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ***************************APPLICATION FAILED TO START*************************** Description: Failed to configure a DataSource: 'url' attribute is no ...
  • Android系統測試, 開始測試前,我們需要先確認所測試的系統版本是否正確, 還有報bug的時候,開發需要你提供具體的系統版本信息。 還有系統打版時間等, 不同的版本修複了不同的bug,合入了不同的新功能等, 如果測試人員測試的系統版本都不對,會直接被開發懟到哭。 如何一鍵獲取Android系統版 ...
  • 模板模式 作用:定義一個操作中的演算法的骨架。而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。其關鍵是將通用演算法(邏輯)封裝在抽象基類中,並將不同的演算法細節放到子類中實現。 在我看來,模板模式的好處在於能減少代碼段的復用,把公共行為封裝到基類中,把行為 ...
  • 前幾天本猿的大學同學,一個漂亮的小姐姐工作時遇到了一個問題,她的需求是,在公司區域網的電腦上下載大量的圖片重命名成指定得1、2、3.....以此類推,需要當天完成,我就臨時給寫了一個小demo。 我的想法是採用linux的原理不就好實現嗎,直接mv到指定文件夾下再給一個新的名字不就實現了嗎 我給出的 ...
  • 題目地址:https://www.luogu.com.cn/problem/P4850 題解原地址:https://createsj.blog.luogu.org/solution-p4850 ...
  • 什麼是類載入器: public class ClassInit { public static void main(String[] args) { ClassLoader c=ClassInit.class.getClassLoader(); } } 上面這個ClassLoader就是類載入器 打 ...
  • Java變數 一、變數的命名 ——標識符 標識符由數字、字母、下劃線_、美元符$組成,但不能以數字開頭。 標識符對字母大小寫敏感。 標識符無長度限制。 不能以關鍵字作為標識符。 /* 合法的標識符: */ int amount = 17; int $apple = 8; int _index = 3 ...
  • 目的:學習netcore3.x 環境下的webapi 開發。 項目:目錄及說明 1、AM.Template.Data,持久層,資料庫實例 通過該實例能夠查詢更改資料庫(CURD),操作。 2、AM.Template.Domain ,領域層,領域實體模型,用於設計實體間的關係,並生成資料庫表。 3、A ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...