Client & Version headers (#1757)

This commit is contained in:
Oscar Hinton 2022-02-08 17:43:40 +01:00 committed by GitHub
parent 10fafaf8c8
commit 427ff09af0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 48 additions and 6 deletions

View file

@ -116,7 +116,7 @@ namespace Bit.App.Pages
var redirectUri = "bitwarden://sso-callback";
var url = _apiService.IdentityBaseUrl + "/connect/authorize?" +
"client_id=" + _platformUtilsService.IdentityClientId + "&" +
"client_id=" + _platformUtilsService.GetClientType().GetString() + "&" +
"redirect_uri=" + Uri.EscapeDataString(redirectUri) + "&" +
"response_type=code&scope=api%20offline_access&" +
"state=" + state + "&code_challenge=" + codeChallenge + "&" +

View file

@ -5,6 +5,7 @@ using Bit.App.Abstractions;
using Bit.App.Models;
using Bit.App.Resources;
using Bit.Core.Abstractions;
using Bit.Core.Enums;
using Plugin.Fingerprint;
using Plugin.Fingerprint.Abstractions;
using Xamarin.Essentials;
@ -35,8 +36,6 @@ namespace Bit.App.Services
_broadcasterService = broadcasterService;
}
public string IdentityClientId => "mobile";
public void Init()
{
_broadcasterService.Subscribe(nameof(MobilePlatformUtilsService), (message) =>
@ -80,6 +79,11 @@ namespace Bit.App.Services
return DeviceInfo.Model;
}
public ClientType GetClientType()
{
return ClientType.Mobile;
}
public bool IsViewOpen()
{
return false;

View file

@ -7,11 +7,10 @@ namespace Bit.Core.Abstractions
{
public interface IPlatformUtilsService
{
string IdentityClientId { get; }
string GetApplicationVersion();
DeviceType GetDevice();
string GetDeviceString();
ClientType GetClientType();
bool IsDev();
bool IsSelfHost();
bool IsViewOpen();

View file

@ -0,0 +1,36 @@
namespace Bit.Core.Enums
{
public enum ClientType: byte
{
Web = 1,
Browser = 2,
Desktop = 3,
Mobile = 4,
Cli = 5,
DirectoryConnector = 6,
}
public static class ClientTypeExtensions
{
public static string GetString(this ClientType me)
{
switch (me)
{
case ClientType.Web:
return "web";
case ClientType.Browser:
return "browser";
case ClientType.Desktop:
return "desktop";
case ClientType.Mobile:
return "mobile";
case ClientType.Cli:
return "cli";
case ClientType.DirectoryConnector:
return "connector";
default:
return "";
}
}
}
}

View file

@ -1,4 +1,5 @@
using Bit.Core.Abstractions;
using Bit.Core.Enums;
using Bit.Core.Exceptions;
using Bit.Core.Models.Domain;
using Bit.Core.Models.Request;
@ -37,6 +38,8 @@ namespace Bit.Core.Services
_logoutCallbackAsync = logoutCallbackAsync;
var device = (int)_platformUtilsService.GetDevice();
_httpClient.DefaultRequestHeaders.Add("Device-Type", device.ToString());
_httpClient.DefaultRequestHeaders.Add("Bitwarden-Client-Name", _platformUtilsService.GetClientType().GetString());
_httpClient.DefaultRequestHeaders.Add("Bitwarden-Client-Version", _platformUtilsService.GetApplicationVersion());
if (!string.IsNullOrWhiteSpace(customUserAgent))
{
_httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(customUserAgent);
@ -87,7 +90,7 @@ namespace Bit.Core.Services
Version = new Version(1, 0),
RequestUri = new Uri(string.Concat(IdentityBaseUrl, "/connect/token")),
Method = HttpMethod.Post,
Content = new FormUrlEncodedContent(request.ToIdentityToken(_platformUtilsService.IdentityClientId))
Content = new FormUrlEncodedContent(request.ToIdentityToken(_platformUtilsService.GetClientType().GetString()))
};
requestMessage.Headers.Add("Accept", "application/json");
request.AlterIdentityTokenHeaders(requestMessage.Headers);