首先啟動專案soul-admin以及soul-bootstrap,以soul-examples
中的soul-example-http
為例,註冊到soul閘道器上。記得檢查soul-bootstrap是否引入sign外掛程式相關依賴
>
>
org.dromaragroupid
>
>
soul-spring-boot-starter-plugin-signartifactid
>
>
$version
>
dependency
>
同時在soul-admin外掛程式管理中心開啟sign
外掛程式。
同時在認證管理一欄新增相關資料
新增成功後可以看到生成的ak(access key)
和sk(secret key)
同時需要配置selector
和rule
selector規則:
rule規則:
同時可以參考soul官方的示例**構造signkey的服務soul-鑑權技術實現 (
"/signkey"
)public string signkey()
)).sorted
(comparator.
naturalorder()
).collect
(collectors.
tolist()
);final string sign = storedkeys.
stream()
.map
(key -
> string.
join(""
, key, map.
get(key)))
.collect
(collectors.
joining()
).trim()
// secret key from soul-admin
.concat
("97d3f9978cbc486f929b49c420311522");
return digestutils.
md5digestashex
(sign.
getbytes()
).touppercase()
;}通過訪問http://localhost:8188/signkey
拿到對應的signkey
如果直接訪問http://localhost:9195/http/order/findbyid?id=1
,則會得到401
訊息
此時在http header中增加相關的authorize資訊
如果超時5min,則返回相關資訊如下
如果sign錯誤,返回相關資訊如下:
string sigkey = signutils.
generatesign()
,buildparamsmap
(soulcontext));
boolean result = objects.
equals
(sigkey, soulcontext.
getsign()
);
以上則是關於sign外掛程式的應用例項和原始碼分析。和其他外掛程式相比,sign外掛程式的邏輯相對簡單,比較容易理解,本質上就是起到乙個簽名驗證鑑權的功能。 Soul原始碼總結 01 20
總結首先啟動soul admin和soul bootstrap專案,在soul bootstrap控制台日誌會發現 soul admin與soul閘道器預設建立websocket通訊,那麼具體在 中是如何實現的呢?soul sync websocket urls ws localhost 9095 ...
Soul原始碼總結 01 22
總結 不要忘記檢查pom.xml中是否加入相關依賴項 啟動soul admin和soul bootstrap專案,在soul bootstrap控制台看到以下日誌 說明此時http長輪詢同步機制建立成功.soul閘道器http長輪詢機制可以參考官網的圖示以及說明 soul http long pol...
Soul原始碼總結 01 26
divideplugin主要soul閘道器處理http protocol的主要外掛程式,當有http請求打到soul閘道器的時候,soulwebhandler會執行divideplugin來對http請求做相應的處理。divideplugin做的處理主要是對http請求進行 主要原理是根據不同的負載...