Exemplo n.º 1
0
        public Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
        {
            context.Principal = null;
            IEnumerable <string> headers;

            if (context.Request.Headers.TryGetValues("accessToken", out headers) == true)
            {
                var accessToken = headers.First();
                var user        = UsersStorage.Find(accessToken, DateTime.Now);
                if (user != null)
                {
                    var getnericIdentiry = new GenericIdentity(user.Login);

                    getnericIdentiry.AddClaim(new Claim("Id", user.Id + ""));
                    getnericIdentiry.AddClaim(new Claim("Login", user.Login));
                    getnericIdentiry.AddClaim(new Claim("Password", user.Password));
                    getnericIdentiry.AddClaim(new Claim("AccessToken", accessToken));

                    context.Principal = new GenericPrincipal(getnericIdentiry, null);
                }
                else
                {
                    context.ErrorResult = new AuthenticationErrorResult("Не действительный токен доступа.");
                }
            }
            else
            {
                context.ErrorResult = new AuthenticationErrorResult("Не указан токен доступа.");
            }
            return(Task.FromResult <object>(null));
        }
Exemplo n.º 2
0
        private HttpRequest Create(IOwinRequest owinRequest)
        {
            var request = new HttpRequest()
            {
                DateTime    = DateTime.Now,
                Host        = owinRequest.Host.Value,
                Method      = owinRequest.Method,
                Url         = owinRequest.Path.Value,
                QueryString = owinRequest.QueryString.Value
            };

            string[] headers;
            if (owinRequest.Headers.TryGetValue("accessToken", out headers) == true)
            {
                var accessToken = headers.First();
                var user        = UsersStorage.Find(accessToken, DateTime.Now);
                if (user != null)
                {
                    request.Login = user.Login;
                }
            }

            using (var reader = new StreamReader(owinRequest.Body, Encoding.UTF8))
            {
                request.Body = reader.ReadToEnd();
            }

            var memoryStream = new MemoryStream();
            var bytesToWrite = Encoding.UTF8.GetBytes(request.Body);

            memoryStream.Write(bytesToWrite, 0, bytesToWrite.Length);
            memoryStream.Seek(0, SeekOrigin.Begin);

            owinRequest.Body = memoryStream;

            return(request);
        }