summaryrefslogtreecommitdiffstats
path: root/samples/OAuth2ProtectedWebApi/Code/BearerTokenHandler.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-03-26 11:19:06 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2013-03-26 11:19:06 -0700
commit3d37ff45cab6838d80b22e6b782a0b9b4c2f4aeb (patch)
treec15816c3d7f6e74334553f2ff98605ce1c22c538 /samples/OAuth2ProtectedWebApi/Code/BearerTokenHandler.cs
parent5e9014f36b2d53b8e419918675df636540ea24e2 (diff)
parente6f7409f4caceb7bc2a5b4ddbcb1a4097af340f2 (diff)
downloadDotNetOpenAuth-3d37ff45cab6838d80b22e6b782a0b9b4c2f4aeb.zip
DotNetOpenAuth-3d37ff45cab6838d80b22e6b782a0b9b4c2f4aeb.tar.gz
DotNetOpenAuth-3d37ff45cab6838d80b22e6b782a0b9b4c2f4aeb.tar.bz2
Move to HttpClient throughout library.
Diffstat (limited to 'samples/OAuth2ProtectedWebApi/Code/BearerTokenHandler.cs')
-rw-r--r--samples/OAuth2ProtectedWebApi/Code/BearerTokenHandler.cs30
1 files changed, 30 insertions, 0 deletions
diff --git a/samples/OAuth2ProtectedWebApi/Code/BearerTokenHandler.cs b/samples/OAuth2ProtectedWebApi/Code/BearerTokenHandler.cs
new file mode 100644
index 0000000..23ec087
--- /dev/null
+++ b/samples/OAuth2ProtectedWebApi/Code/BearerTokenHandler.cs
@@ -0,0 +1,30 @@
+namespace OAuth2ProtectedWebApi.Code {
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Net.Http;
+ using System.Threading;
+ using System.Threading.Tasks;
+ using System.Web;
+
+ using DotNetOpenAuth.OAuth2;
+
+ /// <summary>
+ /// An HTTP server message handler that detects OAuth 2 bearer tokens in the authorization header
+ /// and applies the appropriate principal to the request when found.
+ /// </summary>
+ public class BearerTokenHandler : DelegatingHandler {
+ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
+ if (request.Headers.Authorization != null) {
+ if (request.Headers.Authorization.Scheme == "Bearer") {
+ var resourceServer = new ResourceServer(new StandardAccessTokenAnalyzer(AuthorizationServerHost.HardCodedCryptoKeyStore));
+ var principal = await resourceServer.GetPrincipalAsync(request, cancellationToken);
+ HttpContext.Current.User = principal;
+ Thread.CurrentPrincipal = principal;
+ }
+ }
+
+ return await base.SendAsync(request, cancellationToken);
+ }
+ }
+} \ No newline at end of file