public IActionResult CreateSecret() { using (ILifetimeScope scope = _container.BeginLifetimeScope()) { ISecretProcessor secretProcessor = scope.Resolve <ISecretProcessor>(); return(Ok(new { Secret = secretProcessor.Create() })); } }
public async Task <IActionResult> CreateClientCredential([FromBody] ClientCredential clientCredential) { IActionResult result = null; try { if (result == null && clientCredential == null) { result = BadRequest("Missing request data"); } if (result == null && (!clientCredential.ClientId.HasValue || clientCredential.ClientId.Value.Equals(Guid.Empty))) { result = BadRequest("Missing client id value"); } if (result == null && string.IsNullOrEmpty(clientCredential.Secret)) { result = BadRequest("Missing secret value"); } if (result == null) { using ILifetimeScope scope = _container.BeginLifetimeScope(); SettingsFactory settingsFactory = scope.Resolve <SettingsFactory>(); CoreSettings settings = settingsFactory.CreateAccount(_settings.Value); IClientFactory clientFactory = scope.Resolve <IClientFactory>(); IClient client = await clientFactory.Get(settings, clientCredential.ClientId.Value); if (client == null) { result = StatusCode(StatusCodes.Status401Unauthorized); } if (result == null) { ISecretProcessor secretProcessor = scope.Resolve <ISecretProcessor>(); if (!secretProcessor.Verify(clientCredential.Secret, await client.GetSecretHash(settings))) { result = StatusCode(StatusCodes.Status401Unauthorized); } } if (result == null) { result = Content(await CreateToken(client), "text/plain"); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); result = StatusCode(StatusCodes.Status500InternalServerError); } return(result); }