-
Notifications
You must be signed in to change notification settings - Fork 403
Expand file tree
/
Copy pathiOSPlatformProxy.cs
More file actions
132 lines (111 loc) · 4.18 KB
/
iOSPlatformProxy.cs
File metadata and controls
132 lines (111 loc) · 4.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Globalization;
using System.Threading.Tasks;
using Foundation;
using Microsoft.Identity.Client.Cache;
using Microsoft.Identity.Client.Core;
using Microsoft.Identity.Client.PlatformsCommon.Interfaces;
using Microsoft.Identity.Client.PlatformsCommon.Shared;
using Microsoft.Identity.Client.UI;
using UIKit;
using Microsoft.Identity.Client.Internal.Broker;
namespace Microsoft.Identity.Client.Platforms.iOS
{
/// <summary>
/// Platform / OS specific logic. No library (ADAL / MSAL) specific code should go in here.
/// </summary>
internal class iOSPlatformProxy : AbstractPlatformProxy
{
internal const string IosDefaultRedirectUriTemplate = "msal{0}://auth";
public iOSPlatformProxy(ILoggerAdapter logger)
: base(logger)
{
}
public override Task<string> GetUserPrincipalNameAsync()
{
return Task.FromResult(string.Empty);
}
protected override string InternalGetProcessorArchitecture()
{
return null;
}
protected override string InternalGetOperatingSystem()
{
return UIDevice.CurrentDevice.SystemVersion;
}
protected override string InternalGetDeviceModel()
{
return UIDevice.CurrentDevice.Model;
}
/// <inheritdoc/>
public override string GetDefaultRedirectUri(string clientId, bool useRecommendedRedirectUri = false)
{
return string.Format(CultureInfo.InvariantCulture, IosDefaultRedirectUriTemplate, clientId);
}
protected override string InternalGetProductName()
{
#if MACCATALYST
return "MSAL.MacCatalyst";
#else
return "MSAL.Xamarin.iOS";
#endif
}
/// <summary>
/// Considered PII, ensure that it is hashed.
/// </summary>
/// <returns>Name of the calling application</returns>
protected override string InternalGetCallingApplicationName()
{
return (NSString)NSBundle.MainBundle?.InfoDictionary?["CFBundleName"];
}
/// <summary>
/// Considered PII, ensure that it is hashed.
/// </summary>
/// <returns>Version of the calling application</returns>
protected override string InternalGetCallingApplicationVersion()
{
return (NSString)NSBundle.MainBundle?.InfoDictionary?["CFBundleVersion"];
}
/// <summary>
/// Considered PII. Please ensure that it is hashed.
/// </summary>
/// <returns>Device identifier</returns>
protected override string InternalGetDeviceId()
{
return UIDevice.CurrentDevice?.IdentifierForVendor?.AsString();
}
public override ILegacyCachePersistence CreateLegacyCachePersistence()
{
return new iOSLegacyCachePersistence(Logger);
}
public override ITokenCacheAccessor CreateTokenCacheAccessor(
CacheOptions tokenCacheAccessorOptions,
bool isApplicationTokenCache = false)
{
return new iOSTokenCacheAccessor();
}
/// <inheritdoc/>
protected override IWebUIFactory CreateWebUiFactory()
{
return new IosWebUIFactory();
}
protected override ICryptographyManager InternalGetCryptographyManager() => new CommonCryptographyManager();
protected override IPlatformLogger InternalGetPlatformLogger() => new ConsolePlatformLogger();
protected override IFeatureFlags CreateFeatureFlags() => new iOSFeatureFlags();
public override IBroker CreateBroker(ApplicationConfiguration appConfig, CoreUIParent uiParent)
{
return new iOSBroker(Logger, CryptographyManager, uiParent);
}
public override bool CanBrokerSupportSilentAuth()
{
return false;
}
public override IMsalHttpClientFactory CreateDefaultHttpClientFactory()
{
return new IosHttpClientFactory();
}
public override bool LegacyCacheRequiresSerialization => false;
}
}