asp.net core IdentityServer4 概述

来源:https://www.cnblogs.com/yyfh/archive/2019/09/26/11590383.html
-Advertisement-
Play Games

概覽 現代應用程式看上去大都是這樣的: 最常見的交互是: 瀏覽器與Web應用程式通信 Web應用程式與Web API通信(有時是獨立的,有時是代表用戶的) 基於瀏覽器的應用程式與Web API通信 本機應用程式與Web API通信 基於伺服器的應用程式與Web API通信 Web API與Web A ...


概覽

現代應用程式看上去大都是這樣的:

現代應用程式網路架構

最常見的交互是:

  • 瀏覽器與Web應用程式通信
  • Web應用程式與Web API通信(有時是獨立的,有時是代表用戶的)
  • 基於瀏覽器的應用程式與Web API通信
  • 本機應用程式與Web API通信
  • 基於伺服器的應用程式與Web API通信
  • Web API與Web API通信(有時是獨立的,有時是代表用戶的)

通常,每一層(前端,中間層和後端)都必須保護資源並實施身份驗證和/或授權-經常針對同一用戶存儲。

將這些基本安全功能外包給安全令牌服務可防止在那些應用程式和端點之間重覆該功能。

重組應用程式以支持安全令牌服務將導致以下體繫結構和協議:

protocols

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

身份認證

當應用程式需要知道當前用戶的身份時,需要進行身份驗證。通常,這些應用程式代表該用戶管理數據,並且需要確保該用戶只能訪問允許其訪問的數據。最常見的示例是(經典)Web應用程式,但是本機和基於JS的應用程式也需要身份驗證。

最常見的身份驗證協議是SAML2p,WS-Federation和OpenID Connect-SAML2p是最受歡迎和部署最廣泛的協議。

OpenID Connect是三者中的最新者,但被認為是未來,因為它在現代應用程式中具有最大的潛力。它從一開始就針對移動應用程式場景而構建,並旨在實現API友好。

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中間件會向其中添加必要的協議頭,以便客戶端應用程式可以與之對話使用那些標準協議。

IdentityServer中間件

你可以根據你的需要使用儘可能複雜的宿主應用程式。但是,為了保持受攻擊面儘可能小, 我們一般建議你只將認證相關的UI包含進來。

相關術語

IdentityServer4相關術語

IdentityServer

IdentityServer 是一個 OpenID Connect 提供程式 —— 它實現了OpenID Connect 和 OAuth2 協議。

對於相同的角色,不同的文獻將使用不同的術語 —— 你可能也發現了安全令牌服務(Security Token Service),身份提供程式(Identity Provider),授權伺服器(Authorization Server),IP-STS 等等。但是他們都具相同的含義:軟體中用來向客戶端發行安全令牌的部分。

IdentityServer 包含一些職責和功能:

  • 保護你的資源
  • 使用本地賬戶存儲或外部的身份提供程式來進行用戶身份認證
  • 提供會話管理和單點登錄(Single Sign-on)
  • 客戶端管理和認證
  • 給客戶端發行身份令牌和訪問令牌
  • 驗證令牌

用戶

用戶是通過已註冊客戶端訪問相關數據的人。

客戶端

客戶端是軟體中從 IdentityServer 請求令牌(Token)的部分 —— 既可以是為了認證一個用戶(即請求的是 身份令牌),也可以是為了訪問一個資源(即請求的是 訪問令牌)。一個客戶端必須首先註冊到 IdentityServer 才能請求相關的令牌。

客戶端可以是Web應用程式、移動客戶端或桌面應用程式、單頁面應用程式(SPA,Single Page Application)、伺服器進程等等。

資源

資源就是你想要通過 IdentityServer 保護的東西 —— 既可以是你的用戶的 身份信息,也可以是 API。

每個資源都有唯一的名稱 —— 客戶端使用這些名稱來指定他們想要訪問的資源。

身份數據(Identity data) 是一個用戶的身份信息(又稱為 claims),比如 名字(name) 和 郵箱地址(email address)。

API 資源表示的是客戶端想要調用的功能 —— 通常通過 Web API 來對 API 資源建模,但這不是必須的。

身份令牌

一個身份令牌表示的是認證過程的輸出。它最低限度地標識了某個用戶(這也可以稱為主身份信息的子集,原文:Called the sub aka subject claim),還包含了用戶的認證時間和認證方式。身份令牌可以包含額外的身份數據。

訪問令牌

訪問令牌用來授予訪問某個 API 資源的許可權。客戶端請求訪問令牌,然後被導向 API。訪問令牌包含了客戶端和用戶(如果提供了的話)的相關信息,API通過這些信息來給它們授予數據訪問許可權。

參考:http://docs.identityserver.io/


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

-Advertisement-
Play Games
更多相關文章
  • 在身份認證中,如果某個Action需要許可權才能訪問,最開始的想法就是,哪個Action需要許可權才能訪問,我們寫個特性標註到上面即可,[TypeFilter(typeof(CustomAuthorizeActionFilterAttribute))] 當然了,要先在服務裡面使用Session的服務== ...
  • 在.Net Framework MVC 中有四種過濾器,授權過濾器(Authorize)、Action 過濾器、結果過濾器(Result)、異常過濾器(Exception)四種過濾器。在.Net Core MVC中,有五種過濾器,授權過濾器、Action過濾器、異常過濾器、結果過濾器、資源過濾器,新 ...
  • c# sharepoint client object model 客戶端如何創建中英文站點 ClientContext ClientValidate = tools.GetContext(OnlineSiteUrl, User, Pass, true); Web oWebSite = Client ...
  • [TOC] .NET Conf 2019 2019 9.23 9.25召開了 ".NET Conf 2019" 大會,大會宣佈了 ".Net Core 3.0" 正式版。這兩天我也開始試著將自己Github上的項目從 .Net Core 2.2升級到 .Net Core 3.0 。其中有一個項目,是 ...
  • 場景 Winforn中設置ZedGraph曲線圖的屬性、坐標軸屬性、刻度屬性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573 Winform中實現ZedGraph的多條Y軸(附源碼下載): https://bl ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 碼雲:https://gitee.com/kwwwvagaa/net_winform_custom_contr ...
  • Web、Asp.Net、.Net、WebAPI獲取表單數據流(批量文件上傳) ...
  • 上一篇學習到瞭如何簡單的創建.Net Core Api和Swagger使用,既然寫了介面,那麼就需要部署到伺服器上才能夠正式使用。伺服器主要用到了兩種系統,Windows和Linux,.Net和Windows都是屬於微軟爸爸的,那麼這一篇就先從部署到Windows伺服器系統開始吧。 一、準備伺服器 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...