diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2012-03-18 22:15:41 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2012-03-18 22:15:41 -0700 |
commit | eaf822454994249e6e287dcef3124aaa862c760c (patch) | |
tree | 1c11c6b45f7575ca2b0e73defd0a7e965b3ab4ce /src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ChannelElements | |
parent | 639a40d5de04c63a3b103488c5a39440c58455e2 (diff) | |
download | DotNetOpenAuth-eaf822454994249e6e287dcef3124aaa862c760c.zip DotNetOpenAuth-eaf822454994249e6e287dcef3124aaa862c760c.tar.gz DotNetOpenAuth-eaf822454994249e6e287dcef3124aaa862c760c.tar.bz2 |
All unit tests pass again.
Diffstat (limited to 'src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ChannelElements')
-rw-r--r-- | src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ChannelElements/AccessTokenBindingElement.cs | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ChannelElements/AccessTokenBindingElement.cs b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ChannelElements/AccessTokenBindingElement.cs index 05c07fa..1dd650c 100644 --- a/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ChannelElements/AccessTokenBindingElement.cs +++ b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ChannelElements/AccessTokenBindingElement.cs @@ -46,34 +46,40 @@ namespace DotNetOpenAuth.OAuth2.ChannelElements { public override MessageProtections? ProcessOutgoingMessage(IProtocolMessage message) { var directResponse = message as IDirectResponseProtocolMessage; var request = directResponse != null ? directResponse.OriginatingRequest as IAccessTokenRequestInternal : null; + var authCarryingRequest = request as IAuthorizationCarryingRequest; + var accessTokenResponse = message as IAccessTokenIssuingResponse; + var implicitGrantResponse = message as EndUserAuthorizationSuccessAccessTokenResponse; if (request != null) { request.AccessTokenCreationParameters = this.AuthorizationServer.GetAccessTokenParameters(request); ErrorUtilities.VerifyHost(request.AccessTokenCreationParameters != null, "IAuthorizationServer.GetAccessTokenParameters must not return null."); + + if (accessTokenResponse != null) { + accessTokenResponse.Lifetime = request.AccessTokenCreationParameters.AccessTokenLifetime; + } } - var implicitGrantResponse = message as EndUserAuthorizationSuccessAccessTokenResponse; - if (implicitGrantResponse != null) { + AccessToken accessToken = null; + if (authCarryingRequest != null) { + ErrorUtilities.VerifyInternal(request != null, MessagingStrings.UnexpectedMessageReceived, typeof(IAccessTokenRequestInternal), request.GetType()); + accessToken = new AccessToken(authCarryingRequest.AuthorizationDescription, accessTokenResponse.Lifetime); + } else if (implicitGrantResponse != null) { IAccessTokenCarryingRequest tokenCarryingResponse = implicitGrantResponse; - tokenCarryingResponse.AuthorizationDescription = new AccessToken(request.ClientIdentifier, implicitGrantResponse.Scope, implicitGrantResponse.AuthorizingUsername, implicitGrantResponse.Lifetime); - - return MessageProtections.None; + accessToken = new AccessToken( + request.ClientIdentifier, + implicitGrantResponse.Scope, + implicitGrantResponse.AuthorizingUsername, + implicitGrantResponse.Lifetime); } - var accessTokenResponse = message as IAccessTokenIssuingResponse; - if (accessTokenResponse != null) { - ErrorUtilities.VerifyInternal(request != null, MessagingStrings.UnexpectedMessageReceived, typeof(IAccessTokenRequestInternal), request.GetType()); - var authCarryingRequest = (IAuthorizationCarryingRequest)request; - var accessToken = new AccessToken(authCarryingRequest.AuthorizationDescription, accessTokenResponse.Lifetime); - var accessTokenFormatter = AccessToken.CreateFormatter(this.AuthorizationServer.AccessTokenSigningKey, request.AccessTokenCreationParameters.ResourceServerEncryptionKey); + if (accessToken != null) { accessTokenResponse.AuthorizationDescription = accessToken; + var accessTokenFormatter = AccessToken.CreateFormatter(this.AuthorizationServer.AccessTokenSigningKey, request.AccessTokenCreationParameters.ResourceServerEncryptionKey); accessTokenResponse.AccessToken = accessTokenFormatter.Serialize(accessToken); - accessTokenResponse.Lifetime = request.AccessTokenCreationParameters.AccessTokenLifetime; } var refreshTokenResponse = message as AccessTokenSuccessResponse; if (refreshTokenResponse != null && refreshTokenResponse.HasRefreshToken) { - var authCarryingRequest = (IAuthorizationCarryingRequest)request; var refreshToken = new RefreshToken(authCarryingRequest.AuthorizationDescription); var refreshTokenFormatter = RefreshToken.CreateFormatter(this.AuthorizationServer.CryptoKeyStore); refreshTokenResponse.RefreshToken = refreshTokenFormatter.Serialize(refreshToken); |