簡體   English   中英

WSO2 API Manager獲得沒有API密鑰/令牌的訂閱層

[英]WSO2 API Manager get Subscription Tier without API Key / Token

當前與WSO2 API Manager版本2.2.0一起使用。 OAuth 2.0的實現非常好。

當我們通過WSO2 API商店定義新的應用程序時,我們能夠生成“使用者密鑰”和“秘密”,並選擇“授予類型”來生成訪問令牌。 之后,我們應該使用一些訂閱層訂閱API。

然后在API調用期間授權訪問令牌(也稱為API密鑰)。 訪問令牌鏈接到屬性,然后將這些屬性放入AuthenticationContext ,例如org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator.java的以下摘錄:

APIKeyValidationInfoDTO info;
info = keyValidator.getKeyValidationInfo(apiContext, apiKey, apiVersion, authenticationScheme, clientDomain,
                    matchingResource, httpMethod, defaultVersionInvoked);
if (info.isAuthorized()) {
            AuthenticationContext authContext = new AuthenticationContext();
            authContext.setAuthenticated(true);
            authContext.setTier(info.getTier());
            authContext.setApiKey(apiKey);
            authContext.setKeyType(info.getType());
            authContext.setUsername(info.getEndUserName());
            authContext.setCallerToken(info.getEndUserToken());
            authContext.setApplicationId(info.getApplicationId());
            authContext.setApplicationName(info.getApplicationName());
            authContext.setApplicationTier(info.getApplicationTier());
            authContext.setSubscriber(info.getSubscriber());
            authContext.setConsumerKey(info.getConsumerKey());
            APISecurityUtils.setAuthenticationContext(synCtx, authContext, securityContextHeader);

這很正常,但是現在,我想擁有自己的自定義身份驗證處理程序,它不是基於訪問令牌,而是基於X.509證書,其中CN是我的身份標識( 編寫自定義處理程序 )。

另外,我想受益於應用程序設置和訂閱層,以便為使用X.509證書調用API的不同實體管理此類屬性。 使用上述調用它不起作用,因為我沒有任何apiKey

我正在嘗試找到一種方法,該方法如何從X.509證書而不是訪問令牌中獲取具有標識的應用程序API數據來設置訂閱層和其他AuthenticationContext屬性。

有什么建議可以做到嗎?

沒有令牌就無法找到訂閱或應用程序詳細信息,除非您與請求本身一起發送該信息。 沒有令牌,您只能知道API是什么,但不知道應用程序是什么。

這些屬性是必需的,因為它們用於節流處理程序中的應用程序和訂閱級別節流。 您可以做的是在證書中設置一些屬性,例如commonNameAtribute(CN)作為應用程序名稱,將客戶端ip(從messageContext獲取)作為應用程序ID。 因此,應用程序級別限制將起作用,而無需在商店中創建應用程序。 將應用程序層設置為商店中任何可用的可用應用程序層之一。 將使用者密鑰設置為null,並將訂戶也設置為commonNameAtribute。 並且您可以重寫DefaultKeyValidationHandler以便跳過訂閱驗證。 可以在api-manager.xml中配置此類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM