private static async Task RunAsync() { AuthenticationConfig config = AuthenticationConfig.ReadFromJsonFile("appsettings.json"); IConfidentialClientApplication app; app = ConfidentialClientApplicationBuilder.Create(config.AppID) .WithClientSecret(config.SPPassword) .WithAuthority(new Uri(config.Authority)) .WithLogging(Log, LogLevel.Info, enablePiiLogging: true, enableDefaultPlatformLogging: true) .Build(); string[] scopes = new string[] { $"https://{config.Domain}/api/.default" }; AuthenticationResult result = null; try { result = await app.AcquireTokenForClient(scopes) .ExecuteAsync(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Token acquired"); Console.ResetColor(); } catch (MsalServiceException ex) when(ex.Message.Contains("AADSTS70011")) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Scope provided is not supported"); Console.ResetColor(); } if (result != null) { var httpClient = new HttpClient(); var apiCaller = new ProtectedApiCallHelper(httpClient); await apiCaller.CallWebApiAndProcessResultASync("http://localhost:1040/api/todolist", result.AccessToken, Display); } }
private static bool AppUsesClientSecret(AuthenticationConfig config) { string clientSecretPlaceholderValue = "[Enter here a client secret for your application]"; string certificatePlaceholderValue = "[Or instead of client secret: Enter here the name of a certificate (from the user cert store) as registered with your application]"; if (!String.IsNullOrWhiteSpace(config.ClientSecret) && config.ClientSecret != clientSecretPlaceholderValue) { return(true); } else if (!String.IsNullOrWhiteSpace(config.CertificateName) && config.CertificateName != certificatePlaceholderValue) { return(false); } else { throw new Exception("You must choose between using client secret or certificate. Please update appsettings.json file."); } }