主頁 > .NET開發 > asp.net core IdentityServer4 概述

asp.net core IdentityServer4 概述

2020-09-23 20:35:43 .NET開發

概覽

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

現代應用程式網路架構

最常見的互動是:

  • 瀏覽器與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/

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/114300.html

標籤:.NET Core

上一篇:.Net Core 3.0 gRPC部署問題解決

下一篇:WinForms專案升級.Net Core 3.0之后,沒有WinForm設計器?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more