public Task RequestToken(OAuthRequestTokenContext context)
        {
            var token = "";

            string authorization = context.Request.Headers.Get("Authorization");

            if (!string.IsNullOrEmpty(authorization))
            {
                if (authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
                {
                    token         = authorization.Substring("Bearer ".Length).Trim();
                    context.Token = token;
                    return(Task.FromResult(0));
                }
            }

            token = context.Request.Query["accesstoken"];
            if (!string.IsNullOrEmpty(token))
            {
                context.Token = token;
                return(Task.FromResult(0));
            }

            token = context.Request.Cookies["accesstoken"];
            if (!string.IsNullOrEmpty(token))
            {
                context.Token = token;
                return(Task.FromResult(0));
            }


            return(Task.FromResult(0));
        }
Beispiel #2
0
        private static async Task <Account> GrantResourceOwnerCredentialsToken(OAuthGrantResourceOwnerCredentialsContext context, AuthRepository auth)
        {
            var token = context.OwinContext.Get <string>("token");

            if (!string.IsNullOrEmpty(token))
            {
                Guid parentRefreshToken;
                if (Guid.TryParse(token, out parentRefreshToken))
                {
                    var sessionToken = await auth.SessionTokenGetAsync(parentRefreshToken);

                    if (!object.Equals(sessionToken, null))
                    {
                        context.OwinContext.Set("parentSessionToken", sessionToken);
                        return(await auth.AccountGetAsync(sessionToken.AccountId));
                    }
                }
                else
                {
                    var tokenContext        = new OAuthRequestTokenContext(context.OwinContext, token);
                    var tokenReceiveContext = new AuthenticationTokenReceiveContext(context.OwinContext, Startup.OAuthBearerOptions.AccessTokenFormat, tokenContext.Token);
                    tokenReceiveContext.DeserializeTicket(tokenReceiveContext.Token);

                    var ticket = tokenReceiveContext.Ticket;
                    if (!object.Equals(ticket, null) && ticket.Properties.ExpiresUtc.HasValue && ticket.Properties.ExpiresUtc.Value > Startup.OAuthBearerOptions.SystemClock.UtcNow)
                    {
                        return(await auth.AccountGetAsync(ticket.Identity.Name));
                    }
                }
            }

            return(null);
        }
Beispiel #3
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            if (!string.IsNullOrEmpty(context.Token) && context.Token != "null")
            {
                var handler          = new JwtSecurityTokenHandler();
                JwtSecurityToken jwt = (JwtSecurityToken)handler.ReadToken(context.Token);

                if (!jwt.Header.ContainsKey(JwtHeaderParameterNames.Typ))
                {
                    context.Token = string.Empty;
                }
                string typ = (string)jwt.Header[JwtHeaderParameterNames.Typ];
                if (typ != "JWT" && typ != "urn:ietf:params:oauth:token-type:jwt")
                {
                    context.Token = string.Empty;
                }
                string alg = (string)jwt.Header[JwtHeaderParameterNames.Alg];

                bool hmacMode = false;
                if (hmacMode && alg != Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha512Signature && alg != Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha512)
                {
                    context.Token = string.Empty;
                }
                if (!hmacMode && alg != Microsoft.IdentityModel.Tokens.SecurityAlgorithms.RsaSha256Signature && alg != Microsoft.IdentityModel.Tokens.SecurityAlgorithms.RsaSha256)
                {
                    context.Token = string.Empty;
                }
            }
            return(base.RequestToken(context));
        }
Beispiel #4
0
        /// <summary>
        /// 获取Token
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private static Task HandlerRequestToken(OAuthRequestTokenContext context)
        {
            //默认从context.Request.Headers["Authorization"]获取
            var token = context.Token;

            return(Task.FromResult(0));
        }
Beispiel #5
0
 public Task RequestToken(OAuthRequestTokenContext context)
 {
     Verify(context.Token);
     //ValidateJwt(context.Token);
     //context.Validated();
     return(Task.FromResult(0));
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task RequestToken(OAuthRequestTokenContext context)
        {
            logger.Debug("RequestToken");
            IHeaderDictionary headers = context.Request.Headers;

            if (headers != null && headers.Count > 0)
            {
                //如果是Authorization=Bearer {access_token} 不做处理
                if (headers.ContainsKey("Authorization") || headers.ContainsKey("authorization"))
                {
                    return;
                }
            }
            //?access_token={access_token}
            var accessToken = context.Request.Query.Get("access_token");

            //if (string.IsNullOrEmpty(accessToken))
            //{
            //    //form类型的参数
            //    IFormCollection formColls = await context.Request.ReadFormAsync();
            //    if (formColls != null || formColls.Count() > 0)
            //    {
            //        accessToken = formColls["access_token"];
            //    }
            //}
            if (!string.IsNullOrEmpty(accessToken))
            {
                context.Token = accessToken;
            }
        }
Beispiel #7
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var token = context.Request.Cookies.SingleOrDefault(x => x.Key == "token").Value;

            context.Token = token;
            return(base.RequestToken(context));
        }
