Adding custom handler to specific API wso2 API-Manager
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
wso2 wso2-am
add a comment |
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
wso2 wso2-am
add a comment |
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
wso2 wso2-am
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
wso2 wso2-am
wso2 wso2-am
edited Nov 25 '18 at 15:28
Rajith K
asked Nov 25 '18 at 14:04
Rajith KRajith K
315
315
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
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.
Thank you for the comment, I am using APIM 2.0.0 it does not have the feature to add a custom property, Also I need to add the custom handler right below the APIAuthenticationHandler
– Rajith K
Nov 25 '18 at 15:27
Updated the answer. Hope it will help.
– Bee
Nov 25 '18 at 15:41
Thank you very much, I am trying the solution.
– Rajith K
Nov 26 '18 at 7:09
Thank you very much your solution worked for me. I used $apiName to match specific API.
– Rajith K
Nov 30 '18 at 12:22
glad it helped.
– Bee
Nov 30 '18 at 12:22
add a comment |
if ($!apiName.toLowerCase().endsWith("basic"))
#else
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53468280%2fadding-custom-handler-to-specific-api-wso2-api-manager%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
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.
Thank you for the comment, I am using APIM 2.0.0 it does not have the feature to add a custom property, Also I need to add the custom handler right below the APIAuthenticationHandler
– Rajith K
Nov 25 '18 at 15:27
Updated the answer. Hope it will help.
– Bee
Nov 25 '18 at 15:41
Thank you very much, I am trying the solution.
– Rajith K
Nov 26 '18 at 7:09
Thank you very much your solution worked for me. I used $apiName to match specific API.
– Rajith K
Nov 30 '18 at 12:22
glad it helped.
– Bee
Nov 30 '18 at 12:22
add a comment |
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.
Thank you for the comment, I am using APIM 2.0.0 it does not have the feature to add a custom property, Also I need to add the custom handler right below the APIAuthenticationHandler
– Rajith K
Nov 25 '18 at 15:27
Updated the answer. Hope it will help.
– Bee
Nov 25 '18 at 15:41
Thank you very much, I am trying the solution.
– Rajith K
Nov 26 '18 at 7:09
Thank you very much your solution worked for me. I used $apiName to match specific API.
– Rajith K
Nov 30 '18 at 12:22
glad it helped.
– Bee
Nov 30 '18 at 12:22
add a comment |
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.
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.
edited Nov 25 '18 at 15:41
answered Nov 25 '18 at 15:15
BeeBee
7,85453258
7,85453258
Thank you for the comment, I am using APIM 2.0.0 it does not have the feature to add a custom property, Also I need to add the custom handler right below the APIAuthenticationHandler
– Rajith K
Nov 25 '18 at 15:27
Updated the answer. Hope it will help.
– Bee
Nov 25 '18 at 15:41
Thank you very much, I am trying the solution.
– Rajith K
Nov 26 '18 at 7:09
Thank you very much your solution worked for me. I used $apiName to match specific API.
– Rajith K
Nov 30 '18 at 12:22
glad it helped.
– Bee
Nov 30 '18 at 12:22
add a comment |
Thank you for the comment, I am using APIM 2.0.0 it does not have the feature to add a custom property, Also I need to add the custom handler right below the APIAuthenticationHandler
– Rajith K
Nov 25 '18 at 15:27
Updated the answer. Hope it will help.
– Bee
Nov 25 '18 at 15:41
Thank you very much, I am trying the solution.
– Rajith K
Nov 26 '18 at 7:09
Thank you very much your solution worked for me. I used $apiName to match specific API.
– Rajith K
Nov 30 '18 at 12:22
glad it helped.
– Bee
Nov 30 '18 at 12:22
Thank you for the comment, I am using APIM 2.0.0 it does not have the feature to add a custom property, Also I need to add the custom handler right below the APIAuthenticationHandler
– Rajith K
Nov 25 '18 at 15:27
Thank you for the comment, I am using APIM 2.0.0 it does not have the feature to add a custom property, Also I need to add the custom handler right below the APIAuthenticationHandler
– Rajith K
Nov 25 '18 at 15:27
Updated the answer. Hope it will help.
– Bee
Nov 25 '18 at 15:41
Updated the answer. Hope it will help.
– Bee
Nov 25 '18 at 15:41
Thank you very much, I am trying the solution.
– Rajith K
Nov 26 '18 at 7:09
Thank you very much, I am trying the solution.
– Rajith K
Nov 26 '18 at 7:09
Thank you very much your solution worked for me. I used $apiName to match specific API.
– Rajith K
Nov 30 '18 at 12:22
Thank you very much your solution worked for me. I used $apiName to match specific API.
– Rajith K
Nov 30 '18 at 12:22
glad it helped.
– Bee
Nov 30 '18 at 12:22
glad it helped.
– Bee
Nov 30 '18 at 12:22
add a comment |
if ($!apiName.toLowerCase().endsWith("basic"))
#else
add a comment |
if ($!apiName.toLowerCase().endsWith("basic"))
#else
add a comment |
if ($!apiName.toLowerCase().endsWith("basic"))
#else
if ($!apiName.toLowerCase().endsWith("basic"))
#else
answered Nov 29 '18 at 13:26
Basanagouda PatilBasanagouda Patil
766
766
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53468280%2fadding-custom-handler-to-specific-api-wso2-api-manager%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown