Skip to content

Instantly share code, notes, and snippets.

@xximjasonxx
Created July 22, 2023 02:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xximjasonxx/95b77130956cac1d2ce2403019b0c05d to your computer and use it in GitHub Desktop.
Save xximjasonxx/95b77130956cac1d2ce2403019b0c05d to your computer and use it in GitHub Desktop.
public Task AssignRoleToServicePrincipal(Guid objectId, string roleDefId, string scopePath)
{
var tcs = new TaskCompletionSource();
Task.Run(() =>
{
try
{
var scopePathResource = new ResourceIdentifier(scopePath);
var roleDefId = $"/subscriptions/{scopePathResource.SubscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleName}";
var operationContent = new RoleAssignmentCreateOrUpdateContent(new ResourceIdentifier(roleDefId), objectId)
{
PrincipalType = RoleManagementPrincipalType.ServicePrincipal
};
var roleAssignmentResourceId = RoleAssignmentResource.CreateResourceIdentifier(scopePath, Guid.NewGuid().ToString());
var roleAssignmentResource = _armClient.GetRoleAssignmentResource(roleAssignmentResourceId);
var operationOutcome = roleAssignmentResource.Update(Azure.WaitUntil.Completed, operationContent);
tcs.TrySetResult();
}
catch (Exception ex)
{
tcs.TrySetException(ex);
}
});
return tcs.Task;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment