Use standard auth headers for Jellyfin 12
This commit is contained in:
@@ -309,6 +309,7 @@ public sealed class MultilangController : ControllerBase
|
||||
var upstreamSw = Stopwatch.StartNew();
|
||||
var http = _httpClientFactory.CreateClient();
|
||||
using var request = new HttpRequestMessage(HttpMethod.Get, proxyRequest.Upstream);
|
||||
request.Headers.TryAddWithoutValidation("Authorization", $"MediaBrowser Token=\"{token}\"");
|
||||
request.Headers.TryAddWithoutValidation("X-Emby-Token", token);
|
||||
request.Headers.TryAddWithoutValidation("X-MediaBrowser-Token", token);
|
||||
using var response = await http.SendAsync(request, cancellationToken).ConfigureAwait(false);
|
||||
@@ -1250,10 +1251,6 @@ public sealed class MultilangController : ControllerBase
|
||||
if (string.IsNullOrWhiteSpace(token))
|
||||
return null;
|
||||
|
||||
var tokenUserId = await GetUserIdFromJellyfinApiAsync(token).ConfigureAwait(false);
|
||||
if (!string.IsNullOrWhiteSpace(tokenUserId))
|
||||
return tokenUserId;
|
||||
|
||||
var remoteEndpoint = HttpContext.Connection.RemoteIpAddress?.ToString() ?? string.Empty;
|
||||
var deviceId = info?.DeviceId ?? string.Empty;
|
||||
var session = await _sessionManager.GetSessionByAuthenticationToken(token, deviceId, remoteEndpoint).ConfigureAwait(false);
|
||||
@@ -1274,34 +1271,6 @@ public sealed class MultilangController : ControllerBase
|
||||
: null;
|
||||
}
|
||||
|
||||
private async Task<string?> GetUserIdFromJellyfinApiAsync(string token)
|
||||
{
|
||||
var baseUri = $"{Request.Scheme}://{Request.Host}{Request.PathBase}";
|
||||
var usersMe = new UriBuilder(new Uri(new Uri(baseUri), "/Users/Me"));
|
||||
usersMe.Query = Microsoft.AspNetCore.WebUtilities.QueryHelpers.AddQueryString(
|
||||
string.Empty,
|
||||
"api_key",
|
||||
token).TrimStart('?');
|
||||
|
||||
var http = _httpClientFactory.CreateClient();
|
||||
using var request = new HttpRequestMessage(HttpMethod.Get, usersMe.Uri);
|
||||
request.Headers.TryAddWithoutValidation("X-Emby-Token", token);
|
||||
request.Headers.TryAddWithoutValidation("X-MediaBrowser-Token", token);
|
||||
using var response = await http.SendAsync(request, HttpContext.RequestAborted).ConfigureAwait(false);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
return null;
|
||||
|
||||
await using var stream = await response.Content.ReadAsStreamAsync(HttpContext.RequestAborted).ConfigureAwait(false);
|
||||
using var doc = await JsonDocument.ParseAsync(stream, cancellationToken: HttpContext.RequestAborted).ConfigureAwait(false);
|
||||
if (!doc.RootElement.TryGetProperty("Id", out var idProperty))
|
||||
return null;
|
||||
|
||||
var raw = idProperty.GetString();
|
||||
return Guid.TryParse(raw, out var guid)
|
||||
? guid.ToString("N")
|
||||
: raw?.Length == 32 && raw.All(Uri.IsHexDigit) ? raw.ToLowerInvariant() : null;
|
||||
}
|
||||
|
||||
private async Task<bool> IsRequesterAdminAsync()
|
||||
{
|
||||
var info = await _authorizationContext.GetAuthorizationInfo(HttpContext).ConfigureAwait(false);
|
||||
|
||||
Reference in New Issue
Block a user