University of Chicago keys API

Get public keys used to validate JWTs issued by fence

OpenAPI Specification

university-of-chicago-keys-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Fence OpenAPI Specification admin/user keys API
  version: 0.1.0
  description: Access management for Gen3 data commons. Code is available on [GitHub](https://github.com/uc-cdis/fence).
  termsOfService: http://cdis.uchicago.edu/terms/
  contact:
    email: cdis@uchicago.edu
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://example.domain/
tags:
- name: keys
  description: Get public keys used to validate JWTs issued by fence
paths:
  /jwt/keys:
    get:
      tags:
      - keys
      summary: Return the public keys which can be used to validate JWTs issued and signed by fence
      operationId: getKeys
      responses:
        '200':
          description: successful operation
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicKeys'
  /.well-known/jwks:
    get:
      tags:
      - keys
      summary: Get JWK Set used by the application
      description: See [RFC 7517](https://tools.ietf.org/html/rfc7517) for detailed specification and an [example response](https://tools.ietf.org/html/rfc7517#appendix-A.1).
      responses:
        '200':
          description: JWKS response
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/JWKS'
components:
  schemas:
    PublicKeys:
      type: object
      properties:
        keys:
          type: array
          description: array of single-entry dictionaries mapping from key id to public key
          items:
            type: array
            description: tuple of `(key_id, public_key)`
            items:
              type: string
      example:
        keys:
        - - public_key_01
          - '-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----'
    JWKS:
      type: object
      properties:
        keys:
          type: array
          description: array of dictionaries of key information
          items:
            type: object
            properties:
              kty:
                type: string
                description: key type ("RSA" in our implementation)
              alg:
                type: string
                description: algorithm ("RS256" in our implementation)
              n:
                type: string
                description: base64-encoded public key modulus
              e:
                type: string
                description: base64-encoded public key exponent
              kid:
                type: string
                description: key ID
      example:
        keys:
        - kty: RSA
          n: 0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw
          e: AQAB
          alg: RS256
          kid: '2011-04-29'
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: /oauth/authorize
          tokenUrl: /oauth/token
          scopes:
            user: generic user access