Esempio n. 1
0
        public HttpResponseMessage OAuthRequestToken()
        {
            var identity = KmsIdentity.GetCurrentPrincipalIdentity();

            // --- Evitar doble Login ---
            if (identity.IsAuthenticated)
            {
                throw new HttpAlreadyLoggedInException(
                          "100" + ControllerStrings.Warning100_CannotLoginAgain
                          );
            }

            // --- Generar nuevo Token OAuth ---
            Token token = new Token {
                ApiKey = OAuth.ConsumerKey,
                Guid   = Guid.NewGuid(),
                Secret = Guid.NewGuid(),

                CallbackUri
                    = OAuth.CallbackUri == null
                    ? "oob"
                    : OAuth.CallbackUri.AbsoluteUri,

                ExpirationDate = DateTime.UtcNow.AddMinutes(10)
            };

            Database.TokenStore.Add(token);
            Database.SaveChanges();

            // --- Preparar y devolver detalles de Token OAuth ---
            return(new HttpResponseMessage {
                RequestMessage
                    = Request,

                StatusCode
                    = HttpStatusCode.OK,
                Content
                    = new StringContent(
                          string.Format(
                              CultureInfo.InvariantCulture,

                              "oauth_token={0}"
                              + "&oauth_token_secret={1}"
                              + "&oauth_callback_confirmed={2}"
                              + "&x_token_expires={3}",

                              token.Guid.ToString("N"),
                              token.Secret.ToString("N"),
                              identity.OAuth.CallbackUri == null
                                ? "false"
                                : "true",
                              10 * 60
                              )
                          )
            });
        }
Esempio n. 2
0
        public HttpResponseMessage DeleteToken()
        {
            var identity = KmsIdentity.GetCurrentPrincipalIdentity();
            var token    = identity.OAuth.Token;

            Database.TokenStore.Delete(token.Guid);
            Database.SaveChanges();

            return(new HttpResponseMessage(
                       HttpStatusCode.NoContent
                       ));
        }