Skip to content
This repository has been archived by the owner on Apr 19, 2021. It is now read-only.

Commit

Permalink
更改OSharpClientPublicKey,OSharpAuthenticationToken两个自定义header命名
Browse files Browse the repository at this point in the history
  • Loading branch information
gmf520 committed Feb 18, 2020
1 parent 978d72b commit b129476
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 14 deletions.
10 changes: 7 additions & 3 deletions src/OSharp.Web/Http/Handlers/TokenAuthenticationHandlerBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,15 @@ public abstract class TokenAuthenticationHandlerBase : DelegatingHandler

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (!request.Headers.Contains(HttpHeaderNames.OSharpAuthenticationToken))
if (!request.Headers.TryGetValues(HttpHeaderNames.OSharpAuthenticationToken2, out IEnumerable<string> values))
{
return base.SendAsync(request, cancellationToken);
if (!request.Headers.TryGetValues(HttpHeaderNames.OSharpAuthenticationToken, out values))
{
return base.SendAsync(request, cancellationToken);
}
}
string authenticationToken = request.Headers.GetValues(HttpHeaderNames.OSharpAuthenticationToken).First();

string authenticationToken = values.FirstOrDefault();
if (!Authorize(authenticationToken))
{
return CreateForbiddenResponseMessage(request);
Expand Down
2 changes: 2 additions & 0 deletions src/OSharp.Web/Http/Internal/HttpHeaderNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ public class HttpHeaderNames
public const string IfUnmodifiedSince = "If-Unmodified-Since";
public const string Vary = "Vary";
public const string OSharpClientPublicKey = "OSharp_ClientPublicKey";
public const string OSharpClientPublicKey2 = "X-ClientPublicKey";
public const string OSharpAuthenticationToken = "OSharp_AuthenticationToken";
public const string OSharpAuthenticationToken2 = "X-AuthenticationToken";
}
}
10 changes: 5 additions & 5 deletions src/OSharp.Web/Http/Security/ClientCryptoDelegatingHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public ClientCryptoDelegatingHandler(string publicKey, string hashType = "MD5")
/// <exception cref="T:System.ArgumentNullException"> <paramref name="request"/> 为 null。</exception>
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var result = EncryptRequest(request);
Task<HttpResponseMessage> result = EncryptRequest(request);
if (result != null)
{
return result;
Expand All @@ -62,10 +62,10 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage reques
{
if (task.IsFaulted)
{
var aggregateException = task.Exception;
AggregateException aggregateException = task.Exception;
if (aggregateException != null)
{
var requestException = aggregateException.InnerExceptions.FirstOrDefault(m => m is HttpRequestException);
Exception requestException = aggregateException.InnerExceptions.FirstOrDefault(m => m is HttpRequestException);
if (requestException != null && requestException.InnerException is WebException)
{
return request.CreateErrorResponse(HttpStatusCode.ServiceUnavailable, requestException.InnerException);
Expand All @@ -80,7 +80,7 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage reques

private Task<HttpResponseMessage> EncryptRequest(HttpRequestMessage request)
{
request.Headers.Add(HttpHeaderNames.OSharpClientPublicKey, _clientPublicKey);
request.Headers.Add(HttpHeaderNames.OSharpClientPublicKey2, _clientPublicKey);

if (request.Method == HttpMethod.Get || request.Content == null)
{
Expand Down Expand Up @@ -142,7 +142,7 @@ private Task<HttpResponseMessage> CreateResponseTask(HttpRequestMessage request,
return request.CreateResponse(statusCode, message, MediaTypeConstants.ApplicationJson);
}
Exception exception = new Exception(message, ex);
var response = request.CreateErrorResponse(statusCode, new HttpError(exception, true));
HttpResponseMessage response = request.CreateErrorResponse(statusCode, new HttpError(exception, true));
return response;
});
}
Expand Down
13 changes: 9 additions & 4 deletions src/OSharp.Web/Http/Security/HostCryptoDelegatingHandler.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
Expand Down Expand Up @@ -68,7 +69,7 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage reques
return base.SendAsync(request, cancellationToken);
}

var result = DecryptRequest(request);
Task<HttpResponseMessage> result = DecryptRequest(request);
if (result != null)
{
return result;
Expand All @@ -79,11 +80,15 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage reques

private Task<HttpResponseMessage> DecryptRequest(HttpRequestMessage request)
{
if (!request.Headers.Contains(HttpHeaderNames.OSharpClientPublicKey))
if (!request.Headers.TryGetValues(HttpHeaderNames.OSharpClientPublicKey2, out IEnumerable<string> values))
{
return CreateResponseTask(request, HttpStatusCode.BadRequest, "在请求头中客户端公钥信息无法找到。");
if (!request.Headers.TryGetValues(HttpHeaderNames.OSharpClientPublicKey, out values))
{
return CreateResponseTask(request, HttpStatusCode.BadRequest, "在请求头中客户端公钥信息无法找到。");
}
}
string publicKey = request.Headers.GetValues(HttpHeaderNames.OSharpClientPublicKey).First();

string publicKey = values.First();
_cryptor = new CommunicationCryptor(_privateKey, publicKey, _hashType);

if (request.Content == null)
Expand Down
2 changes: 1 addition & 1 deletion src/OSharp.Web/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.3.0")]
[assembly: AssemblyFileVersion("2.1.5.0")]
2 changes: 1 addition & 1 deletion src/OSharp.Web/SignalR/ClientCryptoHubConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public void CryptoInitialize(string facePublicKey, string hashType)
if (_cryptor == null)
{
RsaHelper ownRsa = new RsaHelper();
Headers.Add(HttpHeaderNames.OSharpClientPublicKey, ownRsa.PublicKey);
Headers.Add(HttpHeaderNames.OSharpClientPublicKey2, ownRsa.PublicKey);
_cryptor = new CommunicationCryptor(ownRsa.PrivateKey, facePublicKey, hashType);
}
}
Expand Down

0 comments on commit b129476

Please sign in to comment.