近期正在探索前端、后端、系統(tǒng)端各類(lèi)常用組件與工具,對(duì)其一些常見(jiàn)的組件進(jìn)行再次整理一下,形成標(biāo)準(zhǔn)化組件專(zhuān)題,后續(xù)該專(zhuān)題將包含各類(lèi)語(yǔ)言中的一些常用組件。歡迎大家進(jìn)行持續(xù)關(guān)注。
創(chuàng)新互聯(lián)是專(zhuān)業(yè)的海淀網(wǎng)站建設(shè)公司,海淀接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行海淀網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
如果你正在進(jìn)行編寫(xiě)一個(gè)項(xiàng)目,但是缺少一個(gè)認(rèn)證模塊,這時(shí)就可以使用本節(jié)中分享的組件 casdoor 了,它支持OAuth 2.0、OIDC 和 SAML 的 UI 優(yōu)先集中式身份驗(yàn)證/單點(diǎn)登錄 (SSO) 平臺(tái),與 Casbin RBAC 和 ABAC 權(quán)限管理集成。能讓我們的系統(tǒng)快速集成一套完整的認(rèn)證體系,同時(shí)它支持第三方應(yīng)用程序登錄,包括國(guó)內(nèi)國(guó)外常見(jiàn)的平臺(tái),具體可查看 官方 描述,這里就不具體說(shuō)明了。
以下是官方說(shuō)明的一些特點(diǎn):
這個(gè)認(rèn)證模塊是基于Golang語(yǔ)言,OAuth2協(xié)議基礎(chǔ)上提供相關(guān)功能的,不熟悉OAuth2協(xié)議的先去了解一下,防止使用過(guò)程中難于理解。
⑴ Go Kit
它本身不是一個(gè)框架,而是一套微服務(wù)工具集,可以用于解決分布式系統(tǒng)開(kāi)發(fā)中的大多數(shù)常見(jiàn)問(wèn)題,所以使用者可以專(zhuān)注于你的業(yè)務(wù)邏輯中。
⑵ Gingko
是一個(gè)Go測(cè)試框架,目的是幫助我們使用行為驅(qū)動(dòng)開(kāi)發(fā)風(fēng)格高效地編寫(xiě)富有表現(xiàn)力和全面的測(cè)試,它有著非常良好的幫助文檔,任何人都可以輕松地在項(xiàng)目中集成使用它。
⑶ NSQ
實(shí)時(shí)分布式消息傳遞平臺(tái),提供高可用性和可靠的消息傳遞保證,可以水平擴(kuò)展,支持負(fù)載均衡,安裝部署非常方便。
⑷ Goose
Golang中最佳的數(shù)據(jù)庫(kù)遷移包,通過(guò)創(chuàng)建增量SQL更改和Go函數(shù)來(lái)管理數(shù)據(jù)庫(kù)結(jié)構(gòu),在Go1.16版本以上,還支持了嵌入式sql遷移。
⑸ GORM
是一個(gè)功能齊全的Golang對(duì)象關(guān)系映射庫(kù),是一種開(kāi)發(fā)人員友好的工具,用于在不兼容的類(lèi)型系統(tǒng)之間轉(zhuǎn)換數(shù)據(jù),專(zhuān)門(mén)設(shè)計(jì)用于在類(lèi)型系統(tǒng)之間切換時(shí)最大限度地減少重寫(xiě)代碼。
⑹ Authboss
一個(gè)模塊化的身份驗(yàn)證包,使用它你可以快速地在項(xiàng)目中進(jìn)行身份驗(yàn)證管理。它有幾個(gè)常見(jiàn)的身份驗(yàn)證和授權(quán)模塊供開(kāi)發(fā)人員選擇。
⑺ cli
是一個(gè)簡(jiǎn)單快捷的命令行管理包,用于為Go語(yǔ)言構(gòu)建命令行應(yīng)用程序,允許開(kāi)發(fā)人員開(kāi)發(fā)自己的富有表現(xiàn)力的命令行應(yīng)用程序,用于創(chuàng)建標(biāo)志、bash完成例程并生成幫助文本。
⑻ Vegeta
是一個(gè)用于HTTP負(fù)載測(cè)試的工具包,這個(gè)多功能工具專(zhuān)為測(cè)試具有恒定請(qǐng)求率的HTTP服務(wù)而設(shè)計(jì)。它可以有效地分析程序中的潛在問(wèn)題,是一個(gè)始終貫穿以提高整體性能為目的的包。
本篇文章中,將描述如何使用go創(chuàng)建CA,并使用CA簽署證書(shū)。在使用openssl創(chuàng)建證書(shū)時(shí),遵循的步驟是 創(chuàng)建秘鑰 創(chuàng)建CA 生成要頒發(fā)證書(shū)的秘鑰 使用CA簽發(fā)證書(shū)。這種步驟,那么我們現(xiàn)在就來(lái)嘗試下。
首先,會(huì)從將從創(chuàng)建 CA 開(kāi)始。 CA 會(huì)被用來(lái)簽署其他證書(shū)
接下來(lái)需要對(duì)證書(shū)生成公鑰和私鑰
然后生成證書(shū):
我們看到的證書(shū)內(nèi)容是PEM編碼后的,現(xiàn)在 caBytes 我們有了生成的證書(shū),我們將其進(jìn)行 PEM 編碼以供以后使用:
證書(shū)的 x509.Certificate 與CA的 x509.Certificate 屬性有稍微不同,需要進(jìn)行一些修改
為該證書(shū)創(chuàng)建私鑰和公鑰:
有了上述的內(nèi)容后,可以創(chuàng)建證書(shū)并用CA進(jìn)行簽名
要保存成證書(shū)格式需要做PEM編碼
創(chuàng)建一個(gè) ca.go 里面是創(chuàng)建ca和頒發(fā)證書(shū)的邏輯
如果需要使用的話(huà),可以引用這些函數(shù)
panic: x509: unsupported public key type: rsa.PublicKey
這里是因?yàn)? x509.CreateCertificate 的參數(shù) privatekey 需要傳入引用變量,而傳入的是一個(gè)普通變量
extendedKeyUsage :增強(qiáng)型密鑰用法(參見(jiàn)"new_oids"字段):服務(wù)器身份驗(yàn)證、客戶(hù)端身份驗(yàn)證、時(shí)間戳。
keyUsage : 密鑰用法,防否認(rèn)(nonRepudiation)、數(shù)字簽名(digitalSignature)、密鑰加密(keyEncipherment)。
文章來(lái)自
常用別人的身份證號(hào)實(shí)名認(rèn)證,別人實(shí)名認(rèn)過(guò)會(huì)有響,那當(dāng)然是有影響
你用誰(shuí)的身份證將來(lái)出事就是是誰(shuí)的,所以身份證不能輕易借給別人使用,只能自己使
當(dāng)您對(duì)外部模塊的存儲(chǔ)庫(kù)進(jìn)行了 fork (例如修復(fù)模塊代碼中的問(wèn)題或添加功能)時(shí),您可以讓 Go 工具將您的 fork 用于模塊的源代碼。這對(duì)于測(cè)試您自己的代碼的更改很有用。
為此,您可以使用go.mod 文件中的replace指令將外部模塊的原始模塊路徑替換為存儲(chǔ)庫(kù)中 fork 的路徑。這指示 Go 工具在編譯時(shí)使用替換路徑(fork 的位置),例如,同時(shí)允許您保留import 原始模塊路徑中的語(yǔ)句不變。
在以下 go.mod 文件示例中,當(dāng)前模塊需要外部模塊example.com/theirmodule。然后該replace指令將原始模塊路徑替換為example.com/myfork/theirmodule模塊自己的存儲(chǔ)庫(kù)的分支。
設(shè)置require/replace對(duì)時(shí),使用 Go 工具命令確保文件描述的需求保持一致。使用go list命令獲取當(dāng)前模塊正在使用的版本。然后使用go mod edit命令將需要的模塊替換為fork:
注意: 當(dāng)您使用該replace指令時(shí),Go 工具不會(huì)像添加依賴(lài)項(xiàng)中所述對(duì)外部模塊進(jìn)行身份驗(yàn)證。
您可以使用go get命令從其存儲(chǔ)庫(kù)中的特定提交為模塊添加未發(fā)布的代碼。
為此,您使用go get命令,用符號(hào)@指定您想要的代碼 。當(dāng)您使用go get時(shí),該命令將向您的 go.mod 文件添加一個(gè) 需要外部模塊的require指令,使用基于有關(guān)提交的詳細(xì)信息的偽版本號(hào)。
以下示例提供了一些說(shuō)明。這些基于源位于 git 存儲(chǔ)庫(kù)中的模塊。
當(dāng)您的代碼不再使用模塊中的任何包時(shí),您可以停止將該模塊作為依賴(lài)項(xiàng)進(jìn)行跟蹤。
要停止跟蹤所有未使用的模塊,請(qǐng)運(yùn)行g(shù)o mod tidy 命令。此命令還可能添加在模塊中構(gòu)建包所需的缺失依賴(lài)項(xiàng)。
要?jiǎng)h除特定依賴(lài)項(xiàng),請(qǐng)使用go get,指定模塊的模塊路徑并附加 @none,如下例所示:
go get命令還將降級(jí)或刪除依賴(lài)于已刪除模塊的其他依賴(lài)項(xiàng)。
當(dāng)您使用 Go 工具處理模塊時(shí),這些工具默認(rèn)從 proxy.golang.org(一個(gè)公共的 Google 運(yùn)行的模塊鏡像)或直接從模塊的存儲(chǔ)庫(kù)下載模塊。您可以指定 Go 工具應(yīng)該使用另一個(gè)代理服務(wù)器來(lái)下載和驗(yàn)證模塊。
如果您(或您的團(tuán)隊(duì))已經(jīng)設(shè)置或選擇了您想要使用的不同模塊代理服務(wù)器,您可能想要這樣做。例如,有些人設(shè)置了模塊代理服務(wù)器,以便更好地控制依賴(lài)項(xiàng)的使用方式。
要為 Go 工具指定另一個(gè)模塊代理服務(wù)器,請(qǐng)將GOPROXY 環(huán)境變量設(shè)置為一個(gè)或多個(gè)服務(wù)器的 URL。Go 工具將按照您指定的順序嘗試每個(gè) URL。默認(rèn)情況下,GOPROXY首先指定一個(gè)公共的 Google 運(yùn)行模塊代理,然后從模塊的存儲(chǔ)庫(kù)直接下載(在其模塊路徑中指定):
您可以將變量設(shè)置為其他模塊代理服務(wù)器的 URL,用逗號(hào)或管道分隔 URL。
Go 模塊經(jīng)常在公共互聯(lián)網(wǎng)上不可用的版本控制服務(wù)器和模塊代理上開(kāi)發(fā)和分發(fā)。您可以設(shè)置 GOPRIVATE環(huán)境變量。您可以設(shè)置GOPRIVATE環(huán)境變量來(lái)配置go命令以從私有源下載和構(gòu)建模塊。然后 go 命令可以從私有源下載和構(gòu)建模塊。
GOPRIVATE或環(huán)境變量可以設(shè)置為匹配模塊前綴的全局模式列表,這些GONOPROXY前綴是私有的,不應(yīng)從任何代理請(qǐng)求。例如: