成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何在微服務(wù)架構(gòu)中對(duì)資源(前端頁面+后端接口)進(jìn)行權(quán)限控制

Nosee / 674人閱讀

如何對(duì)資源(前端頁面+后端接口)進(jìn)行權(quán)限控制

在微服務(wù)架構(gòu)中,請(qǐng)求的攔截在gateway中完成,而權(quán)限的查詢是在uaa中完成,在gateway和uaa集成部署的情況下實(shí)現(xiàn)較為簡(jiǎn)單,如果兩者分離實(shí)現(xiàn)起來就會(huì)比較麻煩,一種方案是在gateway的資源filter中內(nèi)部調(diào)用uaa的權(quán)限查詢模塊,該方案是可行的,但是存在兩個(gè)弊端:

響應(yīng)延時(shí):每個(gè)資源的請(qǐng)求都會(huì)附帶一次uaa內(nèi)部調(diào)用,加重uaa服務(wù)的負(fù)擔(dān)并延長(zhǎng)了響應(yīng)時(shí)間。

過度依賴:gateway作為api網(wǎng)關(guān),過度依賴了api提供方(uaa)的內(nèi)部方法,導(dǎo)致系統(tǒng)耦合度提升。

因此應(yīng)尋找一種低響應(yīng)延時(shí)、松散依賴的解決方案:“token擴(kuò)展”。

"token擴(kuò)展"的思路為在token形成時(shí)追加用戶資源權(quán)限(ar)屬性,在資源的攔截中獲取ar并與當(dāng)前請(qǐng)求的資源比對(duì),相當(dāng)于將用戶的資源權(quán)限緩存到了token中,uaa通過客戶端瀏覽器將權(quán)限信息傳遞至gateway,gateway直接解析request獲取AR,避免了內(nèi)部調(diào)用導(dǎo)致的過度依賴問題和相應(yīng)延時(shí)問題。此方案應(yīng)注意在用戶登錄期間的AR變動(dòng)需在下次登錄后方能生效?。。?/p>

具體步驟如下:

uaa中擴(kuò)展token屬性(具體步驟參考最后部分),如在token中擴(kuò)展ar屬性,內(nèi)部包含當(dāng)前用戶有權(quán)限訪問的前端頁面列表

{...,"ar":["a.html","b.html"]}

gateway中攔截鑒權(quán)

        //解析ar
        Cookie accessTokenCookie = OAuth2CookieHelper.getAccessTokenCookie(request);
        Map additionalInformation = tokenStore.readAccessToken(accessTokenCookie.getValue())
                .getAdditionalInformation();
        List ar = (List) additionalInformation.get("ar");
        //鑒權(quán)
        for (String resourceUrl : ar) {
                if (resourceUrl == null) {
                    continue;
                }
                if (resourceUrl.startsWith(requestUri)) {
                    return false;
                }
        }
        
token 屬性擴(kuò)展

org.springframework.security.oauth2.provider.token.TokenEnhancer#enhance提供了擴(kuò)展token屬性的可能性,以下demo在token中增加ar屬性,并使用@Component注入容器以生效。