Beispiel #8
0
        private async Task <string> GetTokenAsync(OwinContext context)
        {
            // find token in default location
            string requestToken  = null;
            string authorization = context.Request.Headers.Get("Authorization");

            if (!string.IsNullOrEmpty(authorization))
            {
                if (authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
                {
                    requestToken = authorization.Substring("Bearer ".Length).Trim();
                }
            }

            // give application opportunity to find from a different location, adjust, or reject token
            if (_options.TokenProvider != null)
            {
                var requestTokenContext = new OAuthRequestTokenContext(context, requestToken);
                await _options.TokenProvider.RequestToken(requestTokenContext);

                // if no token found, no further work possible
                if (string.IsNullOrEmpty(requestTokenContext.Token))
                {
                    return(null);
                }

                return(requestTokenContext.Token);
            }

            return(requestToken);
        }
Beispiel #9
0
        /// <summary>
        /// Handles processing OAuth bearer token.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public virtual Task RequestToken(OAuthRequestTokenContext context)
        {
            var idContext = new OAuthValidateIdentityContext(context.OwinContext, null, null);

            this.ValidateIdentity(idContext);
            return(Task.FromResult <int>(0));
        }
Beispiel #10
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            // try to find bearer token in a cookie
            // (by default OAuthBearerAuthenticationHandler
            // only checks Authorization header)
            var tokenCookie = context.OwinContext.Request.Cookies["BearerToken"];

            string bearerToken = context.Request.Query.Get("bearer_token");

            if (bearerToken != null)
            {
                string[] authorization = new string[] { "bearer " + bearerToken };
                context.Request.Headers.Add("Authorization", authorization);
            }

            //Aca se saca el token de autenticacion y se pone en el contexto
            if (context.Request.Headers.Any(a => a.Key == "Authorization") && context.Request.Headers.Get("Authorization").Any())
            {
                tokenCookie = context.Request.Headers.Get("Authorization");
            }

            if (!string.IsNullOrEmpty(tokenCookie))
            {
                context.Token = tokenCookie;
            }
            return(Task.FromResult <object>(null));
        }
        protected override async Task <AuthenticationTicket> AuthenticateCoreAsync()
        {
            // Find token in default location
            string requestToken  = null;
            string authorization = Request.Headers.Get("Authorization");

            if (!string.IsNullOrEmpty(authorization))
            {
                if (authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
                {
                    requestToken = authorization.Substring("Bearer ".Length).Trim();
                }
            }

            // Give application opportunity to find from a different location, adjust, or reject token
            var requestTokenContext = new OAuthRequestTokenContext(Context, requestToken);
            await Options.Provider.RequestToken(requestTokenContext);

            // If no token found, no further work possible
            if (string.IsNullOrEmpty(requestTokenContext.Token))
            {
                return(null);
            }

            //var validatingCert = X509.LocalMachine.My.SubjectDistinguishedName.Find("CN=as.local", false).First();
            var tokenHandler = new JwtSecurityTokenHandler();
            //var x509SecurityToken = new X509SecurityToken(validatingCert);

            var validationParameters = new TokenValidationParameters
            {
                ValidAudiences   = Options.AllowedAudiences,
                IssuerSigningKey = new InMemorySymmetricSecurityKey(Convert.FromBase64String(AppSettings.JwtSigningKey)),
                ValidIssuer      = AppSettings.JwtIssuerName
            };

            var tokenReceiveContext = new AuthenticationTokenReceiveContext(
                Context,
                Options.AccessTokenFormat,
                requestTokenContext.Token);

            SecurityToken   outToken;
            ClaimsPrincipal output = tokenHandler.ValidateToken(requestToken, validationParameters, out outToken);

            var id = new ClaimsIdentity(output.Claims, Options.AuthenticationType);

            if (id == null)
            {
                return(null);
            }

            var props = new AuthenticationProperties(new Dictionary <string, string> {
                { "issuer", AppSettings.JwtIssuerName },
                { "audience", AppSettings.JwtAllowedAudience }
            });

            AuthenticationTicket ticket = new AuthenticationTicket(id, props);

            return(ticket);
        }
Beispiel #12
0
 public Task RequestToken(OAuthRequestTokenContext context)
 {
     if (context.Request.Method.Equals("GET") && context.Request.Query["token"] != null)
     {
         context.Token = context.Request.Query["token"];
     }
     return(Task.CompletedTask);
 }
        private void RemoveToken(OAuthRequestTokenContext context)
        {
            context.Response.Cookies.Delete("access_token");
            context.Response.Cookies.Delete("refresh_token");
            context.Response.Cookies.Delete("oauth_fullName");

            context.Token = null;
        }
        internal static void UpdateToken(OAuthRequestTokenContext context, SaaSApiToken token)
        {
            context.Response.Cookies.Append("access_token", token.AccessToken, _cookieOptions);
            context.Response.Cookies.Append("refresh_token", token.RefreshToken, _cookieOptions);
            context.Response.Cookies.Append("oauth_fullName", string.Format("{0} {1}", token.FirstName, token.LastName), _cookieOptions);

            context.Token = token.AccessToken;
        }
Beispiel #15
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            if (context.Request.Headers.Any(item => item.Key.Equals("AuthorizationConectados")))
            {
                context.Token = context.Request.Headers["AuthorizationConectados"].Replace("Bearer ", "");
            }

            return(base.RequestToken(context));
        }
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            if (string.IsNullOrEmpty(context.Token))
            {
                context.Token = context.Request.Cookies["accessToken"];
            }

            return(Task.FromResult <object>(null));
        }
