#### [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')

## UserInfoHandler Class

Handles user information requests in an OpenID Connect compliant manner\. It ensures that requests for user info
are correctly validated and processed, returning the requested user information if the request is authorized\.

```csharp
public class UserInfoHandler : Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoHandler
```

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

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

## UserInfoHandler\(IUserInfoRequestValidator, IUserInfoRequestProcessor\) Constructor {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoHandler.UserInfoHandler(Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestProcessor)}

Handles user information requests in an OpenID Connect compliant manner\. It ensures that requests for user info
are correctly validated and processed, returning the requested user information if the request is authorized\.

```csharp
public UserInfoHandler(Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator validator, Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestProcessor processor);
```
#### Parameters

###### `validator` [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') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoHandler.UserInfoHandler(Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestProcessor).validator}

An implementation of [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') responsible for validating
            user info requests against OpenID Connect specifications\.

###### `processor` [IUserInfoRequestProcessor](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestProcessor 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.IUserInfoRequestProcessor') {#Abblix.Oidc.Server.Endpoints.UserInfo.UserInfoHandler.UserInfoHandler(Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestValidator,Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestProcessor).processor}

An implementation of [IUserInfoRequestProcessor](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoRequestProcessor 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.IUserInfoRequestProcessor') responsible for processing
            validated requests and retrieving user information\.
### Methods

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

Asynchronously processes a user info request by first validating it and then, if validation is successful,
retrieving the requested user information\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.UserInfoFoundResponse,Abblix.Oidc.Server.Common.OidcError>> HandleAsync(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.UserInfoHandler.HandleAsync(Abblix.Oidc.Server.Model.UserInfoRequest,Abblix.Oidc.Server.Model.ClientRequest).userInfoRequest}

The user info request containing necessary parameters such as the access token\.

###### `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.UserInfoHandler.HandleAsync(Abblix.Oidc.Server.Model.UserInfoRequest,Abblix.Oidc.Server.Model.ClientRequest).clientRequest}

Additional information about the client making the request, useful for contextual
            validation\.

Implements [HandleAsync\(UserInfoRequest, ClientRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoHandler#Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.IUserInfoHandler.HandleAsync(Abblix.Oidc.Server.Model.UserInfoRequest,Abblix.Oidc.Server.Model.ClientRequest) 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.IUserInfoHandler\.HandleAsync\(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')[UserInfoFoundResponse](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.UserInfoFoundResponse 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.UserInfoFoundResponse')[,](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') that resolves to a [UserInfoFoundResponse](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.UserInfo.Interfaces.UserInfoFoundResponse 'Abblix\.Oidc\.Server\.Endpoints\.UserInfo\.Interfaces\.UserInfoFoundResponse'), which contains the requested user
information in case of a valid request, or an [OidcError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError') detailing the reason for failure\.

### Remarks
This method is pivotal for ensuring that only authenticated and authorized requests gain access to sensitive
user information, in line with OpenID Connect protocols\. It leverages the validator to ensure requests meet
OIDC standards and the processor to fetch and return the relevant user information securely\.
