#### [Abblix\.Oidc\.Server](https://www.abblix.com/en/docs/api/abblix-oidc-server 'index')
### [Abblix\.Oidc\.Server\.Common\.Configuration](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Configuration 'Abblix\.Oidc\.Server\.Common\.Configuration')

## DeviceAuthorizationOptions Class

Provides configuration options for the Device Authorization Grant \(RFC 8628\)\.

```csharp
public record DeviceAuthorizationOptions : System.IEquatable<Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions>
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → DeviceAuthorizationOptions

Implements [System\.IEquatable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')[DeviceAuthorizationOptions](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions 'Abblix\.Oidc\.Server\.Common\.Configuration\.DeviceAuthorizationOptions')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')
### Properties

## DeviceAuthorizationOptions\.CodeLifetime Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.CodeLifetime}

The lifetime of device\_code and user\_code\. After this duration, the codes expire
and the client must start a new device authorization request\.

```csharp
public System.TimeSpan CodeLifetime { get; set; }
```

#### Property Value
[System\.TimeSpan](https://learn.microsoft.com/en-us/dotnet/api/system.timespan 'System\.TimeSpan')

## DeviceAuthorizationOptions\.DeviceCodeLength Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.DeviceCodeLength}

The length in bytes of the device code\. The device code is a high\-entropy string
used by the client to poll the token endpoint\. Must be at least 128 bits \(16 bytes\)
of entropy per RFC 8628 Section 5\.2\.

```csharp
public int DeviceCodeLength { get; set; }
```

#### Property Value
[System\.Int32](https://learn.microsoft.com/en-us/dotnet/api/system.int32 'System\.Int32')

## DeviceAuthorizationOptions\.IpRateLimitStateExpiration Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.IpRateLimitStateExpiration}

The expiration time for IP rate limit state in storage\.
Should be longer than RateLimitSlidingWindow to prevent premature cleanup\.

```csharp
public System.TimeSpan IpRateLimitStateExpiration { get; set; }
```

#### Property Value
[System\.TimeSpan](https://learn.microsoft.com/en-us/dotnet/api/system.timespan 'System\.TimeSpan')

## DeviceAuthorizationOptions\.MaxBackoffDuration Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.MaxBackoffDuration}

The maximum duration for exponential backoff blocking\.
Prevents indefinite blocking even with many failed attempts\.

```csharp
public System.TimeSpan MaxBackoffDuration { get; set; }
```

#### Property Value
[System\.TimeSpan](https://learn.microsoft.com/en-us/dotnet/api/system.timespan 'System\.TimeSpan')

## DeviceAuthorizationOptions\.MaxFailuresBeforeBackoff Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.MaxFailuresBeforeBackoff}

The maximum number of failed user code verification attempts before exponential backoff is applied\.
Recommended by RFC 8628 Section 5\.2 to prevent brute force attacks\.

```csharp
public int MaxFailuresBeforeBackoff { get; set; }
```

#### Property Value
[System\.Int32](https://learn.microsoft.com/en-us/dotnet/api/system.int32 'System\.Int32')

## DeviceAuthorizationOptions\.MaxIpFailuresPerMinute Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.MaxIpFailuresPerMinute}

The maximum number of failed user code verification attempts allowed from a single IP address
within a one\-minute sliding window\. Prevents distributed brute force attacks\.

```csharp
public int MaxIpFailuresPerMinute { get; set; }
```

#### Property Value
[System\.Int32](https://learn.microsoft.com/en-us/dotnet/api/system.int32 'System\.Int32')

## DeviceAuthorizationOptions\.PollingInterval Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.PollingInterval}

The minimum interval that the client should wait between polling requests to the token endpoint\.

```csharp
public System.TimeSpan PollingInterval { get; set; }
```

#### Property Value
[System\.TimeSpan](https://learn.microsoft.com/en-us/dotnet/api/system.timespan 'System\.TimeSpan')

## DeviceAuthorizationOptions\.RateLimitSlidingWindow Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.RateLimitSlidingWindow}

The duration of the sliding window for per\-IP rate limiting\.
Failed attempts outside this window are not counted toward the rate limit\.

```csharp
public System.TimeSpan RateLimitSlidingWindow { get; set; }
```

#### Property Value
[System\.TimeSpan](https://learn.microsoft.com/en-us/dotnet/api/system.timespan 'System\.TimeSpan')

## DeviceAuthorizationOptions\.UserCodeAlphabet Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.UserCodeAlphabet}

The alphabet used to generate user codes\.
Defaults to numeric digits "0123456789" for universal device compatibility\.
Can be set to letters like "BCDFGHJKLMNPQRSTVWXZ" \(consonants without ambiguous characters\)
or alphanumeric like "BCDFGHJKLMNPQRSTVWXZ23456789"\.

```csharp
public string UserCodeAlphabet { get; set; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

## DeviceAuthorizationOptions\.UserCodeLength Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.UserCodeLength}

The length of the user code \(number of characters\)\.

```csharp
public int UserCodeLength { get; set; }
```

#### Property Value
[System\.Int32](https://learn.microsoft.com/en-us/dotnet/api/system.int32 'System\.Int32')

## DeviceAuthorizationOptions\.VerificationUri Property {#Abblix.Oidc.Server.Common.Configuration.DeviceAuthorizationOptions.VerificationUri}

The user\-facing URI where users can enter their user code\.
This should be short and easy to remember as users will manually type it\.
MUST use HTTPS for security per RFC 8628 Section 6\.1\.

```csharp
public System.Uri VerificationUri { get; set; }
```

#### Property Value
[System\.Uri](https://learn.microsoft.com/en-us/dotnet/api/system.uri 'System\.Uri')
