public async Task <IActionResult> CallWebApiUserProfileQueryAsync() { await semaphore.WaitAsync().ConfigureAwait(false); try { ClearLog(); string result; try { var userName = User.FindFirst("preferred_username")?.Value; var authenticationResult = await ConfidentialClientUtils.AcquireTokenSilentAsync( new[] { Startup.WebApiScope }, userName, HttpContext.Session, ConfidentialClientUtils.CreateSecretClientCredential(), GetCurrentUserId()).ConfigureAwait(false); result = await CallApiAsync(WebApiUserProfileQuery, authenticationResult.AccessToken).ConfigureAwait(false); } catch (MsalException ex) { result = "WebApp failed to call WebApiUserProfileQuery, MsalException - " + ex.Message; } catch (Exception ex) { result = "WebApp failed to call WebApiUserProfileQuery, Exception - " + ex.Message; } return(View("~/Views/Home/Index.cshtml", result + GetFormattedLog())); } finally { semaphore.Release(); } }
private async Task <IActionResult> CallGraphUsersQueryAsync(ClientCredential clientCredential) { await semaphore.WaitAsync().ConfigureAwait(false); try { ClearLog(); string result; try { var authenticationResult = await ConfidentialClientUtils.AcquireTokenForClientAsync(new[] { MsGraphDefaultScope }, HttpContext.Session, clientCredential, GetCurrentUserId()).ConfigureAwait(false); result = await CallApiAsync(MsGraphUsersQuery, authenticationResult.AccessToken).ConfigureAwait(false); } catch (MsalException ex) { result = "WebApp failed to call GraphUsersQuery, MsalException - " + ex.Message; } catch (Exception ex) { result = "WebApp failed to call GraphUsersQuery, Exception - " + ex.Message; } return(View("~/Views/Home/Index.cshtml", result + GetFormattedLog())); } finally { semaphore.Release(); } }
private async Task OnAuthorizationCodeReceivedAsync(AuthorizationCodeReceivedContext context) { string[] scopes = { "User.Read" }; var userId = context.JwtSecurityToken != null?context.JwtSecurityToken.Claims.FirstOrDefault(claim => claim.Type == "oid").Value : ""; // Acquire a Token for the Graph API and cache it using MSAL. var authenticationResult = await ConfidentialClientUtils.AcquireTokenByAuthorizationCodeAsync(context.ProtocolMessage.Code, scopes, context.HttpContext.Session, ConfidentialClientUtils.CreateSecretClientCredential(), userId).ConfigureAwait(false); // Notify the OIDC middleware that we already took care of code redemption. context.HandleCodeRedemption(authenticationResult.AccessToken, authenticationResult.IdToken); }
public async Task <IActionResult> CallGraphUsersQueryByCertClientCredentialAsync() { return(await CallGraphUsersQueryAsync(ConfidentialClientUtils.CreateClientCertificateCredential()).ConfigureAwait(false)); }
public async Task <IActionResult> CallGraphUsersQueryBySecretClientCredential() { return(await CallGraphUsersQuery(ConfidentialClientUtils.CreateSecretClientCredential())); }