Esempio n. 1
0
 public IActionResult CreateSecret()
 {
     using (ILifetimeScope scope = _container.BeginLifetimeScope())
     {
         ISecretProcessor secretProcessor = scope.Resolve <ISecretProcessor>();
         return(Ok(new { Secret = secretProcessor.Create() }));
     }
 }
Esempio n. 2
0
        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);
        }