summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.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 /src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.cs
parent5e9014f36b2d53b8e419918675df636540ea24e2 (diff)
parente6f7409f4caceb7bc2a5b4ddbcb1a4097af340f2 (diff)
downloadDotNetOpenAuth-3d37ff45cab6838d80b22e6b782a0b9b4c2f4aeb.zip
DotNetOpenAuth-3d37ff45cab6838d80b22e6b782a0b9b4c2f4aeb.tar.gz
DotNetOpenAuth-3d37ff45cab6838d80b22e6b782a0b9b4c2f4aeb.tar.bz2
Move to HttpClient throughout library.
Diffstat (limited to 'src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.cs')
-rw-r--r--src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.cs94
1 files changed, 52 insertions, 42 deletions
diff --git a/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.cs b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.cs
index a5f7d9b..e7edb66 100644
--- a/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.cs
+++ b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/AuthorizationServer.cs
@@ -12,6 +12,8 @@ namespace DotNetOpenAuth.OAuth2 {
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
+ using System.Threading;
+ using System.Threading.Tasks;
using System.Web;
using DotNetOpenAuth.Configuration;
using DotNetOpenAuth.Messaging;
@@ -46,7 +48,7 @@ namespace DotNetOpenAuth.OAuth2 {
Requires.NotNull(authorizationServer, "authorizationServer");
this.aggregatingClientAuthenticationModule = new AggregatingClientCredentialReader(this.clientAuthenticationModules);
this.Channel = new OAuth2AuthorizationServerChannel(authorizationServer, this.aggregatingClientAuthenticationModule);
- this.clientAuthenticationModules.AddRange(OAuth2AuthorizationServerSection.Configuration.ClientAuthenticationModules.CreateInstances(true));
+ this.clientAuthenticationModules.AddRange(OAuth2AuthorizationServerSection.Configuration.ClientAuthenticationModules.CreateInstances(true, null));
this.ScopeSatisfiedCheck = DefaultScopeSatisfiedCheck;
}
@@ -84,16 +86,17 @@ namespace DotNetOpenAuth.OAuth2 {
/// the user to authorize the Client's access of some protected resource(s).
/// </summary>
/// <param name="request">The HTTP request to read from.</param>
- /// <returns>The incoming request, or null if no OAuth message was attached.</returns>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>
+ /// The incoming request, or null if no OAuth message was attached.
+ /// </returns>
/// <exception cref="ProtocolException">Thrown if an unexpected OAuth message is attached to the incoming request.</exception>
[SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "unauthorizedclient", Justification = "Protocol required.")]
- public EndUserAuthorizationRequest ReadAuthorizationRequest(HttpRequestBase request = null) {
- if (request == null) {
- request = this.Channel.GetRequestFromContext();
- }
+ public async Task<EndUserAuthorizationRequest> ReadAuthorizationRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken = default(CancellationToken)) {
+ Requires.NotNull(request, "request");
- EndUserAuthorizationRequest message;
- if (this.Channel.TryReadFromRequest(request, out message)) {
+ var message = await this.Channel.TryReadFromRequestAsync<EndUserAuthorizationRequest>(request, cancellationToken);
+ if (message != null) {
if (message.ResponseType == EndUserAuthorizationResponseType.AuthorizationCode) {
// Clients with no secrets can only request implicit grant types.
var client = this.AuthorizationServerServices.GetClientOrThrow(message.ClientIdentifier);
@@ -105,38 +108,34 @@ namespace DotNetOpenAuth.OAuth2 {
}
/// <summary>
- /// Approves an authorization request and sends an HTTP response to the user agent to redirect the user back to the Client.
- /// </summary>
- /// <param name="authorizationRequest">The authorization request to approve.</param>
- /// <param name="userName">The username of the account that approved the request (or whose data will be accessed by the client).</param>
- /// <param name="scopes">The scope of access the client should be granted. If <c>null</c>, all scopes in the original request will be granted.</param>
- /// <param name="callback">The Client callback URL to use when formulating the redirect to send the user agent back to the Client.</param>
- public void ApproveAuthorizationRequest(EndUserAuthorizationRequest authorizationRequest, string userName, IEnumerable<string> scopes = null, Uri callback = null) {
- Requires.NotNull(authorizationRequest, "authorizationRequest");
-
- var response = this.PrepareApproveAuthorizationRequest(authorizationRequest, userName, scopes, callback);
- this.Channel.Respond(response);
- }
-
- /// <summary>
- /// Rejects an authorization request and sends an HTTP response to the user agent to redirect the user back to the Client.
+ /// Reads in a client's request for the Authorization Server to obtain permission from
+ /// the user to authorize the Client's access of some protected resource(s).
/// </summary>
- /// <param name="authorizationRequest">The authorization request to disapprove.</param>
- /// <param name="callback">The Client callback URL to use when formulating the redirect to send the user agent back to the Client.</param>
- public void RejectAuthorizationRequest(EndUserAuthorizationRequest authorizationRequest, Uri callback = null) {
- Requires.NotNull(authorizationRequest, "authorizationRequest");
-
- var response = this.PrepareRejectAuthorizationRequest(authorizationRequest, callback);
- this.Channel.Respond(response);
+ /// <param name="request">The HTTP request to read from.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>
+ /// The incoming request, or null if no OAuth message was attached.
+ /// </returns>
+ /// <exception cref="ProtocolException">Thrown if an unexpected OAuth message is attached to the incoming request.</exception>
+ public Task<EndUserAuthorizationRequest> ReadAuthorizationRequestAsync(
+ HttpRequestBase request = null, CancellationToken cancellationToken = default(CancellationToken)) {
+ request = request ?? this.Channel.GetRequestFromContext();
+ return this.ReadAuthorizationRequestAsync(request.AsHttpRequestMessage(), cancellationToken);
}
/// <summary>
- /// Handles an incoming request to the authorization server's token endpoint.
+ /// Reads in a client's request for the Authorization Server to obtain permission from
+ /// the user to authorize the Client's access of some protected resource(s).
/// </summary>
- /// <param name="request">The HTTP request.</param>
- /// <returns>The HTTP response to send to the client.</returns>
- public OutgoingWebResponse HandleTokenRequest(HttpRequestMessage request) {
- return this.HandleTokenRequest(new HttpRequestInfo(request));
+ /// <param name="requestUri">The URL that carries the authorization request.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>
+ /// The incoming request, or null if no OAuth message was attached.
+ /// </returns>
+ /// <exception cref="ProtocolException">Thrown if an unexpected OAuth message is attached to the incoming request.</exception>
+ public Task<EndUserAuthorizationRequest> ReadAuthorizationRequestAsync(Uri requestUri, CancellationToken cancellationToken = default(CancellationToken)) {
+ var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
+ return this.ReadAuthorizationRequestAsync(request, cancellationToken);
}
/// <summary>
@@ -144,15 +143,13 @@ namespace DotNetOpenAuth.OAuth2 {
/// </summary>
/// <param name="request">The HTTP request.</param>
/// <returns>The HTTP response to send to the client.</returns>
- public OutgoingWebResponse HandleTokenRequest(HttpRequestBase request = null) {
- if (request == null) {
- request = this.Channel.GetRequestFromContext();
- }
+ public async Task<HttpResponseMessage> HandleTokenRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken = default(CancellationToken)) {
+ Requires.NotNull(request, "request");
- AccessTokenRequestBase requestMessage;
IProtocolMessage responseMessage;
try {
- if (this.Channel.TryReadFromRequest(request, out requestMessage)) {
+ AccessTokenRequestBase requestMessage = await this.Channel.TryReadFromRequestAsync<AccessTokenRequestBase>(request, cancellationToken);
+ if (requestMessage != null) {
var accessTokenResult = this.AuthorizationServerServices.CreateAccessToken(requestMessage);
ErrorUtilities.VerifyHost(accessTokenResult != null, "IAuthorizationServerHost.CreateAccessToken must not return null.");
@@ -179,7 +176,20 @@ namespace DotNetOpenAuth.OAuth2 {
responseMessage = new AccessTokenFailedResponse() { Error = Protocol.AccessTokenRequestErrorCodes.InvalidRequest };
}
- return this.Channel.PrepareResponse(responseMessage);
+ return await this.Channel.PrepareResponseAsync(responseMessage, cancellationToken);
+ }
+
+ /// <summary>
+ /// Handles an incoming request to the authorization server's token endpoint.
+ /// </summary>
+ /// <param name="request">The HTTP request.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>
+ /// The HTTP response to send to the client.
+ /// </returns>
+ public Task<HttpResponseMessage> HandleTokenRequestAsync(HttpRequestBase request = null, CancellationToken cancellationToken = default(CancellationToken)) {
+ request = request ?? this.Channel.GetRequestFromContext();
+ return this.HandleTokenRequestAsync(request.AsHttpRequestMessage(), cancellationToken);
}
/// <summary>