private AuthenticationResult AcquireToken(AdalConfiguration config, string appId, SecureString appKey) { if (appKey == null) { return(Renew(config, appId)); } StoreAppKey(appId, config.AdDomain, appKey); string authority = config.AdEndpoint + config.AdDomain; var context = new AuthenticationContext(authority, config.ValidateAuthority, ProtectedFileTokenCache.Instance); var credential = new ClientCredential(appId, appKey); return(context.AcquireToken("https://management.core.windows.net/", credential)); }
// We have to run this in a separate thread to guarantee that it's STA. This method // handles the threading details. private AuthenticationResult AcquireToken(AdalConfiguration config, ShowDialog promptBehavior, string userId, SecureString password) { AuthenticationResult result = null; Exception ex = null; if (promptBehavior == ShowDialog.Never) { result = SafeAquireToken(config, promptBehavior, userId, password, out ex); } else { var thread = new Thread(() => { result = SafeAquireToken(config, promptBehavior, userId, password, out ex); }); thread.SetApartmentState(ApartmentState.STA); thread.Name = "AcquireTokenThread"; thread.Start(); thread.Join(); } if (ex != null) { var adex = ex as AdalException; if (adex != null) { if (adex.ErrorCode == AdalError.AuthenticationCanceled) { throw new AadAuthenticationCanceledException(adex.Message, adex); } } if (ex is AadAuthenticationException) { throw ex; } throw new AadAuthenticationFailedException(GetExceptionMessage(ex), ex); } return(result); }
private AuthenticationResult SafeAquireToken( AdalConfiguration config, ShowDialog showDialog, string userId, SecureString password, out Exception ex) { try { ex = null; var promptBehavior = (PromptBehavior)Enum.Parse(typeof(PromptBehavior), showDialog.ToString()); return(DoAcquireToken(config, promptBehavior, userId, password)); } catch (AdalException adalEx) { if (adalEx.ErrorCode == AdalError.UserInteractionRequired || adalEx.ErrorCode == AdalError.MultipleTokensMatched) { ex = new AadAuthenticationFailedWithoutPopupException(Resources.InvalidSubscriptionState, adalEx); } else if (adalEx.ErrorCode == AdalError.MissingFederationMetadataUrl) { ex = new AadAuthenticationFailedException(Resources.CredentialOrganizationIdMessage, adalEx); } else { ex = adalEx; } } catch (Exception threadEx) { ex = threadEx; } return(null); }
public AdalAccessToken(AuthenticationResult authResult, UserTokenProvider tokenProvider, AdalConfiguration configuration) { AuthResult = authResult; this.tokenProvider = tokenProvider; Configuration = configuration; }