@Component
public class ArTokenEnhancer implements TokenEnhancer {
    
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
        addClaims((DefaultOAuth2AccessToken) accessToken,authentication);
        return accessToken;
    }

    private void addClaims(DefaultOAuth2AccessToken token, OAuth2Authentication authentication) {
        Map additionalInformation = token.getAdditionalInformation();
        additionalInformation.put("ar", "something you like");
        token.setAdditionalInformation(additionalInformation);
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72705.html

相關(guān)文章

  • 權(quán)限設(shè)計(jì)的雜談

    摘要:權(quán)限設(shè)計(jì)的雜談這篇文章的定位,不是宣傳某個(gè)框架,僅僅之是梳理一下有關(guān)權(quán)限方面的一些想法和最近項(xiàng)目中的一些探索過程。而這兩者的取舍則是有設(shè)計(jì)人員決定的。數(shù)據(jù)抽象原則最小特權(quán)劃分從某個(gè)程度上來說決定了控制的對(duì)象,而數(shù)據(jù)抽象原則是是決定了操作。 權(quán)限設(shè)計(jì)的雜談 這篇文章的定位,不是宣傳某個(gè)框架,僅僅之是梳理一下有關(guān)權(quán)限方面的一些想法和最近項(xiàng)目中的一些探索過程。我們主要想解決一下問題。 什么...

    yck 評(píng)論0 收藏0
  • 深入理解Spring Cloud與微服務(wù)構(gòu)建【二】 - 2.1 微服務(wù)應(yīng)該具備的功能

    摘要:口服務(wù)的負(fù)載均衡。服務(wù)的注冊(cè)與發(fā)現(xiàn)接口管理服務(wù)注冊(cè)是指向服務(wù)注冊(cè)中心注冊(cè)一個(gè)服務(wù)實(shí)例,服務(wù)提供者將自己的服務(wù)信息如服務(wù)名地址等告知服務(wù)注冊(cè)中心。服務(wù)注冊(cè)中心會(huì)提供服務(wù)的健康檢查方案,檢查被注冊(cè)的服務(wù)是否可用。服務(wù)降級(jí)的功能。 微服務(wù)具有以下的特點(diǎn)。 口 按照業(yè)務(wù)來劃分服務(wù),單個(gè)服務(wù)代碼量小,業(yè)務(wù)單一,易于維護(hù)。 口 每個(gè)微服務(wù)都有自己獨(dú)立的基礎(chǔ)組件,例如數(shù)據(jù)庫、 緩存等,且運(yùn)行在獨(dú)立...

    starsfun 評(píng)論0 收藏0
  • serverless在微店node領(lǐng)域的探索應(yīng)用

    摘要:參與者流量來自于內(nèi)部系統(tǒng)和外部流量,其中大部分來自于外部流量。水平擴(kuò)容服務(wù)的水平擴(kuò)容重要性不言而喻。 背景 目前微店中臺(tái)團(tuán)隊(duì)為了滿足公司大部分產(chǎn)品、運(yùn)營以及部分后端開發(fā)人員的嘗鮮和試錯(cuò)的需求,提供了一套基于圖形化搭建的服務(wù)端接口交付方案,利用該方案及提供的系統(tǒng)可生成一副包含運(yùn)行時(shí)環(huán)境定義可立即運(yùn)行的工程代碼,最后,通過 某種serverless平臺(tái) 實(shí)現(xiàn)生成后代碼的部署、CI、運(yùn)行、反...

    mikyou 評(píng)論0 收藏0
  • [譯] 用 Node.js 搭建 API Gateway

    摘要:協(xié)議轉(zhuǎn)換微服務(wù)架構(gòu)允許使用不同的協(xié)議以便于獲得使用不同技術(shù)的優(yōu)勢(shì)。過于龐大的在實(shí)現(xiàn)時(shí),應(yīng)當(dāng)避免將非通用邏輯如領(lǐng)域特定數(shù)據(jù)轉(zhuǎn)換放入其中。服務(wù)應(yīng)始終對(duì)其數(shù)據(jù)域擁有完全的所有權(quán)。構(gòu)建一個(gè)過于龐大的,從服務(wù)團(tuán)隊(duì)爭(zhēng)奪控制權(quán),這違反了微服務(wù)的理念。 我們團(tuán)隊(duì)的后端服務(wù)中,一開始只有一個(gè)大服務(wù),所有的東西都往里面寫,可以想象下,當(dāng)這個(gè)服務(wù)變得不斷的龐大,將會(huì)變得多么難以維護(hù)。后來逐漸把一些數(shù)據(jù)服務(wù)抽...

    鄒強(qiáng) 評(píng)論0 收藏0
  • 搭建并使用前端代理服務(wù)

    摘要:本文主要是從前端的角度,使用搭建一個(gè)簡(jiǎn)易的測(cè)試項(xiàng)目,在自己搭建的代理服務(wù)的下實(shí)現(xiàn)簡(jiǎn)單的微信分享。在微信測(cè)試工具中調(diào)試接口,點(diǎn)擊發(fā)送即可會(huì)出現(xiàn)比較漂亮的分享鏈接。 一、背景簡(jiǎn)介: 目前流行的前后端分離項(xiàng)目,一般都處于不同的域名下,前后端開發(fā)過程中,是分別部署在不同服 務(wù)器上,在做接口聯(lián)調(diào)時(shí),會(huì)出現(xiàn)跨域的情況,部署上線時(shí),基本不存在這種需要,因此搭建一個(gè) 前端代理服務(wù),方便開發(fā)。 作為一個(gè)...

    lyning 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<