private async Task LoginUserToAad()

in sdk/SdkSamples/Context/ScenarioContext.cs [128:169]


        private async Task<AuthenticationResult> LoginUserToAad()
        {
            var tenantDomain = string.IsNullOrWhiteSpace(Configuration.UserAuthentication.Domain) ? this.Configuration.PartnerService.CommonDomain : this.Configuration.UserAuthentication.Domain;

            var scopes = new string[] { $"{Configuration.UserAuthentication.ResourceUrl.OriginalString}/.default" };
            AuthenticationResult result = null;

            var app = PublicClientApplicationBuilder.Create(Configuration.UserAuthentication.ApplicationId)
                .WithAuthority(this.Configuration.PartnerService.AuthenticationAuthorityEndpoint.OriginalString, tenantDomain, true)
                .WithRedirectUri(this.Configuration.UserAuthentication.RedirectUrl.OriginalString)
                .Build();

            var accounts = await app.GetAccountsAsync();

            try
            {
                result = await app.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
                       .ExecuteAsync();
            }
            catch (MsalUiRequiredException ex)
            {
                // A MsalUiRequiredException happened on AcquireTokenSilent.
                // This indicates you need to call AcquireTokenInteractive to acquire a token
                System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");

                try
                {
                    result = await app.AcquireTokenInteractive(scopes)
                          .ExecuteAsync();
                }
                catch (MsalException msalex)
                {
                    throw msalex;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return result;
        }