Search in sources :

Example 11 with AuthMethodManager

use of com.microsoft.azuretools.authmanage.AuthMethodManager in project azure-tools-for-java by Microsoft.

the class SignInCommandHandler method signInIfNotSignedInInternal.

private static Mono<Boolean> signInIfNotSignedInInternal(Shell projectShell) {
    final AuthMethodManager authMethodManager = AuthMethodManager.getInstance();
    final IDeviceLoginUI deviceLoginUI = new DeviceLoginWindow(projectShell);
    return Mono.create(sink -> AzureTaskManager.getInstance().runLater(() -> {
        final AuthConfiguration auth;
        try {
            auth = showSignInWindowAndGetAuthConfiguration(projectShell);
        } catch (InterruptedException e) {
            sink.error(e);
            return;
        }
        Single<AuthMethodDetails> single;
        if (auth.getType() != AuthType.DEVICE_CODE) {
            single = loginNonDeviceCodeSingle(auth);
        } else {
            single = loginDeviceCodeSingle().map(account -> {
                AzureTaskManager.getInstance().runLater(() -> deviceLoginUI.promptDeviceCode(account.getDeviceCode()));
                CompletableFuture<AuthMethodDetails> future = account.continueLogin().map(ac -> fromAccountEntity(ac.getEntity())).doFinally(signal -> deviceLoginUI.closePrompt()).toFuture();
                deviceLoginUI.setFuture(future);
                try {
                    return future.get();
                } catch (Throwable ex) {
                    if (!(ex instanceof CancellationException)) {
                        ex.printStackTrace();
                        ErrorWindow.go(projectShell, ex.getMessage(), SIGN_IN_ERROR);
                    }
                    return new AuthMethodDetails();
                }
            });
        }
        single.subscribeOn(rx.schedulers.Schedulers.io()).subscribe(authMethodDetails -> {
            if (authMethodManager.isSignedIn()) {
                authMethodManager.setAuthMethodDetails(authMethodDetails);
            }
            sink.success(authMethodManager.isSignedIn());
        }, sink::error);
    }));
}
Also used : AuthMethodManager(com.microsoft.azuretools.authmanage.AuthMethodManager) Azure(com.microsoft.azure.toolkit.lib.Azure) AzureExecutionException(com.microsoft.azure.toolkit.lib.common.exception.AzureExecutionException) IWorkbenchWindow(org.eclipse.ui.IWorkbenchWindow) StringUtils(org.apache.commons.lang3.StringUtils) IDeviceLoginUI(com.microsoft.azuretools.adauth.IDeviceLoginUI) AzureCloud(com.microsoft.azure.toolkit.lib.auth.AzureCloud) Single(rx.Single) PluginUtil(com.microsoft.azuretools.core.utils.PluginUtil) Duration(java.time.Duration) Map(java.util.Map) AzureString(com.microsoft.azure.toolkit.lib.common.bundle.AzureString) IdentityAzureManager(com.microsoft.azuretools.sdkmanage.IdentityAzureManager) AccountEntity(com.microsoft.azure.toolkit.lib.auth.model.AccountEntity) MsalClientException(com.microsoft.aad.msal4j.MsalClientException) CancellationException(java.util.concurrent.CancellationException) AuthMethod(com.microsoft.azuretools.authmanage.AuthMethod) ErrorType(com.microsoft.azuretools.telemetrywrapper.ErrorType) Operation(com.microsoft.azuretools.telemetrywrapper.Operation) AuthConfiguration(com.microsoft.azure.toolkit.lib.auth.model.AuthConfiguration) AzureTaskContext(com.microsoft.azure.toolkit.lib.common.task.AzureTaskContext) Window(org.eclipse.jface.window.Window) List(java.util.List) AzureAccount(com.microsoft.azure.toolkit.lib.auth.AzureAccount) DeviceCodeAccount(com.microsoft.azure.toolkit.lib.auth.core.devicecode.DeviceCodeAccount) SWT(org.eclipse.swt.SWT) DeviceLoginWindow(com.microsoft.azuretools.core.ui.DeviceLoginWindow) EventUtil(com.microsoft.azuretools.telemetrywrapper.EventUtil) Lombok(lombok.Lombok) AzureTaskManager(com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager) SignInDialog(com.microsoft.azuretools.core.ui.SignInDialog) ExecutionEvent(org.eclipse.core.commands.ExecutionEvent) AzureAbstractHandler(com.microsoft.azuretools.core.utils.AzureAbstractHandler) AzureEnvironmentUtils(com.microsoft.azure.toolkit.lib.auth.util.AzureEnvironmentUtils) AzureOperation(com.microsoft.azure.toolkit.lib.common.operation.AzureOperation) Exceptions(rx.exceptions.Exceptions) AzureOperationBundle(com.microsoft.azure.toolkit.lib.common.operation.AzureOperationBundle) HashMap(java.util.HashMap) Callable(java.util.concurrent.Callable) CompletableFuture(java.util.concurrent.CompletableFuture) Supplier(java.util.function.Supplier) CollectionUtils(org.apache.commons.collections4.CollectionUtils) AzureTask(com.microsoft.azure.toolkit.lib.common.task.AzureTask) HandlerUtil(org.eclipse.ui.handlers.HandlerUtil) ServicePrincipalLoginDialog(com.microsoft.azuretools.core.ui.ServicePrincipalLoginDialog) ErrorWindow(com.microsoft.azuretools.core.ui.ErrorWindow) Schedulers(reactor.core.scheduler.Schedulers) AuthMethodDetails(com.microsoft.azuretools.authmanage.models.AuthMethodDetails) Subscription(com.microsoft.azure.toolkit.lib.common.model.Subscription) AzureToolkitRuntimeException(com.microsoft.azure.toolkit.lib.common.exception.AzureToolkitRuntimeException) AzureMessager(com.microsoft.azure.toolkit.lib.common.messager.AzureMessager) Shell(org.eclipse.swt.widgets.Shell) Mono(reactor.core.publisher.Mono) ExecutionException(org.eclipse.core.commands.ExecutionException) Flux(reactor.core.publisher.Flux) TelemetryConstants(com.microsoft.azuretools.telemetry.TelemetryConstants) TelemetryManager(com.microsoft.azuretools.telemetrywrapper.TelemetryManager) MessageBox(org.eclipse.swt.widgets.MessageBox) AuthType(com.microsoft.azure.toolkit.lib.auth.model.AuthType) AuthMethodDetails(com.microsoft.azuretools.authmanage.models.AuthMethodDetails) IDeviceLoginUI(com.microsoft.azuretools.adauth.IDeviceLoginUI) DeviceLoginWindow(com.microsoft.azuretools.core.ui.DeviceLoginWindow) Single(rx.Single) CancellationException(java.util.concurrent.CancellationException) AuthConfiguration(com.microsoft.azure.toolkit.lib.auth.model.AuthConfiguration) AuthMethodManager(com.microsoft.azuretools.authmanage.AuthMethodManager)

