Skip to content

Commit

Permalink
PR
Browse files Browse the repository at this point in the history
  • Loading branch information
Oleksandr Poliakov committed May 1, 2024
1 parent 148908c commit 58b44e7
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
*/

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using MongoDB.Bson.IO;
Expand All @@ -32,15 +31,19 @@ public AzureOidcCallback(string tokenResource)
_tokenResource = tokenResource;
}

protected override (Uri Uri, IReadOnlyDictionary<string, string> Headers) GetMetadataRequestInfo(OidcCallbackParameters parameters)
protected override HttpWebRequest CreateMetadataRequest(OidcCallbackParameters parameters)
{
var metadataUrl = $"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={WebUtility.UrlEncode(_tokenResource)}";
var metadataUrl = $"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Uri.EscapeDataString(_tokenResource)}";
if (!string.IsNullOrEmpty(parameters.UserName))
{
metadataUrl += $"&client_id={Uri.EscapeDataString(parameters.UserName)}";
}

return (new Uri(metadataUrl), new Dictionary<string, string> { ["Metadata"] = "true" });
var request = WebRequest.CreateHttp(new Uri(metadataUrl));
request.Accept = "application/json";
request.Method = "GET";
request.Headers.Add("Metadata", "true");
return request;
}

protected override OidcAccessToken ParseMetadataResponseContent(Stream responseStream)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
*/

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;

namespace MongoDB.Driver.Core.Authentication.Oidc
{
Expand All @@ -28,10 +28,13 @@ public GcpOidcCallback(string tokenResource)
_tokenResource = tokenResource;
}

protected override (Uri Uri, IReadOnlyDictionary<string, string> Headers) GetMetadataRequestInfo(OidcCallbackParameters parameters)
protected override HttpWebRequest CreateMetadataRequest(OidcCallbackParameters parameters)
{
var metadataUrl = $"http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience={Uri.EscapeDataString(_tokenResource)}";
return (new Uri(metadataUrl), new Dictionary<string, string> { ["Metadata-Flavor"] = "Google" });
var request = WebRequest.CreateHttp(new Uri(metadataUrl));
request.Method = "GET";
request.Headers.Add("Metadata-Flavor", "Google");
return request;
}

protected override OidcAccessToken ParseMetadataResponseContent(Stream responseStream)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
*/

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading;
Expand Down Expand Up @@ -44,27 +43,9 @@ public async Task<OidcAccessToken> GetOidcAccessTokenAsync(OidcCallbackParameter
}
}

protected abstract (Uri Uri, IReadOnlyDictionary<string, string> Headers) GetMetadataRequestInfo(OidcCallbackParameters parameters);

protected abstract HttpWebRequest CreateMetadataRequest(OidcCallbackParameters parameters);
protected abstract OidcAccessToken ParseMetadataResponseContent(Stream responseStream);

private HttpWebRequest CreateMetadataRequest(OidcCallbackParameters parameters)
{
var metadataRequestInfo = GetMetadataRequestInfo(parameters);
var request = WebRequest.CreateHttp(metadataRequestInfo.Uri);
request.Accept = "application/json";
request.Method = "GET";
if (metadataRequestInfo.Headers != null)
{
foreach (var header in metadataRequestInfo.Headers)
{
request.Headers.Add(header.Key, header.Value);
}
}

return request;
}

private OidcAccessToken ParseMetadataResponse(HttpWebResponse response)
{
if (response.StatusCode != HttpStatusCode.OK)
Expand Down

0 comments on commit 58b44e7

Please sign in to comment.