diff options
Diffstat (limited to 'src/DotNetOpenAuth.AspNet/Clients/OAuth/InMemoryOAuthTokenManager.cs')
-rw-r--r-- | src/DotNetOpenAuth.AspNet/Clients/OAuth/InMemoryOAuthTokenManager.cs | 160 |
1 files changed, 99 insertions, 61 deletions
diff --git a/src/DotNetOpenAuth.AspNet/Clients/OAuth/InMemoryOAuthTokenManager.cs b/src/DotNetOpenAuth.AspNet/Clients/OAuth/InMemoryOAuthTokenManager.cs index a10e777..e8509af 100644 --- a/src/DotNetOpenAuth.AspNet/Clients/OAuth/InMemoryOAuthTokenManager.cs +++ b/src/DotNetOpenAuth.AspNet/Clients/OAuth/InMemoryOAuthTokenManager.cs @@ -14,13 +14,26 @@ namespace DotNetOpenAuth.AspNet.Clients { /// An implementation of IOAuthTokenManager which stores keys in memory. /// </summary> public sealed class InMemoryOAuthTokenManager : IConsumerTokenManager { + #region Constants and Fields + + /// <summary> + /// The _tokens and secrets. + /// </summary> private readonly Dictionary<string, string> _tokensAndSecrets = new Dictionary<string, string>(); + #endregion + + #region Constructors and Destructors + /// <summary> /// Initializes a new instance of the <see cref="InMemoryOAuthTokenManager"/> class. /// </summary> - /// <param name="consumerKey">The consumer key.</param> - /// <param name="consumerSecret">The consumer secret.</param> + /// <param name="consumerKey"> + /// The consumer key. + /// </param> + /// <param name="consumerSecret"> + /// The consumer secret. + /// </param> public InMemoryOAuthTokenManager(string consumerKey, string consumerSecret) { if (consumerKey == null) { throw new ArgumentNullException("consumerKey"); @@ -30,94 +43,119 @@ namespace DotNetOpenAuth.AspNet.Clients { throw new ArgumentNullException("consumerSecret"); } - ConsumerKey = consumerKey; - ConsumerSecret = consumerSecret; + this.ConsumerKey = consumerKey; + this.ConsumerSecret = consumerSecret; } + #endregion + + #region Public Properties + /// <summary> /// Gets the consumer key. /// </summary> - public string ConsumerKey { - get; - private set; - } + public string ConsumerKey { get; private set; } /// <summary> /// Gets the consumer secret. /// </summary> - public string ConsumerSecret { - get; - private set; - } + public string ConsumerSecret { get; private set; } - #region ITokenManager Members + #endregion - /// <summary> - /// Gets the Token Secret given a request or access token. - /// </summary> - /// <param name="token">The request or access token.</param> - /// <returns> - /// The secret associated with the given token. - /// </returns> - /// <exception cref="ArgumentException">Thrown if the secret cannot be found for the given token.</exception> - public string GetTokenSecret(string token) { - return _tokensAndSecrets[token]; - } - - /// <summary> - /// Stores a newly generated unauthorized request token, secret, and optional - /// application-specific parameters for later recall. - /// </summary> - /// <param name="request">The request message that resulted in the generation of a new unauthorized request token.</param> - /// <param name="response">The response message that includes the unauthorized request token.</param> - /// <exception cref="ArgumentException">Thrown if the consumer key is not registered, or a required parameter was not found in the parameters collection.</exception> - /// <remarks> - /// Request tokens stored by this method SHOULD NOT associate any user account with this token. - /// It usually opens up security holes in your application to do so. Instead, you associate a user - /// account with access tokens (not request tokens) in the <see cref="ExpireRequestTokenAndStoreNewAccessToken"/> - /// method. - /// </remarks> - public void StoreNewRequestToken(UnauthorizedTokenRequest request, ITokenSecretContainingMessage response) { - _tokensAndSecrets[response.Token] = response.TokenSecret; - } + #region Public Methods and Operators /// <summary> /// Deletes a request token and its associated secret and stores a new access token and secret. /// </summary> - /// <param name="consumerKey">The Consumer that is exchanging its request token for an access token.</param> - /// <param name="requestToken">The Consumer's request token that should be deleted/expired.</param> - /// <param name="accessToken">The new access token that is being issued to the Consumer.</param> - /// <param name="accessTokenSecret">The secret associated with the newly issued access token.</param> + /// <param name="consumerKey"> + /// The Consumer that is exchanging its request token for an access token. + /// </param> + /// <param name="requestToken"> + /// The Consumer's request token that should be deleted/expired. + /// </param> + /// <param name="accessToken"> + /// The new access token that is being issued to the Consumer. + /// </param> + /// <param name="accessTokenSecret"> + /// The secret associated with the newly issued access token. + /// </param> /// <remarks> - /// <para> + /// <para> /// Any scope of granted privileges associated with the request token from the - /// original call to <see cref="StoreNewRequestToken"/> should be carried over - /// to the new Access Token. + /// original call to + /// <see cref="StoreNewRequestToken"/> + /// should be carried over + /// to the new Access Token. /// </para> - /// <para> + /// <para> /// To associate a user account with the new access token, - /// <see cref="System.Web.HttpContext.User">HttpContext.Current.User</see> may be - /// useful in an ASP.NET web application within the implementation of this method. - /// Alternatively you may store the access token here without associating with a user account, - /// and wait until <see cref="WebConsumer.ProcessUserAuthorization()"/> or - /// <see cref="DesktopConsumer.ProcessUserAuthorization(string, string)"/> return the access - /// token to associate the access token with a user account at that point. + /// <see cref="System.Web.HttpContext.User">HttpContext.Current.User</see> + /// may be + /// useful in an ASP.NET web application within the implementation of this method. + /// Alternatively you may store the access token here without associating with a user account, + /// and wait until + /// <see cref="WebConsumer.ProcessUserAuthorization()"/> + /// or + /// <see cref="DesktopConsumer.ProcessUserAuthorization(string, string)"/> + /// return the access + /// token to associate the access token with a user account at that point. /// </para> /// </remarks> - public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret) { - _tokensAndSecrets.Remove(requestToken); - _tokensAndSecrets[accessToken] = accessTokenSecret; + public void ExpireRequestTokenAndStoreNewAccessToken( + string consumerKey, string requestToken, string accessToken, string accessTokenSecret) { + this._tokensAndSecrets.Remove(requestToken); + this._tokensAndSecrets[accessToken] = accessTokenSecret; + } + + /// <summary> + /// Gets the Token Secret given a request or access token. + /// </summary> + /// <param name="token"> + /// The request or access token. + /// </param> + /// <returns> + /// The secret associated with the given token. + /// </returns> + /// <exception cref="ArgumentException"> + /// Thrown if the secret cannot be found for the given token. + /// </exception> + public string GetTokenSecret(string token) { + return this._tokensAndSecrets[token]; } /// <summary> /// Classifies a token as a request token or an access token. /// </summary> - /// <param name="token">The token to classify.</param> - /// <returns>Request or Access token, or invalid if the token is not recognized.</returns> + /// <param name="token"> + /// The token to classify. + /// </param> + /// <returns> + /// Request or Access token, or invalid if the token is not recognized. + /// </returns> public TokenType GetTokenType(string token) { throw new NotImplementedException(); } + /// <summary> + /// Stores a newly generated unauthorized request token, secret, and optional application-specific parameters for later recall. + /// </summary> + /// <param name="request"> + /// The request message that resulted in the generation of a new unauthorized request token. + /// </param> + /// <param name="response"> + /// The response message that includes the unauthorized request token. + /// </param> + /// <exception cref="ArgumentException"> + /// Thrown if the consumer key is not registered, or a required parameter was not found in the parameters collection. + /// </exception> + /// <remarks> + /// Request tokens stored by this method SHOULD NOT associate any user account with this token. It usually opens up security holes in your application to do so. Instead, you associate a user account with access tokens (not request tokens) in the <see cref="ExpireRequestTokenAndStoreNewAccessToken"/> method. + /// </remarks> + public void StoreNewRequestToken(UnauthorizedTokenRequest request, ITokenSecretContainingMessage response) { + this._tokensAndSecrets[response.Token] = response.TokenSecret; + } + #endregion } -}
\ No newline at end of file +} |