Example 12 with AuthMethodManager

use of com.microsoft.azuretools.authmanage.AuthMethodManager in project azure-tools-for-java by Microsoft.

the class AzurePanel method doOKAction.

@Override
public boolean doOKAction() {
    final AzureConfiguration data = getData();
    // set partial config to global config
    final AzureConfiguration config = Azure.az().config();
    config.setCloud(data.getCloud());
    config.setTelemetryEnabled(data.getTelemetryEnabled());
    config.setDatabasePasswordSaveType(data.getDatabasePasswordSaveType());
    config.setFunctionCoreToolsPath(data.getFunctionCoreToolsPath());
    final String userAgent = String.format(AzurePlugin.USER_AGENT, AzurePlugin.PLUGIN_VERSION, config.getTelemetryEnabled() ? config.getMachineId() : StringUtils.EMPTY);
    config.setUserAgent(userAgent);
    CommonSettings.setUserAgent(config.getUserAgent());
    // we need to get rid of AuthMethodManager, using az.azure_account
    if (AuthMethodManager.getInstance().isSignedIn()) {
        final AuthMethodManager authMethodManager = AuthMethodManager.getInstance();
        final String azureEnv = authMethodManager.getAuthMethodDetails().getAzureEnv();
        final AzureEnvironment currentEnv = AzureEnvironmentUtils.stringToAzureEnvironment(azureEnv);
        if (!Objects.equals(currentEnv, azureEnvironmentComboBox.getSelectedItem())) {
            EventUtil.executeWithLog(ACCOUNT, SIGNOUT, (operation) -> {
                authMethodManager.signOut();
            });
        }
    }
    if (StringUtils.isNotBlank(config.getCloud())) {
        Azure.az(AzureCloud.class).setByName(config.getCloud());
    }
    AzureConfigInitializer.saveAzConfig();
    return true;
}
Also used : AzureEnvironment(com.azure.core.management.AzureEnvironment) AzureConfiguration(com.microsoft.azure.toolkit.lib.AzureConfiguration) AzureCloud(com.microsoft.azure.toolkit.lib.auth.AzureCloud) AuthMethodManager(com.microsoft.azuretools.authmanage.AuthMethodManager)

