Добавление пользовательского обработчика в определенный API wso2 API-Manager - PullRequest
0 голосов
/ 25 ноября 2018

Мне нужно добавить пользовательский обработчик и APIAuthenticationHandler для конкретного API, и его нужно добавить ниже

class handler = "org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler"/>

(Обратите внимание, что APIAuthenticationHandler здесь вызывается дважды, это пользовательское требование)

Как я могу сделать это программно, отредактировав speed_template.xml

, который я используюAPI-менеджер 2.00

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

if ($! ApiName.toLowerCase () .ndsWith ("basic")) #else

0 голосов
/ 25 ноября 2018

Для этого вы можете использовать Пользовательские свойства API .Добавьте пользовательское свойство (например, auth_mode=Inhouse) в API, а затем на основе этого обновите раздел обработчика в шаблоне скорости следующим образом.

<Handlers>
    #foreach($handler in $handlers)
        #if(($handler.className ==
"org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler") &&
($apiObj.additionalProperties.get('auth_mode') == "Inhouse"))
            <handler xmlns="http://ws.apache.org/ns/synapse" class="$handler.className">
            #if($handler.hasProperties())
                #set ($map = $handler.getProperties())
                #foreach($property in $map.entrySet())
                    <property name="$!property.key" value="$!property.value"/>
                #end
            #end
            </handler>
            <handler class="org.wso2.apim.custom.extensions.CustomAuthHandler"/>
<Handlers>

Если вы не можете использовать пользовательские свойства, вы можетеиспользуйте $!apiName переменную.

...