Пример #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,IdentityResourceId,Type")] IdentityClaims identityClaims)
        {
            if (id != identityClaims.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(identityClaims);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!IdentityClaimsExists(identityClaims.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(identityClaims));
        }
Пример #2
0
        public async Task <IActionResult> Create([Bind("Id,IdentityResourceId,Type")] IdentityClaims identityClaims)
        {
            if (ModelState.IsValid)
            {
                _context.Add(identityClaims);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(identityClaims));
        }
 public static string MapIdentityClaims(this IdentityClaims client)
 {
     return(client.Type);
 }
Пример #4
0
        public async Task <ActionResult> PostAsync()
        {
            string input = null;

            // If not data came in, then return
            if (this.Request.Body == null)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is null", HttpStatusCode.Conflict)));
            }

            // Read the input claims from the request body
            using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
            {
                input = await reader.ReadToEndAsync();
            }

            // Check input content value
            if (string.IsNullOrEmpty(input))
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is empty", HttpStatusCode.Conflict)));
            }

            // Convert the input string into IdentityClaims object
            IdentityClaims inputClaims = IdentityClaims.Parse(input);

            if (inputClaims == null)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Can not deserialize input claims", HttpStatusCode.Conflict)));
            }

            if (string.IsNullOrEmpty(inputClaims.signInName))
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'signInName' is null or empty", HttpStatusCode.Conflict)));
            }

            if (string.IsNullOrEmpty(inputClaims.password))
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'password' is null or empty", HttpStatusCode.Conflict)));
            }

            // Create or reference an existing table
            CloudTable table = await Common.CreateTableAsync("identities");

            var identityEntity = new IdentityEntity(inputClaims.signInName);

            identityEntity.displayName = inputClaims.displayName;
            identityEntity.password    = inputClaims.password;
            identityEntity.givenName   = inputClaims.givenName;
            identityEntity.surName     = inputClaims.surName;

            try
            {
                // Create the InsertOrReplace table operation
                TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(identityEntity);

                // Execute the operation.
                TableResult result = await table.ExecuteAsync(insertOrMergeOperation);
            }
            catch (StorageException e)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel(e.Message, HttpStatusCode.Conflict)));
            }
            return(Ok());
        }
        private async Task CleanupIdentityResourceAsync(IdentityResource entity, CancellationToken cancellationToken = default(CancellationToken))
        {
            var identityClaims = await IdentityClaims.Where(x => x.IdentityResource.Id == entity.Id).ToListAsync();

            IdentityClaims.RemoveRange(identityClaims);
        }
Пример #6
0
        public async Task <ActionResult> PostAsync()
        {
            string input = null;

            // If not data came in, then return
            if (this.Request.Body == null)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is null", HttpStatusCode.Conflict)));
            }

            // Read the input claims from the request body
            using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
            {
                input = await reader.ReadToEndAsync();
            }

            // Check input content value
            if (string.IsNullOrEmpty(input))
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is empty", HttpStatusCode.Conflict)));
            }

            // Convert the input string into IdentityClaims object
            IdentityClaims inputClaims = IdentityClaims.Parse(input);

            if (inputClaims == null)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Can not deserialize input claims", HttpStatusCode.Conflict)));
            }

            if (string.IsNullOrEmpty(inputClaims.signInName))
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'signInName' is null or empty", HttpStatusCode.Conflict)));
            }

            if (string.IsNullOrEmpty(inputClaims.password))
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'password' is null or empty", HttpStatusCode.Conflict)));
            }

            // Create or reference an existing table
            CloudTable table = await Common.CreateTableAsync("identities");

            try
            {
                TableOperation retrieveOperation = TableOperation.Retrieve <IdentityEntity>("Account", inputClaims.signInName);
                TableResult    result            = await table.ExecuteAsync(retrieveOperation);

                IdentityEntity identityEntity = result.Result as IdentityEntity;
                if (identityEntity == null)
                {
                    return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Account not found", HttpStatusCode.Conflict)));
                }

                if (inputClaims.password != identityEntity.password)
                {
                    return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Bad username or password", HttpStatusCode.Conflict)));
                }

                IdentityClaims outputClaims = new IdentityClaims();
                outputClaims.signInName  = inputClaims.signInName;
                outputClaims.displayName = identityEntity.displayName;
                outputClaims.givenName   = identityEntity.givenName;
                outputClaims.surName     = identityEntity.surName;

                return(Ok(outputClaims));
            }
            catch (StorageException e)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel(e.Message, HttpStatusCode.Conflict)));
            }
        }