Exemplo n.º 1
0
 /// <summary>
 /// Updates information about a user in Azure Active Directory.
 /// </summary>
 public async Task <IHttpActionResult> Post(IdentityUpdate identity)
 {
     if (StsConfiguration.StsType != StsType.AzureActiveDirectory)
     {
         return(this.BadRequest("Updating user information is only supported when using Azure Active Directory."));
     }
     if (identity != null && !string.IsNullOrWhiteSpace(identity.DisplayName))
     {
         var userId      = this.User.GetUniqueIdentifier();
         var graphClient = new AadGraphClient(StsConfiguration.Authority, StsConfiguration.AadTenant, SiteConfiguration.TodoListWebApiClientId, SiteConfiguration.TodoListWebApiClientSecret);
         await graphClient.UpdateUserAsync(userId, identity.DisplayName);
     }
     return(Ok());
 }
Exemplo n.º 2
0
        public async Task <IActionResult> Index(IdentityUpdate model)
        {
            if (model != null && !string.IsNullOrWhiteSpace(model.DisplayName))
            {
                // Update identity information through the Todo List Web API.
                var todoListWebApiClient = await TodoListController.GetTodoListClient(this.siteConfiguration, this.User);

                var identityUpdateRequest = new HttpRequestMessage(HttpMethod.Post, this.siteConfiguration.TodoListWebApiRootUrl + "api/identity");
                identityUpdateRequest.Content = new JsonContent(model);
                var todoListWebApiIdentityInfoResponse = await todoListWebApiClient.SendAsync(identityUpdateRequest);

                todoListWebApiIdentityInfoResponse.EnsureSuccessStatusCode();
            }
            return(RedirectToAction("Index"));
        }
Exemplo n.º 3
0
 /// <summary>
 /// Update an identity in the specified subscription and resource group.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the Resource Group to which the identity belongs.
 /// </param>
 /// <param name='resourceName'>
 /// The name of the identity resource.
 /// </param>
 /// <param name='parameters'>
 /// Parameters to update the identity
 /// </param>
 public static Identity Update(this IUserAssignedIdentitiesOperations operations, string resourceGroupName, string resourceName, IdentityUpdate parameters)
 {
     return(operations.UpdateAsync(resourceGroupName, resourceName, parameters).GetAwaiter().GetResult());
 }
