File

src/well-known/well-known.controller.ts

Description

Controller for the OpenID4VCI well-known endpoints.

Index

Methods

Methods

authzMetadata
authzMetadata(tenantId: string)
Decorators :
@Get(['.well-known/oauth-authorization-server/:tenantId', ':tenantId/.well-known/oauth-authorization-server'])

Authorization Server Metadata

Parameters :
Name Type Optional
tenantId string No
Returns : any
getJwks
getJwks(tenantId: string)
Decorators :
@Header('Content-Type', 'application/jwk-set+json')
@Get(['.well-known/jwks.json/:tenantId', ':tenantId/.well-known/jwks.json'])

Returns the JSON Web Key Set (JWKS) for the authorization server.

Parameters :
Name Type Optional
tenantId string No
issuerMetadata
issuerMetadata(contentType: MediaType, tenantId: string)
Decorators :
@ApiOperation({summary: 'Get OpenID4VCI issuer metadata', description: 'Returns the OpenID4VCI issuer metadata.'})
@ApiProduces(MediaType.APPLICATION_JSON, MediaType.APPLICATION_JWT)
@Get(['.well-known/openid-credential-issuer/:tenantId', ':tenantId/.well-known/openid-credential-issuer'])

Retrieves the OpenID4VCI issuer metadata for a given tenant.

Parameters :
Name Type Optional
contentType MediaType No
tenantId string No
Returns : any
import { Controller, Get, Header, Param } from "@nestjs/common";
import {
    ApiExcludeController,
    ApiOperation,
    ApiProduces,
} from "@nestjs/swagger";
import { ContentType } from "../utils/mediaType/media-type.decorator";
import { MediaType } from "../utils/mediaType/media-type.enum";
import { JwksResponseDto } from "./dto/jwks-response.dto";
//import { Oauth2AuthorizationServerResponseDto } from "./dto/oauth-authorization-server-response.dto";
import { WellKnownService } from "./well-known.service";

/**
 * Controller for the OpenID4VCI well-known endpoints.
 */
@ApiExcludeController(process.env.SWAGGER_ALL !== "true")
@Controller()
export class WellKnownController {
    /**
     * Constructor for WellKnownController.
     * @param wellKnownService
     */
    constructor(private readonly wellKnownService: WellKnownService) {}

    /**
     * Retrieves the OpenID4VCI issuer metadata for a given tenant.
     * @param tenantId
     * @param contentType
     * @returns
     */
    @ApiOperation({
        summary: "Get OpenID4VCI issuer metadata",
        description: "Returns the OpenID4VCI issuer metadata.",
    })
    //we can not set the accept in the apiheader via swagger.
    @ApiProduces(MediaType.APPLICATION_JSON, MediaType.APPLICATION_JWT)
    @Get([
        ".well-known/openid-credential-issuer/:tenantId",
        ":tenantId/.well-known/openid-credential-issuer",
    ])
    issuerMetadata(
        @ContentType() contentType: MediaType,
        @Param("tenantId") tenantId: string,
    ) {
        return this.wellKnownService
            .getIssuerMetadata(tenantId, contentType)
            .catch((err) => {
                console.error("Error in issuerMetadata:", err);
                throw err;
            });
    }

    /**
     * Authorization Server Metadata
     * @returns
     */
    @Get([
        ".well-known/oauth-authorization-server/:tenantId",
        ":tenantId/.well-known/oauth-authorization-server",
    ])
    authzMetadata(@Param("tenantId") tenantId: string) {
        return this.wellKnownService.getAuthzMetadata(tenantId);
    }

    /**
     * Returns the JSON Web Key Set (JWKS) for the authorization server.
     * @returns
     */
    @Header("Content-Type", "application/jwk-set+json")
    @Get([".well-known/jwks.json/:tenantId", ":tenantId/.well-known/jwks.json"])
    getJwks(@Param("tenantId") tenantId: string): Promise<JwksResponseDto> {
        return this.wellKnownService.getJwks(tenantId);
    }
}

results matching ""

    No results matching ""