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

## TokenResponseBuilder Class

Builds the `token` response\-type component of an authorization endpoint success
response — the access\-token contributor of the Implicit / Hybrid Flow\. Generates an
access token via [IAccessTokenService](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Tokens.IAccessTokenService 'Abblix\.Oidc\.Server\.Features\.Tokens\.IAccessTokenService') and stores it on the running
[SuccessfullyAuthenticated](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.SuccessfullyAuthenticated') result\. Registered ONLY when a host calls
`EnableImplicitFlow()`; absent by default per OAuth 2\.1 \(draft\) deprecation guidance\.
Declares `implicit` in [GrantTypesSupported](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.GrantTypesSupported 'Abblix\.Oidc\.Server\.Features\.ImplicitFlow\.TokenResponseBuilder\.GrantTypesSupported') so opting in surfaces the
implicit grant in discovery and registration\-time gating without extra DI wiring\.

```csharp
public class TokenResponseBuilder : Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder, Abblix.Oidc.Server.Common.Interfaces.IGrantTypeInformer
```

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

Implements [IAuthorizationResponseBuilder](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationResponseBuilder'), [IGrantTypeInformer](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Interfaces.IGrantTypeInformer 'Abblix\.Oidc\.Server\.Common\.Interfaces\.IGrantTypeInformer')
### Constructors

## TokenResponseBuilder\(IAccessTokenService\) Constructor {#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.TokenResponseBuilder(Abblix.Oidc.Server.Features.Tokens.IAccessTokenService)}

Builds the `token` response\-type component of an authorization endpoint success
response — the access\-token contributor of the Implicit / Hybrid Flow\. Generates an
access token via [IAccessTokenService](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Tokens.IAccessTokenService 'Abblix\.Oidc\.Server\.Features\.Tokens\.IAccessTokenService') and stores it on the running
[SuccessfullyAuthenticated](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.SuccessfullyAuthenticated') result\. Registered ONLY when a host calls
`EnableImplicitFlow()`; absent by default per OAuth 2\.1 \(draft\) deprecation guidance\.
Declares `implicit` in [GrantTypesSupported](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.GrantTypesSupported 'Abblix\.Oidc\.Server\.Features\.ImplicitFlow\.TokenResponseBuilder\.GrantTypesSupported') so opting in surfaces the
implicit grant in discovery and registration\-time gating without extra DI wiring\.

```csharp
public TokenResponseBuilder(Abblix.Oidc.Server.Features.Tokens.IAccessTokenService accessTokenService);
```
#### Parameters

###### `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.Features.ImplicitFlow.TokenResponseBuilder.TokenResponseBuilder(Abblix.Oidc.Server.Features.Tokens.IAccessTokenService).accessTokenService}
### Properties

## TokenResponseBuilder\.GrantTypesSupported Property {#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.GrantTypesSupported}

The grant types supported by this component, as defined in OAuth 2\.0 and OpenID Connect specifications\.

```csharp
public System.Collections.Generic.IEnumerable<string> GrantTypesSupported { get; }
```

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

#### Property Value
[System\.Collections\.Generic\.IEnumerable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`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.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')

### Remarks
Common grant types include:
- "authorization_code" - Authorization Code Grant
- "implicit" - Implicit Grant
- "refresh_token" - Refresh Token Grant
- "client_credentials" - Client Credentials Grant
- "password" - Resource Owner Password Credentials Grant

## TokenResponseBuilder\.ResponseType Property {#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.ResponseType}

The single OAuth 2\.0 / OIDC response\-type value this processor is responsible for, matched
case\-sensitively against parts of the request's `response_type`\.

```csharp
public string ResponseType { get; }
```

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

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

## TokenResponseBuilder\.BuildResponseAsync\(ValidAuthorizationRequest, AuthorizedGrant, SuccessfullyAuthenticated\) Method {#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated)}

Populates the relevant field on [result](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated).result 'Abblix\.Oidc\.Server\.Features\.ImplicitFlow\.TokenResponseBuilder\.BuildResponseAsync\(Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.ValidAuthorizationRequest, Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant, Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.SuccessfullyAuthenticated\)\.result') for this processor's response type\.
Implementations mutate [result](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated).result 'Abblix\.Oidc\.Server\.Features\.ImplicitFlow\.TokenResponseBuilder\.BuildResponseAsync\(Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.ValidAuthorizationRequest, Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant, Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.SuccessfullyAuthenticated\)\.result') in place and may read fields populated by
processors that ran earlier in the canonical iteration order
\(`code` before `token` before `id_token`\)\.

```csharp
public System.Threading.Tasks.Task BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest request, Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant authorizedGrant, Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated result);
```
#### Parameters

###### `request` [ValidAuthorizationRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.ValidAuthorizationRequest') {#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated).request}

###### `authorizedGrant` [AuthorizedGrant](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant 'Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant') {#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated).authorizedGrant}

###### `result` [SuccessfullyAuthenticated](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.SuccessfullyAuthenticated') {#Abblix.Oidc.Server.Features.ImplicitFlow.TokenResponseBuilder.BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated).result}

Implements [BuildResponseAsync\(ValidAuthorizationRequest, AuthorizedGrant, SuccessfullyAuthenticated\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder#Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.IAuthorizationResponseBuilder.BuildResponseAsync(Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.ValidAuthorizationRequest,Abblix.Oidc.Server.Endpoints.Token.Interfaces.AuthorizedGrant,Abblix.Oidc.Server.Endpoints.Authorization.Interfaces.SuccessfullyAuthenticated) 'Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.IAuthorizationResponseBuilder\.BuildResponseAsync\(Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.ValidAuthorizationRequest, Abblix\.Oidc\.Server\.Endpoints\.Token\.Interfaces\.AuthorizedGrant, Abblix\.Oidc\.Server\.Endpoints\.Authorization\.Interfaces\.SuccessfullyAuthenticated\)')

#### Returns
[System\.Threading\.Tasks\.Task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task 'System\.Threading\.Tasks\.Task')
