IdentityServer4 是使用 ASP.NET Core實現了OpenID和OAuth 2.0協議的身份認證框架;重複一遍,它是一個框架;框架決定它不是一個開箱即用的產品,須要根據本身的需求進行定製;同時也意味着更高的靈活性;git
對不少初學者來講(包括我本身),這個問題比較抽象,我還特定去搜索、瞭解、理解過,若是看完如下解析仍是看不懂的話能夠繼續看這裏;github
按個人理解來講,他們的區別是:web
OpenID
直接引用以上連接問答裏的話「OpenID是Authentication,OAuth是Authorization」,Authentication就是鑑權;就是用一條url來證實這條url就是我;這句話怎麼理解呢,好比:
A網站是提供OpenID的網站,你在A網站註冊了OpenID;
B、C、D等是支持OpenID登陸的網站;
如今你要登陸B、C、D網站,你只須要在B、C或D網站填寫A網站註冊的OpenID,而後統一跳到A網站去驗證;
驗證成功後,會跳轉回B、C、D網站,成功登陸;api
若是是用用戶名登陸的B、C、D網站的話,要分別準備3套用戶名和密碼;使用以上OpenID登陸的方式、只須要註冊A網站獲得OpenID;安全
OAuth 2.0
OAuth是Authorization,就是受權;一字之差;好比:
我在A網站擁有一些資源(頭像啊、照片啊都算資源),B網站要用他,而後咱們不想給B網站帳號密碼,那怎麼給他資源呢?OAuth就是作這個的,資源的受權;
打個比方,個人(用戶)微信的微信頭像存在微信 weixin.qq.com(服務提供方),而後京東(客戶端)想要獲取個人微信頭像(資源);
那麼京東會引導用戶打開微信的受權頁面:
用戶點擊受權,京東獲得一個受權token,而後京東經過受權token獲取個人微信頭像;受權頁面以下圖。
以上就是一個典型的OAuth過程
微信
OAuth 2.0是OAuth 1.0出現安全漏洞後修補了協議(2.0具體協議RC 6749)的一個版本,與概念是什麼無關;
OAuth 2.0和OAuth 1.0不兼容;app
這個對於咱們初學者來講很重要,整體來講它能夠:
(1)單點登陸
web/app/wap等多種應用上的單點登陸、退出;框架
(2)保護你的api接口
好比大家公司有多個部門,每一個部門都會有多個本身業務系統的接口,這些業務的接口又分別給不一樣的部門調用,不一樣的部門對調用同一個業務的權限又不同;這個時候IdentityServer4就很容易實現以上需求了;ide
(3)支持OpenID登陸
IdentityServer4是支持OpenID登陸的框架,好比谷歌是OpenID的提供者,登陸谷歌就直接使用第二點提到的使用谷歌 OpenID登陸就能夠登陸了;
(4)統一的登陸處理邏輯
好比大家公司有有多個業務後臺系統須要登陸,每一個後臺單獨使用一套用戶名和密碼將很是麻煩,這個使用IdentityServer4亦可輕鬆使用一套用戶名密碼登陸各個業務系統;
(5)高度自由的定製
還用更多的使用場景,可自行發掘;