Emissary-Ingress AuthService API

Operations for managing AuthService custom resources that configure external authentication and authorization services. Emissary-Ingress will call the configured auth service before forwarding requests to upstream services.

OpenAPI Specification

emissary-ingress-authservice-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Emissary-Ingress Configuration AuthService API
  description: Emissary-Ingress is a CNCF incubating Kubernetes-native API gateway and ingress controller built on the Envoy proxy. It is configured through Kubernetes Custom Resource Definitions (CRDs) including Mapping for request routing, Host for domain and TLS management, TLSContext for TLS termination settings, RateLimitService for delegating rate limiting to external services, and AuthService for external authentication. All resources are managed through the Kubernetes API server using standard CRUD operations.
  version: 3.9.0
  contact:
    name: Emissary-Ingress Community
    url: https://www.getambassador.io/community
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://{kubernetes-api-server}
  description: Kubernetes API server
  variables:
    kubernetes-api-server:
      default: localhost:6443
      description: Address of the Kubernetes API server
tags:
- name: AuthService
  description: Operations for managing AuthService custom resources that configure external authentication and authorization services. Emissary-Ingress will call the configured auth service before forwarding requests to upstream services.
paths:
  /apis/getambassador.io/v3alpha1/namespaces/{namespace}/authservices:
    get:
      operationId: listNamespacedAuthService
      summary: Emissary-Ingress List AuthService resources in a namespace
      description: Returns all AuthService custom resources in the specified namespace. AuthService resources configure an external authentication and authorization service that Emissary-Ingress calls before forwarding requests to upstream backend services.
      tags:
      - AuthService
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/labelSelector'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/continueToken'
      responses:
        '200':
          description: Successfully retrieved list of AuthService resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthServiceList'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    post:
      operationId: createNamespacedAuthService
      summary: Emissary-Ingress Create an AuthService resource
      description: Creates a new AuthService custom resource in the specified namespace configuring the external authentication service URL, protocol, timeout, allowed request headers, and allowed authorization headers.
      tags:
      - AuthService
      parameters:
      - $ref: '#/components/parameters/namespace'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthService'
      responses:
        '201':
          description: AuthService resource created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthService'
        '400':
          description: Invalid AuthService specification
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
components:
  schemas:
    AuthServiceSpec:
      type: object
      description: Specification for the AuthService.
      required:
      - auth_service
      properties:
        auth_service:
          type: string
          description: Name (and optional port) of the Kubernetes service providing external authentication.
          example: auth-service:3000
        path_prefix:
          type: string
          description: Path prefix to prepend to the auth service path when making authentication requests.
        timeout_ms:
          type: integer
          description: Timeout in milliseconds for authentication service calls. If the service does not respond in time, the request is rejected.
          minimum: 0
          default: 5000
        tls:
          type: string
          description: Name of a TLSContext to use when connecting to the auth service over TLS.
        proto:
          type: string
          description: Protocol to use when calling the auth service.
          enum:
          - http
          - grpc
          default: http
        allowed_request_headers:
          type: array
          description: Request headers to forward to the auth service. All headers not in this list are stripped before the auth request is made.
          items:
            type: string
        allowed_authorization_headers:
          type: array
          description: Headers from the auth service response to forward to the upstream service on successful authorization.
          items:
            type: string
        include_body:
          type: object
          description: Configuration for forwarding the request body to the auth service.
          properties:
            max_bytes:
              type: integer
              description: Maximum number of request body bytes to send to the auth service.
              minimum: 0
            allow_partial:
              type: boolean
              description: If true, send a partial body when the request body exceeds max_bytes. If false, fail if the body is too large.
        failure_mode_allow:
          type: boolean
          description: If true, requests proceed even if the auth service is unavailable. Defaults to false.
    ObjectMeta:
      type: object
      description: Standard Kubernetes object metadata.
      required:
      - name
      properties:
        name:
          type: string
          description: Name of the resource, unique within the namespace.
          maxLength: 253
        namespace:
          type: string
          description: Namespace the resource belongs to.
        labels:
          type: object
          additionalProperties:
            type: string
          description: Map of string keys and values for organizing resources.
        annotations:
          type: object
          additionalProperties:
            type: string
          description: Map of non-identifying metadata for the resource.
        resourceVersion:
          type: string
          description: Opaque value used for optimistic concurrency control. Must be provided on update and delete operations.
        generation:
          type: integer
          format: int64
          description: Monotonically increasing sequence number for desired state changes.
        uid:
          type: string
          description: Unique identifier assigned by the Kubernetes system.
        creationTimestamp:
          type: string
          format: date-time
          description: Timestamp when the resource was created.
    AuthService:
      type: object
      description: Emissary-Ingress AuthService custom resource configuring an external authentication and authorization service. Before forwarding a request to the upstream service, Emissary-Ingress sends the request to the configured auth service which can approve, reject, or modify the request.
      required:
      - apiVersion
      - kind
      - metadata
      - spec
      properties:
        apiVersion:
          type: string
          description: API version of the resource.
          enum:
          - getambassador.io/v3alpha1
        kind:
          type: string
          description: Resource kind.
          enum:
          - AuthService
        metadata:
          $ref: '#/components/schemas/ObjectMeta'
        spec:
          $ref: '#/components/schemas/AuthServiceSpec'
    AuthServiceList:
      type: object
      description: List of AuthService resources.
      required:
      - apiVersion
      - kind
      - items
      properties:
        apiVersion:
          type: string
        kind:
          type: string
          enum:
          - AuthServiceList
        metadata:
          type: object
        items:
          type: array
          description: List of AuthService resources.
          items:
            $ref: '#/components/schemas/AuthService'
  parameters:
    namespace:
      name: namespace
      in: path
      required: true
      description: The Kubernetes namespace of the resource.
      schema:
        type: string
    continueToken:
      name: continue
      in: query
      required: false
      description: A continuation token for paginating through large result sets, returned from a previous list call.
      schema:
        type: string
    labelSelector:
      name: labelSelector
      in: query
      required: false
      description: A selector to restrict the list of returned resources by their labels. Defaults to everything.
      schema:
        type: string
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of responses to return per page. If there are additional results, a continue token is returned.
      schema:
        type: integer
        minimum: 1
externalDocs:
  description: Emissary-Ingress Documentation
  url: https://www.getambassador.io/docs/emissary/