Exemple #1
0
        public void AuthorizeRequestToken(string requestToken)
        {
            OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(requestToken);
            if (row != null)
            {
                row.TokenTypeId = (int)OAuthTokenType.AuthorizedRequestToken;
                row.SetPendingUserAuthorizationRequestNull();

                UserContext user = UserContext.Current;
                if (user != null)
                {
                    row.LoginId = user.UserId;
                    if (user.OrganizationId != Guid.Empty)
                    {
                        row.OrganizationId = user.OrganizationId;
                        if (user.InstanceId != Guid.Empty)
                        {
                            row.InstanceId = user.InstanceId;
                        }
                    }
                }

                using (OAuthTokenTableAdapter adapter = new OAuthTokenTableAdapter())
                {
                    adapter.Update(row);
                }
            }
        }
Exemple #2
0
 public TokenType GetTokenType(string token)
 {
     OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(token);
     if (row != null)
     {
         return((row.TokenTypeId == (int)OAuthTokenType.AccessToken) ? TokenType.AccessToken : TokenType.RequestToken);
     }
     return(TokenType.InvalidToken);
 }
Exemple #3
0
 public bool IsRequestTokenAuthorized(string requestToken)
 {
     OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(requestToken);
     if (row != null)
     {
         if (row.TokenTypeId == (int)OAuthTokenType.AuthorizedRequestToken)
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #4
0
 public IServiceProviderRequestToken GetRequestToken(string token)
 {
     OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(token);
     if (row != null)
     {
         if (row.TokenTypeId != (int)OAuthTokenType.AccessToken)
         {
             return(row);
         }
     }
     return(null);
 }
Exemple #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            this.MasterPage.VisibleHeader
                              = this.MasterPage.VisibleMainMenu
                              = this.MasterPage.VisibleLeftArea
                              = this.MasterPage.VisibleSubmenu
                              = this.MasterPage.VisibleBreadcrumbs
                              = this.MasterPage.VisibleFooter
                              = this.MasterPage.VisibleHeaderMessage
                              = this.MasterPage.EnableOverlay
                              = false;

            if (this.EnableEmbeddedStyleSheets)
            {
                if (FrameworkConfiguration.Current.WebApplication.MasterPage.Theme == Pages.MasterPageTheme.Modern)
                {
                    this.Page.Header.Controls.Add(Support.CreateStyleSheetLink(ResourceProvider.GetResourceUrl(ResourceProvider.LogOnModernStyleSheet, true)));
                }
                else
                {
                    this.Page.Header.Controls.Add(Support.CreateStyleSheetLink(ResourceProvider.GetResourceUrl(ResourceProvider.LogOnStyleSheet, true)));
                }
            }

            m_PendingRequest = TokenProvider.Current.GetPendingUserAuthorizationRequest();

            if (!IsPostBack)
            {
                this.LoadResources();

                MainMultiView.ActiveViewIndex = 2;

                if (m_PendingRequest == null)
                {
                    //Response.Redirect("~/Members/AuthorizedConsumers.aspx"); // TODO: Need to redirect to user's start page?
                }
                else
                {
                    MainMultiView.ActiveViewIndex = 0;

                    string token = ((ITokenContainingMessage)m_PendingRequest).Token;
                    IServiceProviderRequestToken requestToken    = TokenProvider.Current.GetRequestToken(token);
                    OAuthDataSet.OAuthTokenRow   requestTokenRow = (OAuthDataSet.OAuthTokenRow)requestToken;

                    ConsumerLiteral.Text = string.Format(CultureInfo.InvariantCulture, Resources.OAuthControl_ConsumerLiteral_Text, TokenProvider.Current.GetConsumer(requestTokenRow.ConsumerId).Key, FrameworkConfiguration.Current.WebApplication.Name);

                    // Generate an unpredictable secret that goes to the user agent and must come back with authorization
                    // to guarantee the user interacted with this page rather than being scripted by an evil Consumer.
                    OAuthAuthorizationSecToken.Value = UserContext.OAuthAuthorizationSecret = TokenProvider.Current.GenerateTokenSecret();
                }
            }
        }
Exemple #6
0
        public void UpdatePendingUserAuthorizationRequest(string token, UserAuthorizationRequest pendingUserAuthorizationRequest)
        {
            OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(token);
            if (row != null)
            {
                row.PendingUserAuthorizationRequest = Support.Serialize(pendingUserAuthorizationRequest);

                using (OAuthTokenTableAdapter adapter = new OAuthTokenTableAdapter())
                {
                    adapter.Update(row);
                }
            }
        }
Exemple #7
0
        public void ProcessRequest(HttpContext context)
        {
            IProtocolMessage         request      = m_Provider.ReadRequest();
            UnauthorizedTokenRequest requestToken = null;
            UserAuthorizationRequest requestAuth  = null;
            AuthorizedTokenRequest   requestAccessToken;

            if ((requestToken = request as UnauthorizedTokenRequest) != null)
            {
                UnauthorizedTokenResponse response = m_Provider.PrepareUnauthorizedTokenMessage(requestToken);
                m_Provider.Channel.Send(response);
            }
            else if ((requestAuth = request as UserAuthorizationRequest) != null)
            {
                string token = ((ITokenContainingMessage)requestAuth).Token;

                ((TokenProvider)m_Provider.TokenManager).UpdatePendingUserAuthorizationRequest(token, requestAuth);

                TokenProvider.SetTokenCookie(token);

                if (context == null)
                {
                    throw new ArgumentNullException("context");
                }

                context.Response.Redirect(ActionProvider.FindAction(ActionProvider.OAuthPageActionId).AbsoluteNavigateUrl);
            }
            else if ((requestAccessToken = request as AuthorizedTokenRequest) != null)
            {
                AuthorizedTokenResponse response = m_Provider.PrepareAccessTokenMessage(requestAccessToken);

                OAuthDataSet.OAuthTokenRow row = (OAuthDataSet.OAuthTokenRow)m_Provider.TokenManager.GetAccessToken(response.AccessToken);
                response.ExtraData.Add(new KeyValuePair <string, string>("api_token", LoginProvider.Current.GetToken(row.LoginId)));

                if (!row.IsOrganizationIdNull())
                {
                    response.ExtraData.Add(new KeyValuePair <string, string>("org", OrganizationProvider.GetOrganization(row.OrganizationId).PseudoId));
                    if (!row.IsInstanceIdNull())
                    {
                        response.ExtraData.Add(new KeyValuePair <string, string>("dept", InstanceProvider.GetInstance(row.InstanceId, row.OrganizationId).PseudoId));
                    }
                }

                m_Provider.Channel.Send(response);
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
Exemple #8
0
        public void UpdateToken(IServiceProviderRequestToken token)
        {
            if (token != null)
            {
                OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(token.Token);
                if (row != null)
                {
                    row.RequestTokenVerifier = token.VerificationCode;

                    using (OAuthTokenTableAdapter adapter = new OAuthTokenTableAdapter())
                    {
                        adapter.Update(row);
                    }
                }
            }
        }
Exemple #9
0
        public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret)
        {
            OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(requestToken);
            if (row != null)
            {
                if (string.Compare(consumerKey, GetConsumer(row.ConsumerId).Key, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    row.CreatedTime = DateTime.UtcNow;
                    row.TokenTypeId = (int)OAuthTokenType.AccessToken;
                    row.Token       = accessToken;
                    row.TokenSecret = accessTokenSecret;

                    using (OAuthTokenTableAdapter adapter = new OAuthTokenTableAdapter())
                    {
                        adapter.Update(row);
                    }
                }
            }
        }
Exemple #10
0
        public UserAuthorizationRequest GetPendingUserAuthorizationRequest()
        {
            string token = GetTokenFromCookie();

            if (!string.IsNullOrEmpty(token))
            {
                OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(token);
                if (row != null)
                {
                    if (row.TokenTypeId == (int)OAuthTokenType.UnauthorizedRequestToken)
                    {
                        if (!row.IsPendingUserAuthorizationRequestNull())
                        {
                            return(Support.Deserialize(row.PendingUserAuthorizationRequest) as UserAuthorizationRequest);
                        }
                    }
                }
            }
            return(null);
        }
Exemple #11
0
        public string UpdateRequestTokenVerifier(string token)
        {
            string verifier = null;

            OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(token);
            if (row != null)
            {
                OAuthDataSet.OAuthConsumerRow consumerRow = (OAuthDataSet.OAuthConsumerRow)TokenProvider.Current.GetConsumer(row.ConsumerId);
                if (consumerRow != null)
                {
                    verifier = ServiceProvider.CreateVerificationCode((DotNetOpenAuth.OAuth.VerificationCodeFormat)consumerRow.VerificationCodeFormat, consumerRow.VerificationCodeLength);

                    row.RequestTokenVerifier = verifier;

                    using (OAuthTokenTableAdapter adapter = new OAuthTokenTableAdapter())
                    {
                        adapter.Update(row);
                    }
                }
            }

            return(verifier);
        }
Exemple #12
0
 public string GetTokenSecret(string token)
 {
     OAuthDataSet.OAuthTokenRow row = GetOAuthTokenRow(token);
     return((row != null) ? row.TokenSecret : null);
 }