public object Any(ConvertSessionToToken request)
        {
            var jwtAuthProvider = AuthenticateService.GetAuthProvider(JwtAuthProvider.Name) as JwtAuthProvider;

            if (jwtAuthProvider == null)
            {
                throw new NotSupportedException("JwtAuthProvider is not registered");
            }

            if (jwtAuthProvider.RequireSecureConnection && !Request.IsSecureConnection)
            {
                throw HttpError.Forbidden(ErrorMessages.JwtRequiresSecureConnection);
            }

            var session = Request.GetSession();
            var token   = jwtAuthProvider.CreateJwtBearerToken(session);

            if (!request.PreserveSession)
            {
                Request.RemoveSession(session.Id);
            }

            return(new HttpResult(new ConvertSessionToTokenResponse())
            {
                Cookies =
                {
                    new Cookie(Keywords.JwtSessionToken, token)
                    {
                        HttpOnly = true,
                        Secure = Request.IsSecureConnection,
                        Expires = DateTime.UtcNow.Add(jwtAuthProvider.ExpireTokensIn),
                    }
                }
            });
        }
Example #2
0
        public object Any(ConvertSessionToToken request)
        {
            var jwtAuthProvider = AuthenticateService.GetAuthProvider(JwtAuthProvider.Name) as JwtAuthProvider;
            if (jwtAuthProvider == null)
                throw new NotSupportedException("JwtAuthProvider is not registered");

            if (jwtAuthProvider.RequireSecureConnection && !Request.IsSecureConnection)
                throw HttpError.Forbidden(ErrorMessages.JwtRequiresSecureConnection);

            var session = Request.GetSession();
            if (session.FromToken)
                return new ConvertSessionToTokenResponse();

            var token = jwtAuthProvider.CreateJwtBearerToken(session);

            if (!request.PreserveSession)
                Request.RemoveSession(session.Id);

            return new HttpResult(new ConvertSessionToTokenResponse())
            {
                Cookies = {
                    new Cookie(Keywords.TokenCookie, token, Cookies.RootPath) {
                        HttpOnly = true,
                        Secure = Request.IsSecureConnection,
                        Expires = DateTime.UtcNow.Add(jwtAuthProvider.ExpireTokensIn),
                    }
                }
            };
        }
        public object Any(ConvertSessionToToken request)
        {
            var jwtAuthProvider = (JwtAuthProvider)AuthenticateService.GetRequiredJwtAuthProvider();

            if (jwtAuthProvider.RequireSecureConnection && !Request.IsSecureConnection)
            {
                throw HttpError.Forbidden(ErrorMessages.JwtRequiresSecureConnection.Localize(Request));
            }

            if (Request.ResponseContentType.MatchesContentType(MimeTypes.Html))
            {
                Request.ResponseContentType = MimeTypes.Json;
            }

            var          token   = Request.GetJwtToken();
            IAuthSession session = null;
            var          includeTokensInResponse = jwtAuthProvider.IncludeJwtInConvertSessionToTokenResponse;
            var          createFromSession       = string.IsNullOrEmpty(token);

            if (createFromSession || includeTokensInResponse)
            {
                session = Request.GetSession();

                if (createFromSession)
                {
                    token = jwtAuthProvider.CreateJwtBearerToken(Request, session);
                }

                if (!request.PreserveSession)
                {
                    Request.RemoveSession(session.Id);
                }
            }

            return(new HttpResult(new ConvertSessionToTokenResponse {
                AccessToken = includeTokensInResponse
                    ? token
                    : null,
                RefreshToken = createFromSession && includeTokensInResponse && !request.PreserveSession
                    ? jwtAuthProvider.CreateJwtRefreshToken(Request, session.UserAuthId, jwtAuthProvider.ExpireRefreshTokensIn)
                    : null
            })
            {
                Cookies =
                {
                    new Cookie(Keywords.TokenCookie, token, Cookies.RootPath)
                    {
                        HttpOnly = true,
                        Secure = Request.IsSecureConnection,
                        Expires = DateTime.UtcNow.Add(jwtAuthProvider.ExpireTokensIn),
                    }
                }
            });
        }
Example #4
0
        public object Any(ConvertSessionToToken request)
        {
            var jwtAuthProvider = (JwtAuthProvider)AuthenticateService.GetRequiredJwtAuthProvider();

            if (jwtAuthProvider.RequireSecureConnection && !Request.IsSecureConnection)
            {
                throw HttpError.Forbidden(ErrorMessages.JwtRequiresSecureConnection.Localize(Request));
            }

            if (Request.ResponseContentType.MatchesContentType(MimeTypes.Html))
            {
                Request.ResponseContentType = MimeTypes.Json;
            }

            var token = Request.GetJwtToken();

            if (string.IsNullOrEmpty(token))
            {
                var session = Request.GetSession();
                token = jwtAuthProvider.CreateJwtBearerToken(Request, session);

                if (!request.PreserveSession)
                {
                    Request.RemoveSession(session.Id);
                }
            }

            return(new HttpResult(new ConvertSessionToTokenResponse())
            {
                Cookies =
                {
                    new Cookie(Keywords.TokenCookie, token, Cookies.RootPath)
                    {
                        HttpOnly = true,
                        Secure = Request.IsSecureConnection,
                        Expires = DateTime.UtcNow.Add(jwtAuthProvider.ExpireTokensIn),
                    }
                }
            });
        }