Class PkceAuthenticator
Provides authentication through PKCE (Proof Key Code Exchange) standards.
Inherited Members
Namespace: Unity.Cloud.Identity
Syntax
public class PkceAuthenticator : IUrlRedirectionAuthenticator, IAuthenticator, IAccessTokenProvider, IAuthenticationStateProvider, IDisposable
Constructors
PkceAuthenticator(IAuthenticationPlatformSupport, IHttpClient, IAppIdProvider, IAppNameProvider, ServiceHostConfiguration)
Builds a PkceAuthenticator that uses the standard Proof Key Code Exchange (PKCE) authentication flow using built-in PkceRequestHandler and PkceConfigurationProvider.
Declaration
[Obsolete("Replaced by new constructor requiring IAccessTokenExchanger injection.")]
public PkceAuthenticator(IAuthenticationPlatformSupport authenticationPlatformSupport, IHttpClient httpClient, IAppIdProvider appIdProvider, IAppNameProvider appNameProvider, ServiceHostConfiguration serviceHostConfiguration = null)
Parameters
| Type | Name | Description |
|---|---|---|
| IAuthenticationPlatformSupport | authenticationPlatformSupport | An IAuthenticationPlatformSupport required to handle platform-specific features in the authentication flow. |
| IHttpClient | httpClient | An IHttpClient to reach cloud endpoints in the authentication flow. |
| IAppIdProvider | appIdProvider | An IAppIdProvider to inject the app identifier required on App settings cloud endpoints. |
| IAppNameProvider | appNameProvider | An IAppNameProvider to build the unique uri scheme used to bind the app to the browser response in a login operation. |
| ServiceHostConfiguration | serviceHostConfiguration | A service environment configuration. |
PkceAuthenticator(IAuthenticationPlatformSupport, IHttpClient, IPkceRequestHandler, IPkceConfigurationProvider)
Builds a PkceAuthenticator that uses the standard Proof Key Code Exchange (PKCE) authentication flow using custom IPkceRequestHandler and IPkceConfigurationProvider.
Declaration
[Obsolete("Replaced by new constructor requiring IAccessTokenExchanger injection.")]
public PkceAuthenticator(IAuthenticationPlatformSupport authenticationPlatformSupport, IHttpClient httpClient, IPkceRequestHandler pkceRequestHandler, IPkceConfigurationProvider pkceConfigurationProvider)
Parameters
| Type | Name | Description |
|---|---|---|
| IAuthenticationPlatformSupport | authenticationPlatformSupport | An IAuthenticationPlatformSupport required to handle platform-specific features in the authentication flow. |
| IHttpClient | httpClient | An IHttpClient to reach cloud endpoints in the authentication flow. |
| IPkceRequestHandler | pkceRequestHandler | An IPkceRequestHandler to customize http requests used in the authentication flow. |
| IPkceConfigurationProvider | pkceConfigurationProvider | An alternate IPkceConfigurationProvider to override the built-in one. |
PkceAuthenticator(IAuthenticationPlatformSupport, IPkceConfigurationProvider, ServiceHostConfiguration, IAccessTokenExchanger<DeviceToken, UnityServicesToken>, IPkceRequestHandler)
Builds a PkceAuthenticator that uses the standard Proof Key Code Exchange (PKCE) authentication flow.
Declaration
public PkceAuthenticator(IAuthenticationPlatformSupport authenticationPlatformSupport, IPkceConfigurationProvider pkceConfigurationProvider, ServiceHostConfiguration serviceHostConfiguration, IAccessTokenExchanger<DeviceToken, UnityServicesToken> accessTokenExchanger, IPkceRequestHandler pkceRequestHandler)
Parameters
| Type | Name | Description |
|---|---|---|
| IAuthenticationPlatformSupport | authenticationPlatformSupport | An IAuthenticationPlatformSupport required to handle platform-specific features in the authentication flow. |
| IPkceConfigurationProvider | pkceConfigurationProvider | An alternate IPkceConfigurationProvider to override the built-in one. |
| ServiceHostConfiguration | serviceHostConfiguration | A service environment configuration. |
| IAccessTokenExchanger<DeviceToken, UnityServicesToken> | accessTokenExchanger | A Unity Services token exchange class. |
| IPkceRequestHandler | pkceRequestHandler | An IPkceRequestHandler to customize http requests used in the authentication flow. |
Properties
AuthenticationState
Holds the current AuthenticationState.
Declaration
public AuthenticationState AuthenticationState { get; }
Property Value
| Type | Description |
|---|---|
| AuthenticationState |
Implements
Methods
CancelLogin()
Cancels the awaiting login operation.
Declaration
public void CancelLogin()
Implements
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException |
Dispose()
Disposes of any IDisposable references.
Declaration
public void Dispose()
Implements
Dispose(Boolean)
Disposes of any IDisposable references.
Declaration
protected virtual void Dispose(bool disposing)
Parameters
| Type | Name | Description |
|---|---|---|
| Boolean | disposing | Dispose pattern boolean value received from public Dispose method. |
GetAccessTokenAsync()
Declaration
public async Task<string> GetAccessTokenAsync()
Returns
| Type | Description |
|---|---|
| Task<String> |
Implements
HasValidPreconditionsAsync()
Indicates if the IAuthenticator has valid preconditions to provide authentication in the current execution context.
Declaration
public Task<bool> HasValidPreconditionsAsync()
Returns
| Type | Description |
|---|---|
| Task<Boolean> | A task that when completed indicates if the |
Implements
InitializeAsync()
A task to initialize the AuthenticationState from either cache or direct injection value.
Declaration
public async Task InitializeAsync()
Returns
| Type | Description |
|---|---|
| Task |
Implements
LoginAsync()
Performs a login operation.
Declaration
public async Task LoginAsync()
Returns
| Type | Description |
|---|---|
| Task | A task. |
Implements
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException | |
| AuthenticationFailedException |
LogoutAsync(Boolean)
Performs a logout operation.
Declaration
public async Task LogoutAsync(bool clearBrowserCache = false)
Parameters
| Type | Name | Description |
|---|---|---|
| Boolean | clearBrowserCache | An optional boolean value that, if set to true, triggers a navigation to the OS default browser to clear any cached session. |
Returns
| Type | Description |
|---|---|
| Task | A task. |
Implements
Remarks
A logout operation clears the user session in the application only. Unless the user manually clears the session in the browser that is used for authentication, a user can get automatically logged in again from cached values, without entering any credentials. Use the clearBrowserCache boolean to also clear the session in the browser to prevent automatic login from a cached session.
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException |
Events
AuthenticationStateChanged
Triggers when the AuthenticationState of the current user changes.
Declaration
public event Action<AuthenticationState> AuthenticationStateChanged
Event Type
| Type | Description |
|---|---|
| Action<AuthenticationState> |
Implements
Remarks
Subscribers of this event should restrict or allow access to available resources and features based on the returned value.
DeviceTokenRefreshed
Raised when the authenticator's DeviceToken is refreshed.
Declaration
[Obsolete("Not required when using the constructor with IAccessTokenExchanger injection.")]
public event Action<DeviceToken> DeviceTokenRefreshed
Event Type
| Type | Description |
|---|---|
| Action<DeviceToken> |