Skip to content
This repository was archived by the owner on Mar 20, 2019. It is now read-only.

Commit 0b5012f

Browse files
committed
Adds ClientBase.AuthorizeRequest overloads that accept WebHeaderCollection.
Fixes #119
1 parent be86c92 commit 0b5012f

2 files changed

Lines changed: 42 additions & 3 deletions

File tree

src/DotNetOpenAuth.OAuth2.Client/OAuth2/ClientBase.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,20 @@ public static void AuthorizeRequest(HttpWebRequest request, string accessToken)
8787
Requires.NotNull(request, "request");
8888
Requires.NotNullOrEmpty(accessToken, "accessToken");
8989

90-
OAuthUtilities.AuthorizeWithBearerToken(request, accessToken);
90+
AuthorizeRequest(request.Headers, accessToken);
91+
}
92+
93+
/// <summary>
94+
/// Adds the necessary HTTP Authorization header to an HTTP request for protected resources
95+
/// so that the Service Provider will allow the request through.
96+
/// </summary>
97+
/// <param name="requestHeaders">The headers on the request for protected resources from the service provider.</param>
98+
/// <param name="accessToken">The access token previously obtained from the Authorization Server.</param>
99+
public static void AuthorizeRequest(WebHeaderCollection requestHeaders, string accessToken) {
100+
Requires.NotNull(requestHeaders, "requestHeaders");
101+
Requires.NotNullOrEmpty(accessToken, "accessToken");
102+
103+
OAuthUtilities.AuthorizeWithBearerToken(requestHeaders, accessToken);
91104
}
92105

93106
/// <summary>
@@ -99,6 +112,19 @@ public static void AuthorizeRequest(HttpWebRequest request, string accessToken)
99112
public void AuthorizeRequest(HttpWebRequest request, IAuthorizationState authorization) {
100113
Requires.NotNull(request, "request");
101114
Requires.NotNull(authorization, "authorization");
115+
116+
this.AuthorizeRequest(request.Headers, authorization);
117+
}
118+
119+
/// <summary>
120+
/// Adds the OAuth authorization token to an outgoing HTTP request, renewing a
121+
/// (nearly) expired access token if necessary.
122+
/// </summary>
123+
/// <param name="requestHeaders">The headers on the request for protected resources from the service provider.</param>
124+
/// <param name="authorization">The authorization for this request previously obtained via OAuth.</param>
125+
public void AuthorizeRequest(WebHeaderCollection requestHeaders, IAuthorizationState authorization) {
126+
Requires.NotNull(requestHeaders, "requestHeaders");
127+
Requires.NotNull(authorization, "authorization");
102128
Requires.True(!string.IsNullOrEmpty(authorization.AccessToken), "authorization");
103129
ErrorUtilities.VerifyProtocol(!authorization.AccessTokenExpirationUtc.HasValue || authorization.AccessTokenExpirationUtc < DateTime.UtcNow || authorization.RefreshToken != null, ClientStrings.AuthorizationExpired);
104130

@@ -107,7 +133,7 @@ public void AuthorizeRequest(HttpWebRequest request, IAuthorizationState authori
107133
this.RefreshAuthorization(authorization);
108134
}
109135

110-
AuthorizeRequest(request, authorization.AccessToken);
136+
AuthorizeRequest(requestHeaders, authorization.AccessToken);
111137
}
112138

113139
#if CLR4

src/DotNetOpenAuth.OAuth2/OAuth2/OAuthUtilities.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,20 @@ internal static void AuthorizeWithBearerToken(this HttpWebRequest request, strin
136136
Requires.NotNullOrEmpty(accessToken, "accessToken");
137137
ErrorUtilities.VerifyProtocol(accessToken.All(ch => accessTokenAuthorizationHeaderAllowedCharacters.IndexOf(ch) >= 0), OAuthStrings.AccessTokenInvalidForHttpAuthorizationHeader);
138138

139-
request.Headers[HttpRequestHeader.Authorization] = string.Format(
139+
AuthorizeWithBearerToken(request.Headers, accessToken);
140+
}
141+
142+
/// <summary>
143+
/// Authorizes an HTTP request using an OAuth 2.0 access token in an HTTP Authorization header.
144+
/// </summary>
145+
/// <param name="requestHeaders">The headers on the request for protected resources from the service provider.</param>
146+
/// <param name="accessToken">The access token previously obtained from the Authorization Server.</param>
147+
internal static void AuthorizeWithBearerToken(WebHeaderCollection requestHeaders, string accessToken) {
148+
Requires.NotNull(requestHeaders, "requestHeaders");
149+
Requires.NotNullOrEmpty(accessToken, "accessToken");
150+
ErrorUtilities.VerifyProtocol(accessToken.All(ch => accessTokenAuthorizationHeaderAllowedCharacters.IndexOf(ch) >= 0), OAuthStrings.AccessTokenInvalidForHttpAuthorizationHeader);
151+
152+
requestHeaders[HttpRequestHeader.Authorization] = string.Format(
140153
CultureInfo.InvariantCulture,
141154
Protocol.BearerHttpAuthorizationHeaderFormat,
142155
accessToken);

0 commit comments

Comments
 (0)