我有一個多個伺服器
其中有一個負責商務邏輯,儲存所有業務資料,對外只提供私人的api介面。暫命名為API伺服器;
第二台伺服器,提供給公眾號或網頁端的頁面,主要儲存靜態html和js以及部分對接API伺服器介面的php檔案。暫命名為WECHAT伺服器。
使用者使用時,只能訪問WECHAT伺服器,發送給WECHAT伺服器的請求,經由伺服器私人的強加密api介面請求API伺服器,這樣外部存取許可權可以靠的openid做判斷。
但是現在有個新需求,API伺服器上提供了一個新功能,其資源是針對有屬性A的使用者開放的,屬性A與openid的關聯資訊儲存在API伺服器上的(mysql和redis都有存),但我需要在WECHAT伺服器上就要向使用者給出其是否有許可權訪問這個資源。
目前的幾個方法是這樣的,求大家幫忙裁斷一下哪個好,或者是否有更好的方法。
1、WECHAT伺服器直接去訪問API伺服器上的資料表。這個物理上可以實現,但是感覺不同服務跨伺服器訪問資料太不合邏輯。
2、在API伺服器上新做一個介面API:ifOpenidHasA。這個感覺有點浪費資源,減慢系統速度。
3、在資源A的介面上做校正,請求資源A的時候判斷WECHAT伺服器的請求是否帶參數A。這個目前貌似還好,但是以後萬一有個參數ABCD對應不同資源的時候怎麼搞?以及如果有超管使用者擁有所有許可權的話參數又怎麼搞就不知道了。
補充:可能有些地方沒說太清楚,補充一下:
API介面是走的加密的,目前只有WECHAT伺服器發過去的加密流量能訪問,是在這做的認證。現在API伺服器只能對接WECHAT伺服器,外部是看不到的。以後也不打算做開放的API,都是由WECHAT伺服器或者以後自己的APP用,都是加密的。現在可以認為WECHAT伺服器其實也是個用戶端(雲用戶端或WEB用戶端之類的)。
不過這麼考慮的話以後真要做APP的話,可能方法1就不能用了。
回複內容:
我有一個多個伺服器
其中有一個負責商務邏輯,儲存所有業務資料,對外只提供私人的api介面。暫命名為API伺服器;
第二台伺服器,提供給公眾號或網頁端的頁面,主要儲存靜態html和js以及部分對接API伺服器介面的php檔案。暫命名為WECHAT伺服器。
使用者使用時,只能訪問WECHAT伺服器,發送給WECHAT伺服器的請求,經由伺服器私人的強加密api介面請求API伺服器,這樣外部存取許可權可以靠的openid做判斷。
但是現在有個新需求,API伺服器上提供了一個新功能,其資源是針對有屬性A的使用者開放的,屬性A與openid的關聯資訊儲存在API伺服器上的(mysql和redis都有存),但我需要在WECHAT伺服器上就要向使用者給出其是否有許可權訪問這個資源。
目前的幾個方法是這樣的,求大家幫忙裁斷一下哪個好,或者是否有更好的方法。
1、WECHAT伺服器直接去訪問API伺服器上的資料表。這個物理上可以實現,但是感覺不同服務跨伺服器訪問資料太不合邏輯。
2、在API伺服器上新做一個介面API:ifOpenidHasA。這個感覺有點浪費資源,減慢系統速度。
3、在資源A的介面上做校正,請求資源A的時候判斷WECHAT伺服器的請求是否帶參數A。這個目前貌似還好,但是以後萬一有個參數ABCD對應不同資源的時候怎麼搞?以及如果有超管使用者擁有所有許可權的話參數又怎麼搞就不知道了。
補充:可能有些地方沒說太清楚,補充一下:
API介面是走的加密的,目前只有WECHAT伺服器發過去的加密流量能訪問,是在這做的認證。現在API伺服器只能對接WECHAT伺服器,外部是看不到的。以後也不打算做開放的API,都是由WECHAT伺服器或者以後自己的APP用,都是加密的。現在可以認為WECHAT伺服器其實也是個用戶端(雲用戶端或WEB用戶端之類的)。
不過這麼考慮的話以後真要做APP的話,可能方法1就不能用了。
我取消以前的回答了。我覺得我和你們的思路不在一個頻道上,所以回答的完全驢唇不對馬嘴。
我的思路還是通過授權來保證安全,但是你們的思路是通過資料的加密來保證安全,我覺得兩者的效能差別是很明顯的,結果現在你們發現僅僅依賴加密不能解決所有問題的時候卻擔心安全認證帶來的效能損失...