Example 13 with AuthMethodManager

use of com.microsoft.azuretools.authmanage.AuthMethodManager in project azure-tools-for-java by Microsoft.

the class SelectSubscriptionsAction method selectSubscriptions.

public static Single<List<SubscriptionDetail>> selectSubscriptions(Project project) {
    final AuthMethodManager authMethodManager = AuthMethodManager.getInstance();
    final AzureManager manager = authMethodManager.getAzureManager();
    if (manager == null) {
        return Single.fromCallable(() -> null);
    }
    final SubscriptionManager subscriptionManager = manager.getSubscriptionManager();
    return loadSubscriptions(subscriptionManager, project).switchMap((subs) -> selectSubscriptions(project, subs)).toSingle().doOnSuccess((subs) -> Optional.ofNullable(subs).ifPresent(subscriptionManager::setSubscriptionDetails));
}
Also used : AzureManager(com.microsoft.azuretools.sdkmanage.AzureManager) SubscriptionManager(com.microsoft.azuretools.authmanage.SubscriptionManager) AuthMethodManager(com.microsoft.azuretools.authmanage.AuthMethodManager)

Aggregations

AuthMethodManager (com.microsoft.azuretools.authmanage.AuthMethodManager)13 AuthMethodDetails (com.microsoft.azuretools.authmanage.models.AuthMethodDetails)6 AzureCloud (com.microsoft.azure.toolkit.lib.auth.AzureCloud)5 MsalClientException (com.microsoft.aad.msal4j.MsalClientException)4 Azure (com.microsoft.azure.toolkit.lib.Azure)4 AzureAccount (com.microsoft.azure.toolkit.lib.auth.AzureAccount)4 DeviceCodeAccount (com.microsoft.azure.toolkit.lib.auth.core.devicecode.DeviceCodeAccount)4 AccountEntity (com.microsoft.azure.toolkit.lib.auth.model.AccountEntity)4 AuthConfiguration (com.microsoft.azure.toolkit.lib.auth.model.AuthConfiguration)4 AuthType (com.microsoft.azure.toolkit.lib.auth.model.AuthType)4 AzureEnvironmentUtils (com.microsoft.azure.toolkit.lib.auth.util.AzureEnvironmentUtils)4 AzureString (com.microsoft.azure.toolkit.lib.common.bundle.AzureString)4 AzureToolkitRuntimeException (com.microsoft.azure.toolkit.lib.common.exception.AzureToolkitRuntimeException)4 AzureMessager (com.microsoft.azure.toolkit.lib.common.messager.AzureMessager)4 AzureOperation (com.microsoft.azure.toolkit.lib.common.operation.AzureOperation)4 AzureOperationBundle (com.microsoft.azure.toolkit.lib.common.operation.AzureOperationBundle)4 AzureTask (com.microsoft.azure.toolkit.lib.common.task.AzureTask)4 AzureTaskManager (com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager)4 IDeviceLoginUI (com.microsoft.azuretools.adauth.IDeviceLoginUI)4 AuthMethod (com.microsoft.azuretools.authmanage.AuthMethod)4