Exemplo n.º 4
0
 /// <summary>
 /// Update an identity in the specified subscription and resource group.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the Resource Group to which the identity belongs.
 /// </param>
 /// <param name='resourceName'>
 /// The name of the identity resource.
 /// </param>
 /// <param name='parameters'>
 /// Parameters to update the identity
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <Identity> UpdateAsync(this IUserAssignedIdentitiesOperations operations, string resourceGroupName, string resourceName, IdentityUpdate parameters, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.UpdateWithHttpMessagesAsync(resourceGroupName, resourceName, parameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Exemplo n.º 5
0
        public async Task TestIdentityCRUD()
        {
            Identity i       = new Identity();
            var      handler = new RecordedDelegatingHandler {
                IsPassThrough = true
            };

            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var msiMgmtClient = context.GetServiceClient <ManagedServiceIdentityClient>(handlers: handler);

                string firstTagValue         = "first tag value";
                string secondTagValue        = "second tag value";
                string updatedFirstTagValue  = "updated first tag value";
                string updatedSecondTagValue = "updated second tag value";

                /*-------------PUT-------------*/
                // Create new identities
                var identityParameters = new Identity(location: CanaryCentralRegion, tags: new Dictionary <string, string>()
                {
                    { FirstTagKey, firstTagValue }, { SecondTagKey, secondTagValue }
                });
                var createResponse1 = await msiMgmtClient.UserAssignedIdentities.CreateOrUpdateWithHttpMessagesAsync(ResourceGroupName, firstIdentityName, identityParameters);

                Assert.Equal(HttpStatusCode.Created, createResponse1.Response.StatusCode);
                VerifyIdentity(createResponse1.Body, msiMgmtClient.SubscriptionId, firstIdentityName, CanaryCentralRegion, firstTagValue, secondTagValue);

                AzureOperationResponse <Identity> createResponse2 = await msiMgmtClient.UserAssignedIdentities.CreateOrUpdateWithHttpMessagesAsync(ResourceGroupName, secondIdentityName, identityParameters);

                Assert.Equal(HttpStatusCode.Created, createResponse2.Response.StatusCode);
                VerifyIdentity(createResponse2.Body, msiMgmtClient.SubscriptionId, secondIdentityName, CanaryCentralRegion, firstTagValue, secondTagValue);

                // Put on existing identity
                var createResponse3 = await msiMgmtClient.UserAssignedIdentities.CreateOrUpdateWithHttpMessagesAsync(ResourceGroupName, firstIdentityName, identityParameters);

                Assert.Equal(HttpStatusCode.OK, createResponse3.Response.StatusCode);
                VerifyIdentity(createResponse3.Body, msiMgmtClient.SubscriptionId, firstIdentityName, CanaryCentralRegion, firstTagValue, secondTagValue);

                /*-------------GET-------------*/
                // Get the created identities
                var getResponse1 = await msiMgmtClient.UserAssignedIdentities.GetWithHttpMessagesAsync(ResourceGroupName, firstIdentityName);

                Assert.Equal(HttpStatusCode.OK, getResponse1.Response.StatusCode);
                VerifyIdentity(getResponse1.Body, msiMgmtClient.SubscriptionId, firstIdentityName, CanaryCentralRegion, firstTagValue, secondTagValue);

                var getResponse2 = await msiMgmtClient.UserAssignedIdentities.GetWithHttpMessagesAsync(ResourceGroupName, secondIdentityName);

                Assert.Equal(HttpStatusCode.OK, getResponse2.Response.StatusCode);
                VerifyIdentity(getResponse2.Body, msiMgmtClient.SubscriptionId, secondIdentityName, CanaryCentralRegion, firstTagValue, secondTagValue);

                /*-------------PATCH-------------*/
                var updateParameters = new IdentityUpdate(location: CanaryCentralRegion, tags: new Dictionary <string, string>()
                {
                    { FirstTagKey, updatedFirstTagValue }, { SecondTagKey, updatedSecondTagValue }
                });
                var updateResponse = await msiMgmtClient.UserAssignedIdentities.UpdateWithHttpMessagesAsync(ResourceGroupName, firstIdentityName, updateParameters);

                Assert.Equal(HttpStatusCode.OK, updateResponse.Response.StatusCode);
                VerifyIdentity(updateResponse.Body, msiMgmtClient.SubscriptionId, firstIdentityName, CanaryCentralRegion, updatedFirstTagValue, updatedSecondTagValue);

                /*-------------List by ResourceGroup-------------*/
                var listResourceGroupResponse = await msiMgmtClient.UserAssignedIdentities.ListByResourceGroupWithHttpMessagesAsync(ResourceGroupName);

                Assert.Equal(HttpStatusCode.OK, listResourceGroupResponse.Response.StatusCode);
                string[] identityNames = new string[] { firstIdentityName, secondIdentityName };
                VerifyIdentityCollection(listResourceGroupResponse.Body, identityNames);

                /*-------------DELETE-------------*/
                var deleteResponse1 = await msiMgmtClient.UserAssignedIdentities.DeleteWithHttpMessagesAsync(ResourceGroupName, firstIdentityName);

                Assert.Equal(HttpStatusCode.OK, deleteResponse1.Response.StatusCode);
                // Delete identity that does not exist
                var deleteResponse2 = await msiMgmtClient.UserAssignedIdentities.DeleteWithHttpMessagesAsync(ResourceGroupName, firstIdentityName);

                Assert.Equal(HttpStatusCode.NoContent, deleteResponse2.Response.StatusCode);

                var deleteResponse3 = await msiMgmtClient.UserAssignedIdentities.DeleteWithHttpMessagesAsync(ResourceGroupName, secondIdentityName);

                Assert.Equal(HttpStatusCode.OK, deleteResponse3.Response.StatusCode);
                // Delete identity that does not exist
                var deleteResponse4 = await msiMgmtClient.UserAssignedIdentities.DeleteWithHttpMessagesAsync(ResourceGroupName, secondIdentityName);

                Assert.Equal(HttpStatusCode.NoContent, deleteResponse4.Response.StatusCode);
            }
        }