private async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedNotification notification) { string signedInUserId = notification.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value; SessionTokenCache tokenCache = new SessionTokenCache( signedInUserId, notification.OwinContext.Environment["System.Web.HttpContextBase"] as HttpContextBase); ConfidentialClientApplication cca = new ConfidentialClientApplication( appId, redirectUri, new ClientCredential(appPassword), tokenCache.GetMsalCacheInstance(), null); try { var result = await cca.AcquireTokenByAuthorizationCodeAsync(notification.Code, scopes); } catch (MsalException ex) { string message, debug; message = "AcquireTokenByAuthorizationCodeAsync threw an exception"; debug = ex.Message; notification.HandleResponse(); notification.Response.Redirect("/Home/Error?message=" + message + "&debug=" + debug); } }
public async Task <string> GetAccessToken() { string accessToken = null; // Load the app config from web.config string appId = ConfigurationManager.AppSettings["ida:AppId"]; string appPassword = ConfigurationManager.AppSettings["ida:AppPassword"]; string redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"]; string[] scopes = ConfigurationManager.AppSettings["ida:AppScopes"] .Replace(' ', ',').Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); // Get the current user's ID string userId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value; if (!string.IsNullOrEmpty(userId)) { // Get the user's token cache SessionTokenCache tokenCache = new SessionTokenCache(userId, HttpContext); ConfidentialClientApplication cca = new ConfidentialClientApplication( appId, redirectUri, new ClientCredential(appPassword), tokenCache.GetMsalCacheInstance(), null); // Call AcquireTokenSilentAsync, which will return the cached // access token if it has not expired. If it has expired, it will // handle using the refresh token to get a new one. AuthenticationResult result = await cca.AcquireTokenSilentAsync(scopes, cca.Users.First()); accessToken = result.AccessToken; } return(accessToken); }
public async Task <string> GetAccessToken(SessionTokenCache tokenCache) { string accessToken = null; // Load the app config from web.config var appId = ConfigurationManager.AppSettings["ida:AppId"]; var appPassword = ConfigurationManager.AppSettings["ida:AppPassword"]; var redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"]; var scopes = ConfigurationManager.AppSettings["ida:AppScopes"] .Replace(' ', ',').Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); var confidentialClientApplication = new ConfidentialClientApplication( appId, redirectUri, new ClientCredential(appPassword), tokenCache.GetMsalCacheInstance(), null); // Call AcquireTokenSilentAsync, which will return the cached // access token if it has not expired. If it has expired, it will // handle using the refresh token to get a new one. var result = await confidentialClientApplication.AcquireTokenSilentAsync(scopes, confidentialClientApplication.Users.First()); accessToken = result.AccessToken; return(accessToken); }