Beispiel #17
0
        public override async Task RequestToken(OAuthRequestTokenContext context)
        {
            var value = context.Request.Headers.Get(_name);

            if (!string.IsNullOrEmpty(value))
            {
                context.Token = value;
            }
        }
Beispiel #18
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            string token = context.Request.Query.Get("AcessToken");

            if (!string.IsNullOrEmpty(token))
            {
                var authenticationTicket = Startup.AuthServerOptions.AccessTokenFormat.Unprotect(token);
            }
            return(Task.FromResult <object>(null));
        }
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var value = context.Request.Query.Get("token");

            if (!string.IsNullOrEmpty(value))
            {
                context.Token = value;
            }
            return(Task.FromResult <object>(null));
        }
    public override Task RequestToken(OAuthRequestTokenContext context)
    {
        var tokenCookie = context.OwinContext.Request.Cookies["BearerToken"];

        if (!String.IsNullOrEmpty(tokenCookie))
        {
            context.Token = tokenCookie;
        }
        return(Task.FromResult <object>(null));
    }
        public Task RequestToken(OAuthRequestTokenContext context)
        {
            string token = context.Request.Headers["Authorization"];

            if (!string.IsNullOrEmpty(token))
            {
                context.Token = token.Replace("Bearer ", "");
            }
            return(Task.FromResult <object>(null));
        }
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var getter = _locations.FirstOrDefault(x => !String.IsNullOrWhiteSpace(x(context.Request)));

            if (getter != null)
            {
                var tokenStr = getter(context.Request);
                context.Token = _bearerRegex.Replace(tokenStr, "").Trim();
            }
            return(Task.FromResult <object>(null));
        }
Beispiel #23
0
        /// <summary>
        /// Handles processing OAuth bearer token.
        /// </summary>
        async public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var value = context?.Request?.Query?.Get(_queryKey);

            if (!string.IsNullOrWhiteSpace(value))
            {
                context.Token = value;
            }

            await base.RequestToken(context);
        }
Beispiel #24
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var value = context.Request.Query.Get("access_token");

            if (!string.IsNullOrEmpty(value))
            {
                context.Token = value;
            }

            return(base.RequestToken(context));
        }
Beispiel #25
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var cookie = context.Request.Cookies[_cookieName];

            if (!string.IsNullOrEmpty(cookie))
            {
                context.Token = cookie;
            }

            return(Task.FromResult <object>(null));
        }
Beispiel #26
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var value = context.Request.Headers["Authorization"].Substring("Bearer ".Length).Trim()
                        ?? context.Request.Query.Get("access_token");

            if (!string.IsNullOrEmpty(value))
            {
                context.Token = value;
            }

            return(Task.FromResult <object>(null));
        }
        public async Task GetRequestToken(OAuthRequestTokenContext context)
        {
            TokenRepository reps        = new TokenRepository();
            var             tokenText   = context.Token;
            var             tokenEntity = await reps.FindAsync(tokenText);

            if (tokenEntity == null)
            {
                context.Token = null;
                return;
            }
        }
 public Task RequestToken(OAuthRequestTokenContext context)
 {
     if (string.IsNullOrEmpty(context.Token))
     {
         var token = context.Request.Query.FirstOrDefault(q => q.Key.Equals("access_token", StringComparison.OrdinalIgnoreCase));
         if (token.Value != null && token.Value.Any())
         {
             context.Token = token.Value.FirstOrDefault();
         }
     }
     return(Task.FromResult <object>(null));
 }
Beispiel #29
0
        public override Task RequestToken(OAuthRequestTokenContext context)
        {
            var request         = context.Request;
            var requestBodyJson = JObject.Parse(new StreamReader(request.Body).ReadToEnd());
            var accessToken     = requestBodyJson["session"]["user"]["accessToken"].ToString();

            if (!string.IsNullOrEmpty(accessToken))
            {
                context.Token = accessToken;
            }

            return(Task.FromResult <object>(null));
        }
Beispiel #30
0
            public override Task RequestToken(OAuthRequestTokenContext context)
            {
                if (context.Request.Path.Value.StartsWith("/signalr"))
                {
                    var token = context.Request.Query.Get("token");
                    if (token != null)
                    {
                        context.Token = token;
                    }
                }

                return(Task.FromResult(context));
            }