整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          圖文并茂,帶你梳理一下 OAuth2.0 概念和授權

          圖文并茂,帶你梳理一下 OAuth2.0 概念和授權流程

          讀目錄

          • OAuth2 的概念
          • OAuth2授權模式
          • 授權碼模式(Authorization Code Grant)
          • 隱式授權模式(Implicit Grant)
          • 密碼模式(Resource Owner Password Credentials Grant)
          • 客戶端模式(Client Credentials Grant)
          • OAuth2授權模式的選型
          • 后記

          OAuth2 的概念

          OAuth是一個關于授權的開放網絡標準,OAuth2是其2.0版本。

          它規定了四種操作流程(授權模式)來確保安全

          應用場景有第三方應用的接入、微服務鑒權互信、接入第三方平臺、第一方密碼登錄等

          Java王國中Spring Security也對OAuth2標準進行了實現。


          OAuth2授權模式

          OAuth2定義了四種授權模式(授權流程)來對資源的訪問進行控制

          • 授權碼模式(Authorization Code Grant)
          • 隱式授權模式(Implicit Grant)
          • 用戶名密碼模式(Resource Owner Password Credentials Grant)
          • 客戶端模式(Client Credentials Grant)

          無論哪個模式(流程)都擁有三個必要角色:客戶端、授權服務器、資源服務器,有的還有用戶(資源擁有者),下面簡單介紹下授權流程


          授權碼模式(Authorization Code Grant)

          授權碼模式是OAuth2目前最安全最復雜的授權流程,先放一張圖,稍做解釋

          如上圖,我們可以看到此流程可大致分為三大部分

          • Client Side:用戶+客戶端與授權服務器的交互
          • Server Side:客戶端與授權服務器之間的交互
          • Check Access Token:客戶端與資源服務器之間的交互 + 資源服務器與授權服務器之間的交互

          整體上來說,可以用一句話概括授權碼模式授權流程

          客戶端換取授權碼,客戶端使用授權碼換token,客戶端使用token訪問資源

          接下來對這三部分進行一些說明 :

          前提條件:

          • 第三方客戶端需要提前與資源擁有方(同時也是授權所有方)協商客戶端id(client_id),客戶端密鑰(client_secret)
          • 文中暫時未將scope、state等依賴具體框架的內容寫進來,這里可以參考Spring Security OAuth2的實現

          Client Side

          客戶端換取授權碼

          這個客戶端可以是瀏覽器,

          1. 客戶端將client_id + client_secret + 授權模式標識(grant_type) + 回調地址(redirect_uri)拼成url訪問授權服務器授權端點
          2. 授權服務器返回登錄界面,要求用戶登錄(此時用戶提交的密碼等直接發到授權服務器,進行校驗)
          3. 授權服務器返回授權審批界面,用戶授權完成
          4. 授權服務器返回授權碼到回調地址

          Server Side

          客戶端使用授權碼換token

          1. 客戶端接收到授權碼,并使用授權碼 + client_id + client_secret訪問授權服務器頒發token端點
          2. 授權服務器校驗通過,頒發token返回給客戶端
          3. 客戶端保存token到存儲器(推薦cookie)

          Check Access Token

          客戶端使用token訪問資源

          1. 客戶端在請求頭中添加token,訪問資源服務器
          2. 資源服務器收到請求,先調用校驗token的方法(可以是遠程調用授權服務器校驗端點,也可以直接訪問授權存儲器手動校對)
          3. 資源服務器校驗成功,返回資源

          這里的說明省去了一些參數,如scope(請求token的作用域)、state(用于保證請求不被CSRF)、redirect_uri(授權服務器回調uri),先理解概念,實現的時候再去要求


          隱式授權模式(Implicit Grant)

          隱式授權模式大致可分為兩部分:

          • Client Side:用戶+客戶端與授權服務器的交互
          • Check Access Token:客戶端與資源服務器之間的交互 + 資源服務器與授權服務器之間的交互

          用一句話概括隱式授權模式授權流程

          客戶端讓用戶登錄授權服務器換token,客戶端使用token訪問資源

          Client Side

          客戶端讓用戶登錄授權服務器換token

          1. 客戶端(瀏覽器或單頁應用)將client_id + 授權模式標識(grant_type)+ 回調地址(redirect_uri)拼成url訪問授權服務器授權端點
          2. 授權服務器跳轉用戶登錄界面,用戶登錄
          3. 用戶授權
          4. 授權服務器訪問回調地址返回token給客戶端

          Check Access Token

          客戶端使用token訪問資源

          1. 客戶端在請求頭中添加token,訪問資源服務器
          2. 資源服務器收到請求,先調用校驗token的方法(可以是遠程調用授權服務器校驗端點,也可以直接訪問授權存儲器手動校對)
          3. 資源服務器校驗成功,返回資源

          密碼模式(Resource Owner Password Credentials Grant)

          密碼模式大體上也分為兩部分:

          • Client Side: 用戶與客戶端交互,客戶端與授權服務器交互
          • Check Access Token:客戶端與資源服務器之間的交互 + 資源服務器與授權服務器之間的交互

          一句話概括用戶名密碼模式流程:

          用戶在客戶端提交賬號密碼換token,客戶端使用token訪問資源

          Client Side

          用戶在客戶端提交賬號密碼換token

          1. 客戶端要求用戶登錄
          2. 用戶輸入密碼,客戶端將表單中添加客戶端的client_id + client_secret發送給授權服務器頒發token端點
          3. 授權服務器校驗用戶名、用戶密碼、client_id、client_secret,均通過返回token到客戶端
          4. 客戶端保存token

          Check Access Token

          客戶端使用token訪問資源

          1. 客戶端在請求頭中添加token,訪問資源服務器
          2. 資源服務器收到請求,先調用校驗token的方法(可以是遠程調用授權服務器校驗端點,也可以直接訪問授權存儲器手動校對)
          3. 資源服務器校驗成功,返回資源

          客戶端模式(Client Credentials Grant)

          客戶端模式大體上分為兩部分:

          • Server Side: 客戶端與授權服務器之間的交互
          • Check Access Token: 客戶端與資源服務器,資源服務器與授權服務器之間的交互

          一句話概括客戶端模式授權流程:

          客戶端使用自己的標識換token,客戶端使用token訪問資源

          Server Side

          客戶端使用自己的標識換token

          1. 客戶端使用client_id + client_secret + 授權模式標識訪問授權服務器的頒發token端點
          2. 授權服務器校驗通過返回token給客戶端
          3. 客戶端保存token

          Check Access Token

          客戶端使用token訪問資源

          1. 客戶端在請求頭中添加token,訪問資源服務器
          2. 資源服務器收到請求,先調用校驗token的方法(可以是遠程調用授權服務器校驗端點,也可以直接訪問授權存儲器手動校對)
          3. 資源服務器校驗成功,返回資源

          OAuth2授權模式的選型

          考慮到授權場景的多樣性,可以參考以下兩種選型方式

          1.按授權需要的多端情況

          2.按客戶端類型與所有者

          后記

          學習OAuth2有一段時間了,把學到的知識分享出來,行文中難免有錯誤,如果發現還請留言指正,謝謝!

          Java知音,專注于Java實用文章推送,不容錯過!

          來源:cnblogs.com/hellxz/p/oauth2_process.html

          icrosoft Outlook 可變成 C2 信標來遠程執行代碼,網絡安全公司 TrustedSec 本周發布的全新紅隊后利用框架“Specula”就證明了這一點。

          該 C2 框架通過利用 CVE-2017-11774(2017 年 10 月修補的 Outlook 安全功能繞過漏洞)使用 WebView 創建自定義 Outlook 主頁。

          微軟表示:“在文件共享攻擊場景中,攻擊者可以提供專門為利用該漏洞而設計的文檔文件,然后誘使用戶打開該文檔文件并與文檔進行交互。”

          然而,即使微軟修補了該漏洞并刪除了顯示 Outlook 主頁的用戶界面,攻擊者仍然可以使用 Windows 注冊表值創建惡意主頁,即使在安裝了最新 Office 365 版本的系統上也是如此。

          正如 Trusted 所解釋的那樣,Specula 純粹在 Outlook 環境中運行,其工作原理是通過調用交互式 Python Web 服務器的注冊表項設置自定義 Outlook 主頁。

          為此,非特權威脅者可以在 HKEY_CURRENT_USER\Software\Microsoft\Office.0\Outlook\WebView\ 下的 Outlook WebView 注冊表項中將 URL 目標設置為他們控制的外部網站。

          Outlook Specula 注冊表值

          攻擊者控制的 Outlook 主頁旨在提供自定義 VBscript 文件,攻擊者可使用該文件在受感染的 Windows 系統上執行任意命令。

          TrustedSec 表示:“盡管目前已有相關知識和預防措施,但 TrustedSec 仍能夠利用這一特定渠道對數百個客戶端進行初始訪問。當通過 Microsoft 在其解決方法中列出的任何注冊表項設置自定義主頁時,Outlook 將在選擇相關選項卡時下載并顯示該 HTML 頁面,而不是顯示正常的郵箱元素(收件箱、日歷、已發送等)。

          從下載的 HTML 頁面,可以在特權上下文中運行 vbscript 或 jscript,或多或少可以完全訪問本地系統,就像運行 cscript / wscript.exe 一樣。

          雖然首先需要入侵設備才能配置 Outlook 注冊表項,但一旦配置完成,攻擊者就可以使用此技術實現持久性并橫向傳播到其他系統。

          由于 outlook.exe 是一個受信任的進程,因此攻擊者在執行命令時可以更輕松地逃避現有軟件。

          正如美國網絡司令部(US CyberCom)五年前警告的那樣,CVE-2017-11774 Outlook 漏洞也被用來攻擊美國政府機構。

          Chronicle、FireEye 和 Palo Alto Networks 的安全研究人員后來將這些攻擊與伊朗支持的 APT33 網絡間諜組織聯系起來。

          FireEye 網絡安全研究人員表示,FireEye 于 2018 年 6 月首次觀察到 APT34 使用 CVE-2017-11774,隨后 APT33 從 2018 年 7 月開始采用該漏洞進行范圍更廣的攻擊活動,并持續了至少一年。

          、為什么用命令行模式

          使用GUI方式啟動jmeter,運行線程較多的測試時,會造成內存和CPU的大量消耗,導致客戶機卡死;

          所以一般采用的方式是在GUI模式下調整測試腳本,再用命令行模式執行;

          命令行方式支持在多個環境下使用,windosw的dos環境下,也可以在linux環境上執行。

          注意:使用命令執行jmeter腳本必須使用jmeter 3.0及以上版本。

          2、怎么用

          2.1、執行命令

          jmeter -n -t <testplan filename> -l <listener filename>
          
          示例: jmeter -n -t testplan.jmx -l test.jtl
          
          示例含義:表示以命令行模式運行testplan.jmx文件,輸出的日志文件為test.jtl

          2.2、參數介紹

          Jmeter官方手冊給的介紹如下:

          -h, –help -> prints usage information and exit
          -n, –nongui -> run JMeter in nongui mode
          -t, –testfile <argument> -> the jmeter test(.jmx) file to run
          -l, –logfile <argument> -> the file to log samples to
          -r, –runremote -> Start remote servers (as defined in remote_hosts)
          -H, –proxyHost <argument> -> Set a proxy server for JMeter to use
          -P, –proxyPort <argument> -> Set proxy server port for JMeter to use

          中文釋義:

          -h 幫助 -> 打印出有用的信息并退出
          
          -n 非 GUI 模式 -> 在非 GUI 模式下運行 JMeter
          
          -t 測試文件 -> 要運行的 JMeter 測試腳本文件
          
          -l 日志文件 -> 記錄結果的文件
          

          -R 遠程執行 -> 遠程執行機的IP(ip地址)如果有多個ip時,使用-R 192.168.2.170,192.168.2.171(分布式使用)

          -r 遠程執行 -> 在Jmter.properties文件中指定的所有遠程服務器(分布式使用)
          
          -H 代理主機 -> 設置 JMeter 使用的代理主機
          
          -P 代理端口 -> 設置 JMeter 使用的代理主機的端口號

          2.3、執行過程

          命令:jmeter -n -t C:\Users\yzs\Desktop\Unione_performance.jmx -l report-result.jtl

          不在jmeter安卓目錄執行腳本的前提是配置了jmeter的環境變量。

          2.4、報告查看

          上述的命令有測試結果保存到D:\report中,在GUI模式下查看測試報告:

          1、在測試計劃下,添加對應的測試報告元件,舉例增加了:查看結果樹、聚合報告

          2、在“所有數據寫入一個文件”,選擇加載對應的結果文件

          3、下面就會有對應的表格展示,具體見下圖

          2.5、命令行傳遞變量值

          設置線程組的線程數和循環次數。

          注意格式:

          ${__P(threadNum)}

          ${__P(threadCount)}

          其中P前面是兩個下劃線,()內就是變量名

          執行時,在命令行中用-J參數給變量賦值即可:

          jmeter -n -t C:\Users\yzs\Desktop\Unione_performance.jmx -J threadNum=10 -J threadCount=2 -l report-result.jtl

          此次測試相當于:10個線程,循環2次,共計20個請求。

          3、生成HTML報告

          生成HTML報告有2種方式,一種是直接在命令行加上-o參數,另一種是已有jtl結果文件,運行命令生成報告

          3.1、命令行直接生成報告

          jmeter -n -t 【Jmx腳本位置】-l 【中間文件result.jtl位置】-e -o 【報告指定文件夾】
          -e:測試結束后,生成測試報告
          -o:指定測試報告的存放位置

          注意:-o后面跟的文件夾一定是不存在的或者是空文件夾

          3.2、已有jtl結果文件,運行命令生成報告

          jmeter -g【已經存在的.jtl文件的路徑】-o 【用于存放html報告的目錄】

          注意:經實操,windows系統上,以上2種方法都可以生成HTML測試報告,但是在Linux系統上第1種方法,沒有生成報告,只有第二種方法才可以(具體原因后面在慢慢找吧)

          3.3、HTML報告注解

          用瀏覽器打開index.html

          報告詳解

          Dashboard:(重點查看)
          Test and Report informations:指的是測試和報告信息

          • File:測試結果的保存文件名稱
          • Start Time:測試開始時間
          • End Time:測試結束時間
          • Filter for display展示過濾器

          APDEX(Application Performance Index):應用程序性能滿意度的標準

          其中,

          • “Apdex”范圍在0-1之間,1表示達到所有用戶均滿意,越接近1滿意度越高
          • “toleration threshold”:耐受閾值(0.5秒)
          • “frustration threshold”:挫敗閾值(1.5秒)

          Requests Summary:請求的通過率(OK)與失敗率(KO),百分比顯示

          Statistics:數據分析,基本將Summary Report和Aggrerate Report的結果合并(平均響應時間、TPS在此查看)

          Errors:錯誤情況,依據不同的錯誤類型,將所有錯誤結果展示

          關于Apdex的補充:

          性能指數,Apdex(Application Performance Index)是一個國際通用標準,Apdex 是用戶對應用性能滿意度的量化值。它提供了一個統一的測量和報告用戶體驗的方法,把最終用戶的體驗和應用性能作為一個完整的指標進行統一度量。下圖表示為通用用戶滿意度區域,0代表沒有滿意用戶,1則代表所有用戶都滿意。實際業務系統開發過程中,1是團隊的追求目標。

          若所有請求的Apdex值都接近1,說明用戶滿意度優秀,也從側面說明了服務器響應速度快。
          通常而言,
          最低要求超過0.5,當然項目組可設定具體需求。

          Charts:(輔助分析)

          主要有如下特點:
          (1)將測試過程中經常使用的數據,用圖表的形式展示,讓測試結果更加直觀
          (2)每個圖表數據,有兩種展示形式
          (3)支持請求樣例過濾顯示
          (4)支持導出PNG圖片格式

          Over Time Charts

          • Response Times Over Time:每秒鐘響應時間,X軸表示的是系統運行的時刻,Y軸表示的是響應時間,F(X,Y)表示系統隨著時間的推移,系統的響應時間的變化,可以看出響應時間穩定性
          • Bytes Throughput Over Time:字節接收與發送的數量,每秒傳輸字節吞吐量,表明Jmeter在測試時,隨著時間推移發送和接收的字節數
          • Latencies Over Time:延遲時間

          Throughput Charts

          • Hits Per Second: 每秒點擊率
          • Codes Per Second:每秒狀態碼數量
          • Transactions Per Second:每秒事務量
          • Response Time Vs Request:響應時間點請求的成功與失敗數
          • Latency Vs Request:延遲時間點請求的成功與失敗數

          Response Times Charts

          • Response Time Percentiles:響應時間百分比
          • Active Threads Over Time:激活線程數
          • Time Vs Threads:響應時間用戶數, X軸表示的是活動線程數,也就是并發訪問的用戶數,Y軸表示的是響應時間,F(X,Y)表示在某種并發量的情況下,系統的響應時間是多少
          • Response Time Distribution:響應時間分布

          3.4、HTML報告的自定義配置

          JMeter3.0開始在bin目錄新增了reportgenerator.properties文件保存了所有關于圖形化HTML報告生成模塊的默認配置,要變更配置,建議不要直接編輯該文件,而是推薦在user.properties中去配置和覆蓋。

          3.4.1總體配置

          總體配置都是以jmeter.reportgenerator.為前綴,如:jmeter.reportgenerator.overall_granularity=60000

          • overall_granularity:定義采樣點粒度,默認為60000ms,通常在穩定性以外的測試中,我們可能需要定義更細的粒度,比如1000ms,我們可以在user.properties文件末尾添加如下配置
          # Change this parameter if you want to change the granularity of over time graphs.
          jmeter.reportgenerator.overall_granularity=6000
          • report_title:定義報告的標題,我們可能需要將標題定義為實際測試項名稱
          • apdex_satisfied_threshold:定義Apdex評估中滿意的閾值(單位ms)
          • apdex_tolerated_threshold: 定義Apdex評估中可容忍的閾值

          Apdext=(Satisfied Count + Tolerating Count / 2) / Total Samples


          另外,在jmeter.properties中,有關于集合報告中的三個百分位的默認值:

          aggregate_rpt_pct1 : Defaults to 50
          aggregate_rpt_pct2 : Defaults to 70
          aggregate_rpt_pct3 : Defaults to 99

          3.5、HTML報告的定制

          JMeter的HTML報告生成時是使用了固定的模板,模板文件路徑為./bin/report-template。
          進入該目錄可以看到報告的每個頁面都有一個.fmkr模板文件,包括index.html.fmkr和./content/pages路徑下的幾個文件。通過查看這些模板文件,就可以知道怎樣去進行報告的輕度定制,比如將一些文本修改得更易懂,或者修改為中文等

          頁面的title
          默認為"Apache JMeter Dashboard"
          可以由reportgenerator.properties中的jmeter.reportgenerator.report_title來統一定義,這種方式就是所有頁面的title都使用同一個。
          也可以直接修改對應的.fmkr文件中的title標簽中雙引號內的值,如<title>${reportTitle!"想要設置的title"}</title>,這中方式可以為每個頁面單獨定義title
          圖表的名稱
          當前版本下,各圖表的名稱是直接在模板文件中定義,要修改也是直接修改模板文件中對應元素的值即可
          如要修改Transactions Per Second圖表的名稱,可以直接在./content/pages/Throughput.html.fmkr文件中修改,效果如下圖


          主站蜘蛛池模板: 国产免费一区二区三区VR| 亚洲无线码在线一区观看| 中文字幕亚洲一区二区va在线| 亚洲av永久无码一区二区三区| 上原亚衣一区二区在线观看| 亚洲Av无码一区二区二三区| 一区二区三区波多野结衣| 无码人妻精品一区二区三区66| 视频一区视频二区制服丝袜| 99国产精品一区二区| 国产一区二区三区亚洲综合| 国产福利91精品一区二区| 国产乱码精品一区二区三区四川人 | 亚洲a∨无码一区二区| 综合人妻久久一区二区精品| 波多野结衣一区在线观看| 亚洲av日韩综合一区久热| 国产av一区二区三区日韩 | 久久精品国产一区二区三区| 国产成人久久精品区一区二区| 国产精品无码一区二区三级| 精品国产亚洲一区二区在线观看| 国产麻豆剧果冻传媒一区| AV无码精品一区二区三区| 亚洲日本va午夜中文字幕一区| 亚洲熟妇av一区二区三区| 亚洲AV无一区二区三区久久| 精品一区二区三区中文字幕| 亚洲日韩精品一区二区三区无码 | 无码AV中文一区二区三区| 久久精品国产一区| 亚洲日韩中文字幕一区| 一区二区三区91| 精品一区二区三区无码免费视频| 亚洲韩国精品无码一区二区三区| 免费无码VA一区二区三区| 波多野结衣一区二区三区| 无码人妻啪啪一区二区| 一区二区三区免费精品视频| 91精品一区二区三区在线观看| 91在线精品亚洲一区二区|