Skip to content
This repository was archived by the owner on Dec 24, 2020. It is now read-only.

Commit 17bce14

Browse files
committed
Fix basic authentication to use the formurl encoding
1 parent 8431a13 commit 17bce14

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/AspNet.Security.OAuth.Introspection/OAuthIntrospectionHandler.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,20 @@ private async Task<JObject> GetIntrospectionPayloadAsync(string token)
411411
// See https://tools.ietf.org/html/rfc6749#section-2.3.1 for more information.
412412
else
413413
{
414-
var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{Options.ClientId}:{Options.ClientSecret}"));
414+
string EscapeDataString(string value)
415+
{
416+
if (string.IsNullOrEmpty(value))
417+
{
418+
return null;
419+
}
420+
421+
return Uri.EscapeDataString(value).Replace("%20", "+");
422+
}
423+
424+
var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(
425+
string.Concat(
426+
EscapeDataString(Options.ClientId), ":",
427+
EscapeDataString(Options.ClientSecret))));
415428

416429
request.Headers.Authorization = new AuthenticationHeaderValue(OAuthIntrospectionConstants.Schemes.Basic, credentials);
417430
}

src/Owin.Security.OAuth.Introspection/OAuthIntrospectionHandler.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,20 @@ private async Task<JObject> GetIntrospectionPayloadAsync(string token)
373373
// See https://tools.ietf.org/html/rfc6749#section-2.3.1 for more information.
374374
else
375375
{
376-
var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{Options.ClientId}:{Options.ClientSecret}"));
376+
string EscapeDataString(string value)
377+
{
378+
if (string.IsNullOrEmpty(value))
379+
{
380+
return null;
381+
}
382+
383+
return Uri.EscapeDataString(value).Replace("%20", "+");
384+
}
385+
386+
var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(
387+
string.Concat(
388+
EscapeDataString(Options.ClientId), ":",
389+
EscapeDataString(Options.ClientSecret))));
377390

378391
request.Headers.Authorization = new AuthenticationHeaderValue(OAuthIntrospectionConstants.Schemes.Basic, credentials);
379392
}

0 commit comments

Comments
 (0)