Skip to content

Consumers

Consumers on Github

The concept of consumers is used in Direktiv's gateway. The following example uses two consumers and an endpoint requiring authentication.

For authentication the key-auth plugin is used where key_name defines the name of the API key. By default all consumers in Direktiv can access an endpoint.

In this example there ius an additional ACL plugin configured which limits the access by groups. In this case only consumers with group1 can access the route.

This request would be succesful because it is using the API key of consumer1.

curl --request GET \
  --url http://MYSERVER/ns/examples/consumer \
  --header 'mykey: apikey'

The second request would fail because although the user can be authenticated the ACL plugin denies the request because of the group membership.

curl --request GET \
  --url http://MYSERVER/ns/examples/consumer \
  --header 'mykey: apikey2'
Route with Authentication
x-direktiv-api: endpoint/v2
x-direktiv-config:
  path: /consumer
  plugins:
    target:
      type: target-flow
      configuration:
        flow: /workflows/wf1.yaml
        async: false
    inbound:
      - type: acl
        configuration:
          allow_groups:
            - group1
    auth:
      - type: key-auth
        configuration:
          add_username_header: false
          add_tags_header: false
          add_groups_header: false
          key_name: mykey
get:
  summary: Consumer endpoint
  responses:
    "200":
      description: Success
Consumer 1
direktiv_api: consumer/v1
username: demo
password: password
api_key: apikey
tags:
  - tag1
groups:
  - group1
Consumer 2
direktiv_api: consumer/v1
username: demo2
password: password2
api_key: apikey2
groups:
  - group2