Skip to main content

An example of authentication at gateway while proxied API calls are "trusted"

API Cloud provides the authorization of the APIs published using basic auth. But what do we do if our back-end is also secured using a different mechanism. In this blog i will explain how we can create and API and invoke a back-end when the back-end has been secured using a user name and password.


To demonstrate this sample i will be using a JAX-RS based service used in the WSO2 APP cloud. It is a basic jax-rs application very much like the one found here. It is a service that can be used to get the id and name of a customer when the id is passed as a parameter which is the operation I will be using to demonstrate the example. This service cannot be accessed unless we provide the credentials.

The service was secured in the manner explained in this blog. A security constraint tag was included to the web.xml of the jax-rs service which will require credentials if we need to invoke the methods of this service using our API.

First Let’s create our API to demonstrate the scenario.

1. Log in to WSO2 Cloud and navigate to the API Cloud where it will direct you to the publisher portal. If you do not have an account you can find the steps here.

2. Create a new API and use the guidelines in the image below to design the API. Give the request URI as customerservice/customers/{id} and select implement.



3. In the implement tab we need to give the endpoint as https://appserver.dev.cloud.wso2.com/t/backstage/webapps/customerdetailservi-default-SNAPSHOT/services/customers/customerservice and select the Endpoint Security Scheme as ‘Secured’ under ‘Show more options’.


4. Here we need to provide the credential we have used to secure our back-end service.




5. After which the tiers were selected and the API was published in the store.


6. After the API has been successfully created we can invoking after subscribing to the API using an application and observe the result.


7. Provide the value 123 for the id and Try it. You will see a response as below.




8. Let’s remove the secured property and try to invoke the API again.


9. Go to the API Publisher and select edit option for the API created above.

10. In the implement tab click the ‘Show more options’ link and change the endpoint security scheme as ‘Non Secured’.

11. Save and Publish the API again.

12. Go back to the API Store and invoke the GET method using the id value as 123. You will be unauthorized since the back-end cannot be access unless we pass the required authorization.
   

References:

[1] http://wso2.com/blogs/cloud/your-own-jax-rs-as-an-oauth-web-api-in-minutes/

[2] https://appserver.dev.cloud.wso2.com/t/backstage/webapps/customerdetailservi-default-SNAPSHOT/services/
[3] https://docs.wso2.com/display/AS530/JAX-RS+Basics
[4] http://shenavid.blogspot.com/2015/10/wso2-cloud-wso2-cloud-consists-of-two.html
[5] https://docs.wso2.com/display/APICloud/Create+and+Publish+an+API
[6]https://docs.wso2.com/display/APICloud/Subscribe+to+and+Invoke+an+API

Comments

  1. API calls are the foundation of modern digital interactions, allowing different software systems to communicate and share data seamlessly. They're like the language that applications speak, enabling them to request and exchange information. These calls empower countless online services, from weather apps to social media, making them user-friendly and efficient. The reliability and speed of API calls are crucial, ensuring a smooth experience for users. As our digital world continues to expand, understanding and optimizing API calls remain pivotal for delivering responsive and interconnected software solutions.

    ReplyDelete

Post a Comment

Popular posts from this blog

Adding error sequence to a custom sequence

In my previous posi i explained how to call an endpoint using the call mediator. Usually when errors are thrown from the call mediator we can handle them using a custom sequence. When call mediators fails the execution stops hence handling errors is very essential. For this post I will be modifying the same sequence which i created in the blog post [1] The change which we need to do is we need to modify the sequence definition to map with the error sequence as shown below. You can find the modified sequence here . <sequence xmlns="http://ws.apache.org/ns/synapse" name="countrySequenceWithError" onError="countryErrorSequence"> <property name="uri.var.countryCode" expression="$url:countryCode"/> <property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>     <call blocking="true">         <endpoint>             <http method="get" uri-temp...

WSO2 Cloud

Introduction WSO2 Cloud consists of three commercial cloud offerings namely the API cloud, Integration Cloud and the Identity Cloud. WSO2 Integration Cloud WSO2 Integration Cloud is a public hosted version of the powerful, 100% open-source WSO2 Enterprise Integrator. It allows you to host your cloud-to-cloud, cloud-to-on-premise integrations and API backends on a scalable cloud platform WSO2 API Cloud WSO2 API Cloud is an enterprise-ready, self-service platform that enables you to expose business capabilities as managed APIs and leverage off-the-shelf potential for advertising and selling business APIs. The API Cloud supports all aspects of an API’s lifecycle, from its creation to publication and retirement. The API Cloud is based on WSO2 API Manager , WSO2’s complete solution for designing and publishing APIs and managing a developer community. [2] WSO2 Identity Cloud WSO2 Identity Cloud leverages the functionality of WSO2 Identity Server’s identity and ac...

Invoking external endpoints using the call mediator in wso2 api manager

Introduction In API Manager if you need to do any service chaining use cases the call mediator comes in handy. If you need to use the response received by invoking one endpoint and then use it to invoke another endpoint you can use the call mediator in API Manager. The call mediator behaves in a synchronous manner. Hence, mediation pauses after the service invocation and resumes from the next mediator in the sequence when the response is received. You can read more about the call mediator in the wso2 esb documentation [1] . In api manager 1.10.0 the call mediator works in the blocking mode. Prerequisite Before we can use the call mediator in API Manager 1.10.0 we need to make the following changes to some configs. We need to comment the jms transport sender in axis2_blocking_client.xml found in the location APIM_HOME/repository/conf/axis2. This will resolve the jms sender initialization issues.   <!--transportSender name="jms"        ...