# Class: Configuration

[💗 Help the project](https://github.com/sponsors/panva)

Support from the community to continue maintaining and improving this module is welcome. If you find the module useful, please consider supporting the project by [becoming a sponsor](https://github.com/sponsors/panva).

***

Represents an authorization server and its client configuration.

Configuration is an abstraction over the
[OAuth 2.0 Authorization Server metadata](../interfaces/ServerMetadata.md) and
[OAuth 2.0 Client metadata](../interfaces/ClientMetadata.md)

Configuration instances are obtained either through

- (RECOMMENDED) the [discovery](../functions/discovery.md) function that discovers the
  [OAuth 2.0 Authorization Server metadata](../interfaces/ServerMetadata.md) using the
  Authorization Server's Issuer Identifier, or
- The Configuration constructor if the
  [OAuth 2.0 Authorization Server metadata](../interfaces/ServerMetadata.md) is known
  upfront

## Examples

(RECOMMENDED) Setting up a Configuration with a Server Metadata discovery
step

```ts
let server!: URL
let clientId!: string
let clientSecret!: string | undefined

let config = await client.discovery(server, clientId, clientSecret)
```

Setting up a Configuration with a constructor

```ts
let server!: client.ServerMetadata
let clientId!: string
let clientSecret!: string | undefined

let config = new client.Configuration(server, clientId, clientSecret)
```

## Implements

- [`ConfigurationMethods`](../interfaces/ConfigurationMethods.md)
- [`ConfigurationProperties`](../interfaces/ConfigurationProperties.md)

## Constructors

### Constructor

▸ **new Configuration**(`server`, `clientId`, `metadata?`, `clientAuthentication?`): `Configuration`

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `server` | [`ServerMetadata`](../interfaces/ServerMetadata.md) | Authorization Server Metadata |
| `clientId` | `string` | Client Identifier at the Authorization Server |
| `metadata?` | `string` \| [`Partial`](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype)\<[`ClientMetadata`](../interfaces/ClientMetadata.md)\> | Client Metadata, when a string is passed it is a shorthand for passing just [ClientMetadata.client\_secret](../interfaces/ClientMetadata.md#client_secret). |
| `clientAuthentication?` | [`ClientAuth`](../type-aliases/ClientAuth.md) | Implementation of the Client's Authentication Method at the Authorization Server. Default is [ClientSecretPost](../functions/ClientSecretPost.md) using the [ClientMetadata.client\_secret](../interfaces/ClientMetadata.md#client_secret). |

#### Returns

`Configuration`
