///<inheritdoc/> protected override async Task RenewAccessTokenAsync() { AuthenticationResult result; try { result = await PublicClient.AcquireTokenSilent(ApiTokenAccessArgs.Scopes, ApiTokenAccessArgs.UserAccount).ExecuteAsync(); if (string.IsNullOrEmpty(result.AccessToken)) { throw new MsalUiRequiredException("404", "Access token was null"); } } catch (MsalUiRequiredException) { result = await PublicClient.AcquireTokenInteractive(ApiTokenAccessArgs.Scopes) .WithB2CAuthority(AuthoritySUSI) .WithAccount(ApiTokenAccessArgs.UserAccount) .WithParentActivityOrWindow(Context.GetMainWindow()) .ExecuteAsync() .ConfigureAwait(false); } catch { throw; } AccessToken = AccessToken.Bearer(result.AccessToken, result.ExpiresOn); IdToken = result.IdToken; TokenRenewed?.Invoke(result); }
private async Task <bool> RenewTokensAsync(CancellationToken cancellationToken) { if (await _lock.WaitAsync(Timeout, cancellationToken).ConfigureAwait(false)) { try { var response = await _tokenClient.RequestClientCredentialsAsync(_scope, cancellationToken : cancellationToken).ConfigureAwait(false); if (!response.IsError) { _accessToken = response.AccessToken; #pragma warning disable 4014 Task.Run(() => { foreach (EventHandler <TokenRenewedEventArgs> del in TokenRenewed.GetInvocationList()) { try { del(this, new TokenRenewedEventArgs(response.AccessToken, response.ExpiresIn)); } catch { } } }).ConfigureAwait(false); #pragma warning restore 4014 return(true); } } finally { _lock.Release(); } } return(false); }
/// <summary> /// Fire the <see cref="TokenRenewed"/> event. /// </summary> /// <param name="e"></param> protected virtual void OnTokenRenewed(TokenRenewedEventArgs e) { TokenRenewed?.Invoke(this, e); }