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

## SecurityProfileConsistency Class

Checks whether a client's configuration can actually satisfy the profile it selects, so a
contradiction surfaces loudly at registration or startup instead of as a per\-request rejection
the operator has to reverse\-engineer\. The runtime validators already tighten a request to the
profile; this is the fail\-loud companion that catches static configuration that can never produce
a conformant flow in the first place\.

```csharp
public static class SecurityProfileConsistency
```

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

## SecurityProfileConsistency\.FindViolations\(IReadOnlyList\<string\[\]\>, ClientSecurityProfile\) Method {#Abblix.Oidc.Server.Features.ClientInformation.SecurityProfileConsistency.FindViolations(System.Collections.Generic.IReadOnlyList_string[]_,Abblix.Oidc.Server.Common.Constants.ClientSecurityProfile)}

Returns the human\-readable violations that prevent a client with the given registered response
types from satisfying the effective profile, or an empty list when the configuration is
self\-consistent\. The check operates on response types because that is the one part of a FAPI
client the profile cannot silently fix at request time: a client that never permits the
authorization\-code response type, or that permits an implicit/hybrid one, is misconfigured
rather than merely tightened\.

```csharp
public static System.Collections.Generic.IReadOnlyList<string> FindViolations(System.Collections.Generic.IReadOnlyList<string[]> allowedResponseTypes, Abblix.Oidc.Server.Common.Constants.ClientSecurityProfile profile);
```
#### Parameters

###### `allowedResponseTypes` [System\.Collections\.Generic\.IReadOnlyList&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlylist-1 'System\.Collections\.Generic\.IReadOnlyList\`1')[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlylist-1 'System\.Collections\.Generic\.IReadOnlyList\`1') {#Abblix.Oidc.Server.Features.ClientInformation.SecurityProfileConsistency.FindViolations(System.Collections.Generic.IReadOnlyList_string[]_,Abblix.Oidc.Server.Common.Constants.ClientSecurityProfile).allowedResponseTypes}

The response\-type combinations the client is registered for\.

###### `profile` [ClientSecurityProfile](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ClientSecurityProfile 'Abblix\.Oidc\.Server\.Common\.Constants\.ClientSecurityProfile') {#Abblix.Oidc.Server.Features.ClientInformation.SecurityProfileConsistency.FindViolations(System.Collections.Generic.IReadOnlyList_string[]_,Abblix.Oidc.Server.Common.Constants.ClientSecurityProfile).profile}

The effective profile governing the client\.

#### Returns
[System\.Collections\.Generic\.IReadOnlyList&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlylist-1 'System\.Collections\.Generic\.IReadOnlyList\`1')[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlylist-1 'System\.Collections\.Generic\.IReadOnlyList\`1')
