OAuth是一個關于授權的開放網絡標準,OAuth2是其2.0版本。
它規定了四種操作流程(授權模式)來確保安全
應用場景有第三方應用的接入、微服務鑒權互信、接入第三方平臺、第一方密碼登錄等
Java王國中Spring Security也對OAuth2標準進行了實現。
OAuth2定義了四種授權模式(授權流程)來對資源的訪問進行控制
無論哪個模式(流程)都擁有三個必要角色:客戶端、授權服務器、資源服務器,有的還有用戶(資源擁有者),下面簡單介紹下授權流程
授權碼模式是OAuth2目前最安全最復雜的授權流程,先放一張圖,稍做解釋
如上圖,我們可以看到此流程可大致分為三大部分
整體上來說,可以用一句話概括授權碼模式授權流程
客戶端換取授權碼,客戶端使用授權碼換token,客戶端使用token訪問資源
接下來對這三部分進行一些說明 :
前提條件:
客戶端換取授權碼
這個客戶端可以是瀏覽器,
客戶端使用授權碼換token
客戶端使用token訪問資源
這里的說明省去了一些參數,如scope(請求token的作用域)、state(用于保證請求不被CSRF)、redirect_uri(授權服務器回調uri),先理解概念,實現的時候再去要求
隱式授權模式大致可分為兩部分:
用一句話概括隱式授權模式授權流程
客戶端讓用戶登錄授權服務器換token,客戶端使用token訪問資源
客戶端讓用戶登錄授權服務器換token
客戶端使用token訪問資源
密碼模式大體上也分為兩部分:
一句話概括用戶名密碼模式流程:
用戶在客戶端提交賬號密碼換token,客戶端使用token訪問資源
用戶在客戶端提交賬號密碼換token
客戶端使用token訪問資源
客戶端模式大體上分為兩部分:
一句話概括客戶端模式授權流程:
客戶端使用自己的標識換token,客戶端使用token訪問資源
客戶端使用自己的標識換token
客戶端使用token訪問資源
考慮到授權場景的多樣性,可以參考以下兩種選型方式
學習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的環境變量。
上述的命令有測試結果保存到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:指的是測試和報告信息
APDEX(Application Performance Index):應用程序性能滿意度的標準
其中,
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:
Throughput Charts:
Response Times Charts:
3.4、HTML報告的自定義配置
JMeter3.0開始在bin目錄新增了reportgenerator.properties文件保存了所有關于圖形化HTML報告生成模塊的默認配置,要變更配置,建議不要直接編輯該文件,而是推薦在user.properties中去配置和覆蓋。
3.4.1總體配置
總體配置都是以jmeter.reportgenerator.為前綴,如:jmeter.reportgenerator.overall_granularity=60000
# Change this parameter if you want to change the granularity of over time graphs.
jmeter.reportgenerator.overall_granularity=6000
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文件中修改,效果如下圖
*請認真填寫需求信息,我們會在24小時內與您取得聯系。