private async Task SignIn() { // create a redirect URI using the custom redirect uri string redirectUri = string.Format(CustomUriScheme + "://callback"); Console.WriteLine("redirect URI: " + redirectUri); var options = new OidcClientOptions { Authority = Constants.Authority, ClientId = "winconsole", Scope = "openid profile scope1", RedirectUri = redirectUri, }; var serilog = new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.FromLogContext() .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message}{NewLine}{Exception}{NewLine}") .CreateLogger(); options.LoggerFactory.AddSerilog(serilog); var client = new OidcClient(options); var state = await client.PrepareLoginAsync(); Console.WriteLine($"Start URL: {state.StartUrl}"); var callbackManager = new CallbackManager(state.State); // open system browser to start authentication Process.Start(state.StartUrl); Console.WriteLine("Running callback manager"); var response = await callbackManager.RunServer(); Console.WriteLine($"Response from authorize endpoint: {response}"); // Brings the Console to Focus. BringConsoleToFront(); var result = await client.ProcessResponseAsync(response, state); BringConsoleToFront(); if (result.IsError) { Console.WriteLine("\n\nError:\n{0}", result.Error); } else { Console.WriteLine("\n\nClaims:"); foreach (var claim in result.User.Claims) { Console.WriteLine("{0}: {1}", claim.Type, claim.Value); } Console.WriteLine(); if (!string.IsNullOrEmpty(result.IdentityToken)) { Console.WriteLine("Identity token:\n{0}", result.IdentityToken); } if (!string.IsNullOrEmpty(result.AccessToken)) { Console.WriteLine("Access token:\n{0}", result.AccessToken); } if (!string.IsNullOrWhiteSpace(result.RefreshToken)) { Console.WriteLine("Refresh token:\n{0}", result.RefreshToken); } } }