// 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; var thread = new Thread(() => { try { result = 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; } }); 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); }
// 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; var thread = new Thread(() => { try { result = 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; } }); 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; }