微服務Kong(九) 認證參考

2021-10-07 21:18:10 字數 3240 閱讀 5356

客戶端訪問上游api服務,通常由kong的認證外掛程式及其配置引數來控制。

通用認證

一般情況下,上游api服務都需要客戶端有身份認證,且不允許錯誤的認證或無認證的請求通過。認證外掛程式可以實現這一需求。這些外掛程式的通用方案/流程如下:

1、向乙個api或全域性新增auth外掛程式(此外掛程式不作用於consumers);

2、常見乙個consumer物件;

3、為consumer提供指定的驗證外掛程式方案的身份驗證憑據;

4、現在,只要有請求進入kong,都將檢查其提供的身份驗證憑據(取決於auth型別),如果該請求無法被驗證或者驗證失敗,則請求會被鎖定,不執行向上有服務**的操作。

但是,上述的一般流程並不是總是有效的。譬如,當使用了外部驗證方案(比如ldap)時,kong就不會(不需要)對consumer進行身份驗證。

consumers

匿名訪問

在kong 0.10.x版本之前,你可以將指定的api配置為僅允許經過身份驗證的訪問(通過外掛程式來實現)或只允許匿名訪問。也就是說,乙個指定的api,不允許對於某些consumer實行身份驗證,而對於另外的consumer實行匿名訪問。

在0.10.x版本以後,這些限制取消了--同乙個api可以同時實現驗證和匿名兩種訪問方式。你可以使用他的這種特性,為乙個api提供兩種服務方式:以較低的速率提供匿名訪問許可權,以較高的速率實現驗證訪問許可權。為指定api提供乙個使用者試用體驗。

要配置這樣的api,您首先應用所選的認證外掛程式,然後建立乙個新的consumer來表示匿名使用者,然後配置你的身份驗證外掛程式以允許匿名訪問。這裡有乙個示例,它假設您已經配置了乙個名為example-api的api:

1、建立example-api:

此時,無論什麼樣的請求,http://localhost:8000/auth-sample 都會有輸出資訊。

2、配置 key-auth 外掛程式:

3、驗證 key-auth 外掛程式是否正確配置:

此時,由於你並未在請求引數或請求頭里使用apikey,所以這個請求會報403錯誤:

4、建立乙個匿名consumer:

每一次的kong的**請求,都會有乙個對應的consumer物件。這裡建立乙個anonymous_consumer來測試api的匿名請求:

你會得到以下的返回資訊:

5、開啟api的匿名請求:

您現在將重新配置金鑰驗證外掛程式,以允許匿名訪問:

這裡的兩個uuid,分別是第2步和第4步中產生的uuid。具體請參考兩步操作中返回引數id。

config.anonymous = 引數表示該api上的金鑰驗證外掛程式允許匿名訪問,並將此訪問與上一步中收到的consumer的id相關聯。在此步驟中,您需要提供有效的consumerid - 當進行匿名配置時,不會對consumer的id進行檢驗,如果配置了乙個不存在的或錯誤的consumerid,則會導致外掛程式不能正常執行。

6、驗證匿名訪問:

這個訪問請求和第三步中的一樣,然而,此時的訪問是通過的,只因為你在第五步中配置了匿名訪問。返回內容大致是:

,

...}

這顯示,請求通過了,並且是以匿名的方式。

多重驗證

kong 0.10.x擴充套件了為給定api應用多個驗證外掛程式的能力,並允許不同的客戶端使用不同的身份驗證方法來訪問給定的api服務。在評估多個身份驗證憑據時,可以將驗證外掛程式的行為設定為邏輯and或邏輯or。該行為的關鍵是配置config.anonymous屬性。

· config.anonymous 預設為未設定。如果此屬性未設定(空),則auth外掛程式將始終執行身份驗證,並返回40x響應(如果未驗證)。當呼叫多個驗證外掛程式時,會導致邏輯and。

· config.anonymous 設定為有效的consumer id。在這種情況下,auth外掛程式只有在尚未認證的情況下才會執行身份驗證。當身份驗證失敗時,它不會返回40x響應,而是將匿名consumer設定為consumer。當呼叫多個驗證外掛程式時,會使用or+匿名。

備註1:所有的或任何乙個驗證外掛程式都可配置為可使匿名訪問的。但是,如果要混合使用驗證外掛程式,則對於匿名訪問的配置就需要進行甄選,否則會出現混亂。

備註2:如果使用and邏輯,則最後乙個執行的驗證外掛程式將是把驗證資訊傳遞給上游服務的那個。當使用or邏輯時,傳遞給上游服務驗證資訊的那個外掛程式,將會是第乙個成功驗證consumer的那個外掛程式,或者是最後乙個配置了匿名訪問許可權的那個外掛程式。

ps:如果對api使用多個驗證外掛程式,且外掛程式間的邏輯配置為or的話,最好不要為每個外掛程式開啟匿名訪問,這樣才能保證最終能成功請求的consumer是預期的那個。否則會有不可預期的結果出現。

微服務Kong(九) 認證參考

客戶端訪問上游api服務,通常由kong的認證外掛程式及其配置引數來控制。通用認證 一般情況下,上游api服務都需要客戶端有身份認證,且不允許錯誤的認證或無認證的請求通過。認證外掛程式可以實現這一需求。這些外掛程式的通用方案 流程如下 1 向乙個api或全域性新增auth外掛程式 此外掛程式不作用於...

微服務Kong(二) 快速入門

在本節中,您將學習如何管理您的kong例項。首先,我們將指導您如何啟動kong,以便您能訪問kong的restful形式的管理介面,您可以通過它來管理您的api,consumers等。通過管理型api傳送的資料將儲存在kong的資料庫中 kong支援postgresql和cassandra兩種資料庫...

微服務學習九

ppt 2019 中國.net 開發者峰會目前在國內的.net社群還是很有影響力的,宣傳的內容也都是比較新潮和前言的技術棧。有乙個不爭的現實是基本上主題都是關於.net core的,以及基於該主題之上的延展。比如ml.net相關的機器學習 基於.net core的微服務實戰 傳統轉型.net cor...