Esempio n. 1
0
        public async Task <IActionResult> Account(string authority, [FromBody] AuthorityModel model)
        {
            if (model == null || model?.payload == null)
            {
                return(Unauthorized());
            }

            var authorities = _issuers["owner"].Authorities;

            if (!authorities.Any())
            {
                return(Unauthorized());
            }

            string token = model.token;

            if (string.IsNullOrWhiteSpace(authority))
            {
                authority = authorities.Keys.ToArray()[0];
                token     = JwtHelper.GenerateToken(new Claim[] { }, _settings.Value.AwronoreSettings.OtpTimeOut);
            }

            if (string.IsNullOrWhiteSpace(token))
            {
                return(Unauthorized());
            }

            var principle = JwtHelper.GetClaimsPrincipal(token);

            if (principle?.Identity?.IsAuthenticated == true)
            {
                try
                {
                    var claimsIdentity = principle.Identity as ClaimsIdentity;
                    var(verifyResult, otp) = await _issuers["owner"].VerifyAsync(authority, claimsIdentity.Claims.ToArray(), model.payload);
                    if (verifyResult.Authority == null)
                    {
                        return(Ok(new { auth_token = verifyResult.Token }));
                    }
                    return(Ok(new
                    {
                        verify_token = verifyResult.Token,
                        authority = verifyResult.Authority,
                        parameters = verifyResult.Payload,
                        otp = "",
                        timeOut = _settings.Value.AwronoreSettings.OtpTimeOut
                    }));
                }
                catch (Exception e)
                {
                    if (e is AwronoreIdentityException)
                    {
                        throw e;
                    }

                    return(Unauthorized());
                }
            }
            return(Unauthorized());
        }
Esempio n. 2
0
 public async Task <IActionResult> Account([FromBody] AuthorityModel model)
 {
     return(await Account("", model));
 }