Adding custom handler to specific API wso2 API-Manager

会有一股神秘感。 提交于 2020-01-13 18:05:29

问题


I need to add a custom handler and APIAuthenticationHandler to a specific API and it needs to be added below the

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

(Note that APIAuthenticationHandler is called twice here, it's a custom requirement)

How can I do this programmatically by editing the velocity_template.xml

I'm using API-Manager 2.00

Thank you


回答1:


You can use API custom properties for this. Add a custom property (e.g. auth_mode=Inhouse) to the API and then based on that, update the handler section in the velocity template like this.

<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>

If you can't use custom properties, you can use $!apiName variable.




回答2:


if ($!apiName.toLowerCase().endsWith("basic")) #else



来源:https://stackoverflow.com/questions/53468280/adding-custom-handler-to-specific-api-wso2-api-manager

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!