com.microsoft.azure.management.graphrbac.implementation.PasswordCredentialImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-mgmt-graph-rbac Show documentation
Show all versions of azure-mgmt-graph-rbac Show documentation
This package contains Microsoft Azure Graph RBAC Management SDK. This package has been deprecated. A replacement package com.azure.resourcemanager:azure-resourcemanager-authorization is available as of 31-March-2022. We strongly encourage you to upgrade to continue receiving updates. See Migration Guide https://aka.ms/java-track2-migration-guide for guidance on upgrading. Refer to our deprecation policy https://azure.github.io/azure-sdk/policies_support.html for more details.
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.graphrbac.implementation;
import com.google.common.io.BaseEncoding;
import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.graphrbac.PasswordCredential;
import com.microsoft.azure.management.resources.fluentcore.model.implementation.IndexableRefreshableWrapperImpl;
import com.microsoft.azure.management.resources.fluentcore.utils.Utils;
import com.microsoft.rest.RestClient;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import rx.Observable;
import java.io.IOException;
import java.io.OutputStream;
/**
* Implementation for ServicePrincipal and its parent interfaces.
*/
@LangDefinition(ContainerName = "/Microsoft.Azure.Management.Graph.RBAC.Fluent")
class PasswordCredentialImpl
extends IndexableRefreshableWrapperImpl
implements
PasswordCredential,
PasswordCredential.Definition,
PasswordCredential.UpdateDefinition {
private String name;
private HasCredential> parent;
OutputStream authFile;
private String subscriptionId;
PasswordCredentialImpl(PasswordCredentialInner passwordCredential) {
super(passwordCredential);
if (passwordCredential.customKeyIdentifier() != null && !passwordCredential.customKeyIdentifier().isEmpty()) {
this.name = new String(BaseEncoding.base64().decode(passwordCredential.customKeyIdentifier()));
} else {
this.name = passwordCredential.keyId();
}
}
PasswordCredentialImpl(String name, HasCredential> parent) {
super(new PasswordCredentialInner()
.withCustomKeyIdentifier(BaseEncoding.base64().encode(name.getBytes()))
.withStartDate(DateTime.now())
.withEndDate(DateTime.now().plusYears(1)));
this.name = name;
this.parent = parent;
}
@Override
public Observable refreshAsync() {
throw new UnsupportedOperationException("Cannot refresh credentials.");
}
@Override
protected Observable getInnerAsync() {
throw new UnsupportedOperationException("Cannot refresh credentials.");
}
@Override
public String id() {
return inner().keyId();
}
@Override
public DateTime startDate() {
return inner().startDate();
}
@Override
public DateTime endDate() {
return inner().endDate();
}
@Override
public String value() {
return inner().value();
}
@Override
@SuppressWarnings("unchecked")
public T attach() {
parent.withPasswordCredential(this);
return (T) parent;
}
@Override
public PasswordCredentialImpl withPasswordValue(String password) {
inner().withValue(password);
return this;
}
@Override
public PasswordCredentialImpl withStartDate(DateTime startDate) {
DateTime original = startDate();
inner().withStartDate(startDate);
// Adjust end time
withDuration(Duration.millis(endDate().getMillis() - original.getMillis()));
return this;
}
@Override
public PasswordCredentialImpl withDuration(Duration duration) {
inner().withEndDate(startDate().plus(duration.getMillis()));
return this;
}
@Override
public String name() {
return name;
}
@Override
public PasswordCredentialImpl withAuthFileToExport(OutputStream outputStream) {
this.authFile = outputStream;
return this;
}
void exportAuthFile(ServicePrincipalImpl servicePrincipal) {
if (authFile == null) {
return;
}
RestClient restClient = servicePrincipal.manager().roleInner().restClient();
AzureEnvironment environment = Utils.extractAzureEnvironment(restClient);
StringBuilder builder = new StringBuilder("{\n");
builder.append(" ").append(String.format("\"clientId\": \"%s\",", servicePrincipal.applicationId())).append("\n");
builder.append(" ").append(String.format("\"clientSecret\": \"%s\",", value())).append("\n");
builder.append(" ").append(String.format("\"tenantId\": \"%s\",", servicePrincipal.manager().tenantId())).append("\n");
builder.append(" ").append(String.format("\"subscriptionId\": \"%s\",", servicePrincipal.assignedSubscription)).append("\n");
builder.append(" ").append(String.format("\"activeDirectoryEndpointUrl\": \"%s\",", environment.activeDirectoryEndpoint())).append("\n");
builder.append(" ").append(String.format("\"resourceManagerEndpointUrl\": \"%s\",", environment.resourceManagerEndpoint())).append("\n");
builder.append(" ").append(String.format("\"activeDirectoryGraphResourceId\": \"%s\",", environment.graphEndpoint())).append("\n");
builder.append(" ").append(String.format("\"managementEndpointUrl\": \"%s\"", environment.managementEndpoint())).append("\n");
builder.append("}");
try {
authFile.write(builder.toString().getBytes());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public PasswordCredentialImpl withSubscriptionId(String subscriptionId) {
this.subscriptionId = subscriptionId;
return this;
}
}