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

## UserInfoRequestValidator Class

Validates a UserInfo request: extracts the access token \(per RFC 6750, either the
`Authorization: Bearer` header or the `access_token` form/query parameter, but not both\),
verifies its JWT signature and claims, asserts the `typ` header equals `at+jwt`, and
resolves the originating authentication session, authorization context and client\.

```csharp
public class UserInfoRequestValidator : Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator
```

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

Implements [IUserInfoRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.IUserInfoRequestValidator')
### Constructors

## UserInfoRequestValidator\(IAuthServiceJwtValidator, IAccessTokenService, IClientInfoProvider, IDPoPUserInfoValidator, IMtlsUserInfoValidator\) Constructor {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.UserInfoRequestValidator(Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator,Abblix.Oidc.Server.Features.Tokens.IAccessTokenService,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator)}

Validates a UserInfo request: extracts the access token \(per RFC 6750, either the
`Authorization: Bearer` header or the `access_token` form/query parameter, but not both\),
verifies its JWT signature and claims, asserts the `typ` header equals `at+jwt`, and
resolves the originating authentication session, authorization context and client\.

```csharp
public UserInfoRequestValidator(Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator jwtValidator, Abblix.Oidc.Server.Features.Tokens.IAccessTokenService accessTokenService, Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider clientInfoProvider, Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator dpopValidator, Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator mtlsValidator);
```
#### Parameters

###### `jwtValidator` [IAuthServiceJwtValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator 'Abblix\.Oidc\.Server\.Features\.Tokens\.Validation\.IAuthServiceJwtValidator') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.UserInfoRequestValidator(Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator,Abblix.Oidc.Server.Features.Tokens.IAccessTokenService,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator).jwtValidator}

Validates access\-token JWTs issued by this authorization server\.

###### `accessTokenService` [IAccessTokenService](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Tokens.IAccessTokenService 'Abblix\.Oidc\.Server\.Features\.Tokens\.IAccessTokenService') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.UserInfoRequestValidator(Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator,Abblix.Oidc.Server.Features.Tokens.IAccessTokenService,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator).accessTokenService}

Resolves an [AuthSession](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.UserAuthentication.AuthSession 'Abblix\.Oidc\.Server\.Features\.UserAuthentication\.AuthSession') and
            [AuthorizationContext](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.AuthorizationContext 'Abblix\.Oidc\.Server\.Common\.AuthorizationContext') from the access token\.

###### `clientInfoProvider` [IClientInfoProvider](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.IClientInfoProvider') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.UserInfoRequestValidator(Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator,Abblix.Oidc.Server.Features.Tokens.IAccessTokenService,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator).clientInfoProvider}

Loads the [ClientInfo](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.ClientInfo 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.ClientInfo') for the token's client\.

###### `dpopValidator` [IDPoPUserInfoValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.IDPoPUserInfoValidator') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.UserInfoRequestValidator(Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator,Abblix.Oidc.Server.Features.Tokens.IAccessTokenService,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator).dpopValidator}

RFC 9449 §7 DPoP resource\-server\-side validator that enforces the
            proof\-of\-possession binding when the access token carries a `cnf.jkt` confirmation\.

###### `mtlsValidator` [IMtlsUserInfoValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.IMtlsUserInfoValidator') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.UserInfoRequestValidator(Abblix.Oidc.Server.Features.Tokens.Validation.IAuthServiceJwtValidator,Abblix.Oidc.Server.Features.Tokens.IAccessTokenService,Abblix.Oidc.Server.Features.ClientInformation.IClientInfoProvider,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IDPoPUserInfoValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IMtlsUserInfoValidator).mtlsValidator}

RFC 8705 §3 mutual\-TLS resource\-server\-side validator that enforces
            the certificate binding when the access token carries a `cnf.x5t#S256` confirmation\.
### Methods

## UserInfoRequestValidator\.ValidateAsync\(UserInfoRequest, ClientRequest\) Method {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.UserInfoRequest,Abblix.Oidc.Server.Model.ClientRequest)}

Asynchronously validates a user information request and determines its validity based on
the provided access token and request parameters\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.ValidUserInfoRequest,Abblix.Oidc.Server.Common.OidcError>> ValidateAsync(Abblix.Oidc.Server.Model.UserInfoRequest userInfoRequest, Abblix.Oidc.Server.Model.ClientRequest clientRequest);
```
#### Parameters

###### `userInfoRequest` [UserInfoRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.UserInfoRequest 'Abblix\.Oidc\.Server\.Model\.UserInfoRequest') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.UserInfoRequest,Abblix.Oidc.Server.Model.ClientRequest).userInfoRequest}

The user info request to validate\.

###### `clientRequest` [ClientRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.ClientRequest 'Abblix\.Oidc\.Server\.Model\.ClientRequest') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.UserInfoRequest,Abblix.Oidc.Server.Model.ClientRequest).clientRequest}

Additional client request information for contextual validation\.

Implements [ValidateAsync\(UserInfoRequest, ClientRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator#Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator.ValidateAsync(Abblix.Oidc.Server.Model.UserInfoRequest,Abblix.Oidc.Server.Model.ClientRequest) 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.IUserInfoRequestValidator\.ValidateAsync\(Abblix\.Oidc\.Server\.Model\.UserInfoRequest, Abblix\.Oidc\.Server\.Model\.ClientRequest\)')

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[ValidUserInfoRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.ValidUserInfoRequest 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.ValidUserInfoRequest')[,](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[OidcError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A [System\.Threading\.Tasks\.Task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task 'System\.Threading\.Tasks\.Task') representing the asynchronous operation,
            which upon completion will yield a [Abblix\.Utils\.Result&lt;&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')\.
