shjung hai 1 ano
pai
achega
4d3eb85f8e
Modificáronse 40 ficheiros con 3656 adicións e 181 borrados
  1. BIN=BIN
      .vs/AipGateway/v16/.suo
  2. 121 41
      AipGateway.AIP/AipFileInfo.cs
  3. 67 73
      AipGateway.AIP/AipFileManager.cs
  4. 3 0
      AipGateway.AIP/AipGateway.AIP.csproj
  5. 13 0
      AipGateway.AIP/AipLabel.cs
  6. 171 30
      AipGateway.AIP/AuthDelegateImplementation.cs
  7. 60 2
      AipGateway.AIP/LabelManager.cs
  8. 31 1
      AipGateway.AIP/Utilities.cs
  9. BIN=BIN
      AipGateway.AIP/bin/Debug/AipGateway.AIP.pdb
  10. 4 0
      AipGateway.AIP/obj/AipGateway.AIP.csproj.nuget.dgspec.json
  11. 1 1
      AipGateway.AIP/obj/Debug/AipGateway.AIP.csproj.CoreCompileInputs.cache
  12. 10 5
      AipGateway.AIP/obj/Debug/AipGateway.AIP.csproj.FileListAbsolute.txt
  13. BIN=BIN
      AipGateway.AIP/obj/Debug/AipGateway.AIP.pdb
  14. BIN=BIN
      AipGateway.AIP/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  15. 515 0
      AipGateway.AIP/obj/project.assets.json
  16. 7 2
      AipGateway.AIP/obj/project.nuget.cache
  17. 4 0
      AipGateway.Test/obj/AipGateway.Test.csproj.nuget.dgspec.json
  18. BIN=BIN
      AipGateway.Test/obj/Debug/AipGateway.Test.csproj.AssemblyReference.cache
  19. 514 0
      AipGateway.Test/obj/project.assets.json
  20. 7 2
      AipGateway.Test/obj/project.nuget.cache
  21. 2 1
      AipGateway.Viewer/App.config
  22. 66 0
      AipGateway.Viewer/FrmMain.Designer.cs
  23. 112 18
      AipGateway.Viewer/FrmMain.cs
  24. BIN=BIN
      AipGateway.Viewer/bin/Debug/AipGateway.AIP.pdb
  25. 2 1
      AipGateway.Viewer/bin/Debug/AipGateway.Viewer.exe.config
  26. BIN=BIN
      AipGateway.Viewer/bin/Debug/AipGateway.Viewer.pdb
  27. 1413 0
      AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/logs/mip_sdk.miplog
  28. BIN=BIN
      AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/mip.policies.sqlite3
  29. BIN=BIN
      AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/mip.protection.sqlite3
  30. BIN=BIN
      AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/telemetry
  31. 4 0
      AipGateway.Viewer/obj/AipGateway.Viewer.csproj.nuget.dgspec.json
  32. BIN=BIN
      AipGateway.Viewer/obj/Debug/AipGateway.Viewer.FrmMain.resources
  33. BIN=BIN
      AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.AssemblyReference.cache
  34. 1 1
      AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.CoreCompileInputs.cache
  35. 5 0
      AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.FileListAbsolute.txt
  36. BIN=BIN
      AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.GenerateResource.cache
  37. 2 1
      AipGateway.Viewer/obj/Debug/AipGateway.Viewer.exe.config
  38. BIN=BIN
      AipGateway.Viewer/obj/Debug/AipGateway.Viewer.pdb
  39. 514 0
      AipGateway.Viewer/obj/project.assets.json
  40. 7 2
      AipGateway.Viewer/obj/project.nuget.cache

BIN=BIN
.vs/AipGateway/v16/.suo


+ 121 - 41
AipGateway.AIP/AipFileInfo.cs

@@ -1,47 +1,18 @@
 using System;
 using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using Microsoft.InformationProtection;
 
 namespace AipGateway.AIP
 {
     public enum AipAssignmentMethod
     {
+        /// <summary>Label assignment method is standard</summary>
         Standard,
+        /// <summary>Label assignment method is privileged</summary>
         Privileged,
+        /// <summary>Label assignment method is automatic</summary>
         Auto,
     }
-    public class AipContentLabel
-    {
-        public AipContentLabel(
-            AipLabel label,
-            DateTime creationTime,
-            AipAssignmentMethod assignmentMethod,
-            bool isProtectionAppliedFromLabel)
-        {
-            this.Label = label;
-            this.CreationTime = creationTime;
-            this.AssignmentMethod = assignmentMethod;
-            this.IsProtectionAppliedFromLabel = isProtectionAppliedFromLabel;
-        }
-
-        /// <summary>The actual label object applied on the content.</summary>
-        public AipLabel Label { get; private set; }
-
-        /// <summary>The creation time of the label.</summary>
-        public DateTime CreationTime { get; private set; }
-
-        /// <summary>The assignment method of the label.</summary>
-        public AipAssignmentMethod AssignmentMethod { get; private set; }
-
-        /// <summary>
-        /// Returns true if protection was applied by the label or not.
-        /// </summary>
-        public bool IsProtectionAppliedFromLabel { get; private set; }
-    }
     public enum AipProtectionType
     {
         /// <summary>Protection was created from a template</summary>
@@ -50,21 +21,130 @@ namespace AipGateway.AIP
         Custom,
     }
 
-    public class AipProtectionHandler
+    public class AipLabelInfo
+    {
+        /// <summary>The unique GUID for the label within the tenant</summary>
+        public string LabelId { get; set; } = "";
+
+        /// <summary>GUID of the tenant that owns the label</summary>
+        public string TenantId { get; set; } = "";
+
+    }
+
+    public class AipProtectionDescriptor
+    {
+        /// <summary>The protection type</summary>
+        public AipProtectionType ProtectionType { get; set; }
+
+        /// <summary>Collection of users-to-roles mappings</summary>
+        // public List<Microsoft.InformationProtection.UserRoles> UserRoles { get; set; }
+        //
+        // /// <summary>Collection of users-to-rights mappings</summary>
+        // public List<Microsoft.InformationProtection.UserRights> UserRights { get; set; }
+
+        /// <summary>
+        /// The RMS template id for template protection, license id for adhoc protection, if any
+        /// </summary>
+        public string TemplateId { get; set; }
+
+        /// <summary>
+        /// Gets the Label info, if any
+        /// This property will only be populated in ProtectionDescriptors for preexisting protected content. i.e. It is
+        /// a field populated by the server at the moment protected content is consumed.
+        /// </summary>
+        public AipLabelInfo LabelInformation { get; set; }
+
+        /// <summary>
+        /// Gets the Label id, if any
+        /// This property will only be populated in ProtectionDescriptors for preexisting protected content. i.e. It is
+        /// a field populated by the server at the moment protected content is consumed.
+        /// </summary>
+        public string LabelId { get; set; }
+
+        /// <summary>The owner of protection</summary>
+        public string Owner { get; set; }
+
+        /// <summary>
+        /// Gets the content id
+        /// Publishing licenses will have this identifier surrounded by curly braces "{}".
+        /// Those braces are removed from the value returned here
+        /// </summary>
+        public string ContentId { get; set; }
+
+        /// <summary>The protection name</summary>
+        public string Name { get; set; }
+
+        /// <summary>The protection description</summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// Whether or not protection allows offline content access (default = true)
+        /// </summary>
+        public bool AllowOfflineAccess { get; set; }
+
+        /// <summary>Protection referrer address</summary>
+        public string Referrer { get; set; }
+
+        /// <summary>Protection expiration time</summary>
+        public DateTime? ContentValidUntil { get; set; }
+
+        /// <summary>App-specific data that was encrypted</summary>
+        // public Dictionary<string, string> EncryptedAppData { get; set; }
+        //
+        // /// <summary>App-specific data that was signed</summary>
+        // public Dictionary<string, string> SignedAppData { get; set; }
+
+        /// <summary>The double key url</summary>
+        public string DoubleKeyUrl { get; set; }
+    }
+
+    public class AipProtection
     {
-        ProtectionDescriptor ProtectionDescriptor { get; }
-        string Owner { get; }
-        string IssuedTo { get; }
-        bool IsIssuedToOwner { get; }
-        string ContentId { get; }
-        bool UseDeprecatedAlgorithms { get; }
-        bool AuditedExtractAllowed { get; }
+        public AipProtectionDescriptor ProtectionDescriptor { get; set; }
+
+        /// <summary>Email address of content owner</summary>
+        public string Owner { get; set; }
+
+        /// <summary>The user associated with the protection handler</summary>
+        public string IssuedTo { get; set; }
+
+        /// <summary>Whether or not the current user is the content owner</summary>
+        public bool IsIssuedToOwner { get; set; }
+
+        /// <summary>
+        /// The unique identifier for the document/content
+        /// Publishing licenses will have this identifier surrounded by curly braces "{}".
+        /// Those braces are removed from the value returned here
+        /// </summary>
+        public string ContentId { get; set; }
+
+        /// <summary> Whether or not protection handler uses deprecated crypto algorithms (ECB) for backward compatibility </summary>
+        public bool UseDeprecatedAlgorithms { get; set; }
+
+        /// <summary> Whether or not protection handler grants user 'audited extract' right </summary>
+        public bool AuditedExtractAllowed { get; set; }
+
+        /// <summary> The block size (in bytes) for the cipher mode used by this ProtectionHandler </summary>
+        public long BlockSize { get; set; }
     }
 
+    public class AipContentLabel
+    {
+        public AipLabel Label;
+        public DateTime CreationTime { get; set; }
+
+        /// <summary>The assignment method of the label.</summary>
+        public AipAssignmentMethod AssignmentMethod { get; set; }
 
+        /// <summary>Returns true if protection was applied by the label or not.</summary>
+        public bool IsProtectionAppliedFromLabel { get; set; }
+    }
     public class AipFileInfo
     {
-        public AipContentLabel Label;
+        public AipContentLabel ContentLabel { get; set; }
+
+        public AipProtection Protection { get; set; }
+        public string OutputFileName { get; set; }
     }
 
 }

+ 67 - 73
AipGateway.AIP/AipFileManager.cs

@@ -26,19 +26,6 @@ namespace AipGateway.AIP
         private readonly PolicyManager _policyManager = null;
         private readonly ProtectionManager _protectionManager = null;
 
-        // public LabelManager GetLabelManager()
-        // {
-        //     return _labelManager;
-        // }
-        // public PolicyManager GetPolicyManager()
-        // {
-        //     return _policyManager;
-        // }
-        // public ProtectionManager GetProtectionManager()
-        // {
-        //     return _protectionManager;
-        // }
-
         public AipFileManager(AipConfig aipConfig)
         {
             _aipConfig = aipConfig;
@@ -90,7 +77,6 @@ namespace AipGateway.AIP
             Console.WriteLine("AipFileManager::SetError ==> {0}, {1}, {2}", errNo, errMsg1, errMsg2);
         }
 
-
         public bool Initialize()
         {
             _authDelegate = new AuthDelegateImplementation(_aipConfig);
@@ -116,6 +102,12 @@ namespace AipGateway.AIP
 
         public bool CreateProfile()
         {
+            if (_authDelegate == null || _mipContext == null)
+            {
+                SetError(999, "AipFileManager::CreateProfile Failed.", "Library Is not Initialized.");
+                return false;
+            }
+
             if (!_labelManager.CreateProfile(ref _mipContext))
             {
                 SetError(11, "AipFileManager::CreateProfile ==> LabelManager::CreateProfile Failed.");
@@ -131,14 +123,18 @@ namespace AipGateway.AIP
                 SetError(13, "AipFileManager::CreateProfile ==> ProtectionManager::CreateProfile Failed.");
                 return false;
             }
-
             return true;
         }
 
         public bool CreateEngine()
         {
+            if (_authDelegate == null || _mipContext == null)
+            {
+                SetError(999, "AipFileManager::CreateEngine Failed.", "Library Is not Initialized.");
+                return false;
+            }
+            
             Identity identity = new Identity(_aipConfig.EMail);
-
             if (!_labelManager.CreateEngine(ref identity, ref _authDelegate))
             {
                 SetError(21, "AipFileManager::CreateEngine ==> LabelManager::CreateEngine Failed.");
@@ -158,46 +154,50 @@ namespace AipGateway.AIP
             return true;
         }
 
-        public void GetFileInfo(string fileName)
+        public AipFileInfo GetFileInfo(string fileName)
         {
-            _labelManager.GetFileInfo(fileName);
+            if (_authDelegate == null || _mipContext == null)
+            {
+                SetError(999, "AipFileManager::GetFileInfo Failed.", "Library Is not Initialized.");
+                return null;
+            }
+
+            AipFileInfo fileInfo = _labelManager.GetFileInfo(fileName);
+            if (fileInfo == null)
+            {
+                SetError(_labelManager.LastErrNo, "AipFileManager::GetFileInfo Failed.", _labelManager.LastErrMsg);
+            }
+
+            return fileInfo;
         }
+
         public List<AipLabel> SensitivityLabels()
         {
+            if (_authDelegate == null || _mipContext == null)
+            {
+                SetError(999, "AipFileManager::SensitivityLabels Failed.", "Library Is not Initialized.");
+                return null;
+            }
+
             var result = new List<AipLabel>();
             try
             {
                 var labels = _labelManager.SensitivityLabels();
                 foreach (var label in labels)
                 {
-                    var aipLabel = new AipLabel
-                    {
-                        Id = label.Id,
-                        Name = label.Name,
-                        Sensitivity = label.Sensitivity,
-                        Description = label.Description,
-                        IsActive = label.IsActive,
-                    };
-                    aipLabel.Children = new List<AipLabel>();
-
-                    // If the label has an children, iterate through each. 
-                    if (label.Children.Count > 0)
+                    var aipLabel = Utilities.LabelToAip(label);
+                    if (aipLabel != null)
                     {
-                        foreach (var child in label.Children)
+                        if (label.Children.Count > 0)
                         {
-                            var aipChildLabel = new AipLabel
+                            foreach (var child in label.Children)
                             {
-                                Id = child.Id,
-                                Name = child.Name,
-                                Sensitivity = child.Sensitivity,
-                                Description = child.Description,
-                                IsActive = child.IsActive,
-                            };
-
-                            aipLabel.Children.Add(aipChildLabel);
+                                var aipChildLabel = Utilities.LabelToAip(child);
+                                if (aipChildLabel != null) aipLabel.Children.Add(aipChildLabel);
+                            }
                         }
+                        result.Add(aipLabel);
                     }
-                    result.Add(aipLabel);
                 }
             }
             catch (Exception ex)
@@ -210,40 +210,31 @@ namespace AipGateway.AIP
 
         public List<AipLabel> ListSensitivityLabels()
         {
+            if (_authDelegate == null || _mipContext == null)
+            {
+                SetError(999, "AipFileManager::ListSensitivityLabels Failed.", "Library Is not Initialized.");
+                return null;
+            }
+
             var result = new List<AipLabel>();
             try
             {
                 var labels = _policyManager.ListSensitivityLabels();
                 foreach (var label in labels)
                 {
-                    var aipLabel = new AipLabel
+                    var aipLabel = Utilities.LabelToAip(label);
+                    if (aipLabel != null)
                     {
-                        Id = label.Id,
-                        Name = label.Name,
-                        Sensitivity = label.Sensitivity,
-                        Description = label.Description,
-                        IsActive = label.IsActive,
-                    };
-                    aipLabel.Children = new List<AipLabel>();
-
-                    // If the label has an children, iterate through each. 
-                    if (label.Children.Count > 0)
-                    {
-                        foreach (var child in label.Children)
+                        if (label.Children.Count > 0)
                         {
-                            var aipChildLabel = new AipLabel
+                            foreach (var child in label.Children)
                             {
-                                Id = child.Id,
-                                Name = child.Name,
-                                Sensitivity = child.Sensitivity,
-                                Description = child.Description,
-                                IsActive = child.IsActive,
-                            };
-
-                            aipLabel.Children.Add(aipChildLabel);
+                                var aipChildLabel = Utilities.LabelToAip(child);
+                                if (aipChildLabel != null) aipLabel.Children.Add(aipChildLabel);
+                            }
                         }
+                        result.Add(aipLabel);
                     }
-                    result.Add(aipLabel);
                 }
             }
             catch (Exception ex)
@@ -256,20 +247,23 @@ namespace AipGateway.AIP
 
         public List<AipTemplate> GetTemplates()
         {
+            if (_authDelegate == null || _mipContext == null)
+            {
+                SetError(999, "AipFileManager::GetTemplates Failed.", "Library Is not Initialized.");
+                return null;
+            }
+
             var result = new List<AipTemplate>();
             try
             {
-                var labels = _protectionManager.GetTemplates();
-                foreach (var label in labels)
+                var templates = _protectionManager.GetTemplates();
+                foreach (var template in templates)
                 {
-                    var aipTemplate = new AipTemplate
+                    var aipTemplate = Utilities.TemplateToAip(template);
+                    if (aipTemplate != null)
                     {
-                        Id = label.Id,
-                        Name = label.Name,
-                        Description = label.Description
-                    };
-
-                    result.Add(aipTemplate);
+                        result.Add(aipTemplate);
+                    }
                 }
             }
             catch (Exception ex)

+ 3 - 0
AipGateway.AIP/AipGateway.AIP.csproj

@@ -59,6 +59,9 @@
     <PackageReference Include="Microsoft.Identity.Client">
       <Version>4.60.3</Version>
     </PackageReference>
+    <PackageReference Include="Microsoft.Identity.Client.Extensions.Msal">
+      <Version>4.60.3</Version>
+    </PackageReference>
     <PackageReference Include="Microsoft.InformationProtection.File">
       <Version>1.14.128</Version>
     </PackageReference>

+ 13 - 0
AipGateway.AIP/AipLabel.cs

@@ -2,6 +2,18 @@
 
 namespace AipGateway.AIP
 {
+    public enum AipActionSource
+    {
+        /// <summary>Selected manually by user</summary>
+        Manual,
+        /// <summary>Set by policy conditions</summary>
+        Automatic,
+        /// <summary>Set by user after label was recommended by policy conditions</summary>
+        Recommended,
+        /// <summary>Set by default in policy</summary>
+        Default,
+    }
+
     public class AipLabel
     {
         public string Id { get; set; }
@@ -9,6 +21,7 @@ namespace AipGateway.AIP
         public int Sensitivity { get; set; }
         public string Description { get; set; }
         public bool IsActive { get; set; }
+        public AipActionSource ActionSource { get; set; }
         public List<AipLabel> Children { get; set; }
     }
 }

+ 171 - 30
AipGateway.AIP/AuthDelegateImplementation.cs

@@ -1,8 +1,11 @@
 using System;
+using System.IO;
 using System.Linq;
+using System.Reflection;
 using System.Security.Cryptography.X509Certificates;
 using System.Threading.Tasks;
 using Microsoft.Identity.Client;
+using Microsoft.Identity.Client.Extensions.Msal;
 using Microsoft.InformationProtection;
 
 namespace AipGateway.AIP
@@ -13,6 +16,8 @@ namespace AipGateway.AIP
         public string LastErrMsg { get; set; }
 
         private readonly AipConfig _aipConfig;
+        private readonly IConfidentialClientApplication _confidentialApp = null;
+        private readonly IPublicClientApplication _publicApp = null;
 
 
         public AuthDelegateImplementation(AipConfig aipConfig)
@@ -20,6 +25,44 @@ namespace AipGateway.AIP
             _aipConfig = aipConfig;
             LastErrNo = 0;
             LastErrMsg = String.Empty;
+
+            var storageProperties =
+                new StorageCreationPropertiesBuilder(
+                        "AIPGateway.Cache",
+                        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
+                    .Build();
+            var cacheHelper = MsalCacheHelper.CreateAsync(storageProperties).GetAwaiter().GetResult();
+
+            if (_aipConfig.LoginType == AipAuthLoginType.authLoginPassword)
+            {
+                _confidentialApp = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
+                    .WithClientSecret(_aipConfig.SecretValue)
+                    // .WithAuthority($"https://login.microsoftonline.com/{_aipConfig.TenantId}")
+                    // .WithCacheOptions(CacheOptions.EnableSharedCacheOptions)
+                    .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
+                    .Build();
+                cacheHelper.RegisterCache(_confidentialApp.UserTokenCache);
+            }
+            else if (_aipConfig.LoginType == AipAuthLoginType.authLoginCert)
+            {
+                var authority = $"https://login.windows.net/{_aipConfig.TenantId}";
+                // var certificate = Utilities.ReadCertificateFromStore(_aipConfig.CertThumbPrint);
+                var myCertificate = X509Certificate2.CreateFromCertFile(_aipConfig.CertThumbPrint);
+                X509Certificate2 certificate = new X509Certificate2(myCertificate);
+                _confidentialApp = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
+                    .WithCertificate(certificate)
+                    .WithAuthority(new Uri(authority))
+                    .Build();
+                cacheHelper.RegisterCache(_confidentialApp.UserTokenCache);
+            }
+            else
+            {
+                _publicApp = PublicClientApplicationBuilder.Create(_aipConfig.ClientId)
+                    .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
+                    .WithAuthority(AzureCloudInstance.AzurePublic, _aipConfig.TenantId)
+                    .Build();
+                cacheHelper.RegisterCache(_publicApp.UserTokenCache);
+            }
         }
 
         public void ResetError()
@@ -37,6 +80,25 @@ namespace AipGateway.AIP
         public string AcquireToken(Identity identity, string authority, string resource, string claim)
         {
             Console.WriteLine("AuthDelegateImplementation::AcquireToken ==> LoginType: {0}", _aipConfig.LoginType);
+            
+            // var app = PublicClientApplicationBuilder.Create(_aipConfig.ClientId)
+            //     .WithAuthority(authority)
+            //     .Build();
+            //
+            // var scopes = new[] { resource[resource.Length - 1].Equals('/') ? $"{resource}.default" : $"{resource}/.default" };
+            // try
+            // {
+            //     var accounts = app.GetAccountsAsync().GetAwaiter().GetResult();
+            //     var result = app.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
+            //         .ExecuteAsync().Result;
+            //
+            //     Console.WriteLine("AuthDelegateImplementation::AcquireToken ==> AcquireTokenSilent Succeed.");
+            //     return result.AccessToken;
+            // }
+            // catch (MsalUiRequiredException)
+            // {
+            //     Console.WriteLine("AuthDelegateImplementation::AcquireToken ==> AcquireTokenSilent Failed.");
+            // }
 
             if (_aipConfig.LoginType == AipAuthLoginType.authLoginPassword)
             {
@@ -59,29 +121,51 @@ namespace AipGateway.AIP
             var authorityUri = new Uri(authority);
             authority = $"https://{authorityUri.Host}/{_aipConfig.TenantId}";
             
-            var app = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
-                .WithClientSecret(_aipConfig.SecretValue)
-                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
-                .Build();
+            // var app = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
+            //     .WithClientSecret(_aipConfig.SecretValue)
+            //     // .WithAuthority($"https://login.microsoftonline.com/{_aipConfig.TenantId}")
+            //     // .WithCacheOptions(CacheOptions.EnableSharedCacheOptions)
+            //     .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
+            //     .Build();
+
+            // Create confidential client using client secret.
+            // var app = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
+            //     .WithRedirectUri(resource)
+            //     .WithAuthority(authority)
+            //     .WithClientSecret(_aipConfig.SecretValue)
+            //     .Build();
 
             var scopes = new[] { resource[resource.Length - 1].Equals('/') ? $"{resource}.default" : $"{resource}/.default" };
 
             //app.AddInMemoryTokenCache();
-
             try
             {
-                result = app.AcquireTokenForClient(scopes)
-                .WithTenantId(_aipConfig.TenantId)
-                .ExecuteAsync()
-                .GetAwaiter()
-                .GetResult();
+                var accounts = (_confidentialApp.GetAccountsAsync()).GetAwaiter().GetResult();
+
+                result = _confidentialApp.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
+                    .ExecuteAsync().GetAwaiter().GetResult();
+
+                Console.WriteLine("AuthDelegateImplementation::AcquireTokenByPassword ==> AcquireTokenSilent Succeed.");
+                return result.AccessToken;
             }
-            catch (MsalServiceException ex) when (ex.Message.Contains("AADSTS70011"))
+            catch (MsalUiRequiredException)
             {
-                // Invalid scope. The scope has to be of the form "https://resourceurl/.default"
-                // Mitigation: change the scope to be as expected
-                SetError(1, "AcquireTokenByPassword.Scope provided is not supported.", ex.Message);
-                return null;
+                Console.WriteLine("AuthDelegateImplementation::AcquireTokenByPassword ==> AcquireTokenSilent Failed.");
+                try
+                {
+                    result = _confidentialApp.AcquireTokenForClient(scopes)
+                        .WithTenantId(_aipConfig.TenantId)
+                        .ExecuteAsync()
+                        .GetAwaiter()
+                        .GetResult();
+                }
+                catch (MsalServiceException ex) when (ex.Message.Contains("AADSTS70011"))
+                {
+                    // Invalid scope. The scope has to be of the form "https://resourceurl/.default"
+                    // Mitigation: change the scope to be as expected
+                    SetError(1, "AcquireTokenByPassword.Scope provided is not supported.", ex.Message);
+                    return null;
+                }
             }
 
             return result.AccessToken;
@@ -96,22 +180,26 @@ namespace AipGateway.AIP
             authority = $"https://{authorityUri.Host}/{_aipConfig.TenantId}";
 
             // Read cert from local machine
-            //var certificate = ReadCertificateFromStore(certThumb);
+            // var certificate = Utilities.ReadCertificateFromStore(_aipConfig.CertThumbPrint);
             var myCertificate = X509Certificate2.CreateFromCertFile(_aipConfig.CertThumbPrint);
             X509Certificate2 certificate = new X509Certificate2(myCertificate);
 
             // Use cert to build ClientAssertionCertificate
-            var app = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
-                .WithCertificate(certificate)
-                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
-                .Build();
-
+            // var app = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
+            //     .WithCertificate(certificate)
+            //     .WithAuthority(new Uri(authority))
+            //     .Build();
+
+            // var app = ConfidentialClientApplicationBuilder.Create(_aipConfig.ClientId)
+            //     .WithCertificate(certificate)
+            //     .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
+            //     .Build();
             // Append .default to the resource passed in to AcquireToken().
             var scopes = new[] { resource[resource.Length - 1].Equals('/') ? $"{resource}.default" : $"{resource}/.default" };
 
             try
             {
-                result = app.AcquireTokenForClient(scopes).ExecuteAsync().Result;
+                result = _confidentialApp.AcquireTokenForClient(scopes).ExecuteAsync().Result;
             }
             catch (MsalServiceException ex) when (ex.Message.Contains("AADSTS70011"))
             {
@@ -131,18 +219,18 @@ namespace AipGateway.AIP
             var authorityUri = new Uri(authority);
             authority = $"https://{authorityUri.Host}/{_aipConfig.TenantId}";
 
-            var app = PublicClientApplicationBuilder.Create(_aipConfig.ClientId)
-                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
-                .WithAuthority(AzureCloudInstance.AzurePublic, "2e58414a-c6ae-43ff-aaf5-45ab8b78a404")
-                .Build();
+            // var app = PublicClientApplicationBuilder.Create(_aipConfig.ClientId)
+            //     .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
+            //     .WithAuthority(AzureCloudInstance.AzurePublic, _aipConfig.TenantId)
+            //     .Build();
 
-            var accounts = (app.GetAccountsAsync()).GetAwaiter().GetResult();
+            var accounts = (_publicApp.GetAccountsAsync()).GetAwaiter().GetResult();
 
             // Append .default to the resource passed in to AcquireToken().
             var scopes = new[] { resource[resource.Length - 1].Equals('/') ? $"{resource}.default" : $"{resource}/.default" };
             try
             {
-                result = app.AcquireTokenInteractive(scopes)
+                result = _publicApp.AcquireTokenInteractive(scopes)
                     .WithAccount(accounts.FirstOrDefault())
                     .WithPrompt(Prompt.SelectAccount)
                     .ExecuteAsync()
@@ -158,8 +246,61 @@ namespace AipGateway.AIP
 
             return result.AccessToken;
         }
-
-        private static X509Certificate2 ReadCertificateFromStore(string thumbprint)
+        // public X509Certificate2 LoadCertificate(string certificateName)
+        // {
+        //     string vaultUrl = "";
+        //     string clientId = _aipConfig.ClientId;
+        //     string tenantId = _aipConfig.TenantId;
+        //     string secret = "";
+        //
+        //     Console.WriteLine($"Loading certificate '{certificateName}' from Azure Key Vault");
+        //
+        //     var credentials = new ClientSecretCredential(tenantId: tenantId, clientId: clientId, clientSecret: secret);
+        //     var certClient = new CertificateClient(new Uri(vaultUrl), credentials);
+        //     var secretClient = new SecretClient(new Uri(vaultUrl), credentials);
+        //
+        //     var cert = GetCertificateAsync(certClient, secretClient, certificateName);
+        //
+        //     Console.WriteLine("Certificate loaded");
+        //     return cert;
+        // }
+    //     private static X509Certificate2 GetCertificateAsync(CertificateClient certificateClient,
+    //         SecretClient secretClient,
+    //         string certificateName)
+    //     {
+    //
+    //         KeyVaultCertificateWithPolicy certificate = certificateClient.GetCertificate(certificateName);
+    //
+    //         // Return a certificate with only the public key if the private key is not exportable.
+    //         if (certificate.Policy?.Exportable != true)
+    //         {
+    //             return new X509Certificate2(certificate.Cer);
+    //         }
+    //
+    //         // Parse the secret ID and version to retrieve the private key.
+    //         string[] segments = certificate.SecretId.AbsolutePath.Split('/', StringSplitOptions.RemoveEmptyEntries);
+    //         if (segments.Length != 3)
+    //         {
+    //             throw new InvalidOperationException($"Number of segments is incorrect: {segments.Length}, URI: {certificate.SecretId}");
+    //         }
+    //
+    //         string secretName = segments[1];
+    //         string secretVersion = segments[2];
+    //
+    //         KeyVaultSecret secret = secretClient.GetSecret(secretName, secretVersion);
+    //
+    //         // For PEM, you'll need to extract the base64-encoded message body.
+    //         // .NET 5.0 preview introduces the System.Security.Cryptography.PemEncoding class to make this easier.
+    //         if ("application/x-pkcs12".Equals(secret.Properties.ContentType, StringComparison.InvariantCultureIgnoreCase))
+    //         {
+    //             byte[] pfx = Convert.FromBase64String(secret.Value);
+    //             return new X509Certificate2(pfx);
+    //         }
+    //
+    //         throw new NotSupportedException($"Only PKCS#12 is supported. Found Content-Type: {secret.Properties.ContentType}");
+    //     }
+    // }
+    private X509Certificate2 ReadCertificateFromStore(string thumbprint)
         {
             X509Certificate2 cert = null;
             X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);

+ 60 - 2
AipGateway.AIP/LabelManager.cs

@@ -131,7 +131,7 @@ namespace AipGateway.AIP
             return null;
         }
 
-        public AipLabel GetFileInfo(string fileName)
+        public AipFileInfo GetFileInfo(string fileName)
         {
             var handler = CreateFileHandler(fileName, fileName);
             if (handler == null)
@@ -139,7 +139,65 @@ namespace AipGateway.AIP
                 return null;
             }
 
-            return null;
+            AipFileInfo fileInfo = new AipFileInfo
+            {
+                ContentLabel = null,
+                Protection = null,
+                OutputFileName = null
+            };
+            fileInfo.OutputFileName = handler.OutputFileName;
+            
+            if (handler.Label != null)
+            {
+                fileInfo.ContentLabel = new AipContentLabel()
+                {
+                    Label = Utilities.LabelToAip(handler.Label.Label),
+                    CreationTime = handler.Label.CreationTime,
+                    AssignmentMethod = (AipAssignmentMethod)handler.Label.AssignmentMethod,
+                    IsProtectionAppliedFromLabel = handler.Label.IsProtectionAppliedFromLabel,
+                };
+            }
+
+            if (handler.Protection != null)
+            {
+                fileInfo.Protection = new AipProtection()
+                {
+                    Owner = handler.Protection.Owner,
+                    IssuedTo = handler.Protection.IssuedTo,
+                    IsIssuedToOwner = handler.Protection.IsIssuedToOwner,
+                    ContentId = handler.Protection.ContentId,
+                    AuditedExtractAllowed = handler.Protection.AuditedExtractAllowed,
+                    BlockSize = handler.Protection.BlockSize,
+                    ProtectionDescriptor = null,
+                };
+                if (handler.Protection.ProtectionDescriptor != null)
+                {
+                    fileInfo.Protection.ProtectionDescriptor = new AipProtectionDescriptor()
+                    {
+                        ProtectionType = (AipProtectionType)handler.Protection.ProtectionDescriptor.ProtectionType,
+                        TemplateId = handler.Protection.ProtectionDescriptor.TemplateId,
+                        LabelInformation = new AipLabelInfo(),
+                        LabelId = handler.Protection.ProtectionDescriptor.LabelId,
+                        Owner = handler.Protection.ProtectionDescriptor.Owner,
+                        ContentId = handler.Protection.ProtectionDescriptor.ContentId,
+                        Name = handler.Protection.ProtectionDescriptor.Name,
+                        Description = handler.Protection.ProtectionDescriptor.Description,
+                        AllowOfflineAccess = handler.Protection.ProtectionDescriptor.AllowOfflineAccess,
+                        Referrer = handler.Protection.ProtectionDescriptor.Referrer,
+                        ContentValidUntil = handler.Protection.ProtectionDescriptor.ContentValidUntil,
+                        DoubleKeyUrl = handler.Protection.ProtectionDescriptor.DoubleKeyUrl,
+                    };
+                    if (handler.Protection.ProtectionDescriptor.LabelInformation != null)
+                    {
+                        fileInfo.Protection.ProtectionDescriptor.LabelInformation.LabelId =
+                            handler.Protection.ProtectionDescriptor.LabelInformation.LabelId;
+                        fileInfo.Protection.ProtectionDescriptor.LabelInformation.TenantId =
+                            handler.Protection.ProtectionDescriptor.LabelInformation.TenantId;
+                    }
+                }
+            }
+        
+            return fileInfo;
         }
 
     }

+ 31 - 1
AipGateway.AIP/Utilities.cs

@@ -4,6 +4,8 @@ using System.Runtime.InteropServices;
 using System.Security.Cryptography.X509Certificates;
 using System.Web;
 using System.Collections.Generic;
+using Microsoft.InformationProtection;
+using Microsoft.InformationProtection.Protection;
 
 namespace AipGateway.AIP
 {
@@ -41,6 +43,34 @@ namespace AipGateway.AIP
             }
 
             return value;
-        }       
+        }
+
+        public static AipLabel LabelToAip(Label label)
+        {
+            if (label == null) return null;
+
+            var aipLabel = new AipLabel
+            {
+                Id = label.Id,
+                Name = label.Name,
+                Sensitivity = label.Sensitivity,
+                Description = label.Description,
+                IsActive = label.IsActive,
+                ActionSource = (AipActionSource)label.ActionSource,
+                Children = new List<AipLabel>()
+            };
+            return aipLabel;
+        }
+        public static AipTemplate TemplateToAip(TemplateDescriptor template)
+        {
+            if (template == null) return null;
+            var aipTemplate = new AipTemplate
+            {
+                Id = template.Id,
+                Name = template.Name,
+                Description = template.Description
+            };
+            return aipTemplate;
+        }
     }
 }

BIN=BIN
AipGateway.AIP/bin/Debug/AipGateway.AIP.pdb


+ 4 - 0
AipGateway.AIP/obj/AipGateway.AIP.csproj.nuget.dgspec.json

@@ -42,6 +42,10 @@
               "target": "Package",
               "version": "[4.60.3, )"
             },
+            "Microsoft.Identity.Client.Extensions.Msal": {
+              "target": "Package",
+              "version": "[4.60.3, )"
+            },
             "Microsoft.InformationProtection.File": {
               "target": "Package",
               "version": "[1.14.128, )"

+ 1 - 1
AipGateway.AIP/obj/Debug/AipGateway.AIP.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-c45f64a320612d207782f78c65967f8d15e83026
+917e1c486d44489f2dc461b49959553474efae65

+ 10 - 5
AipGateway.AIP/obj/Debug/AipGateway.AIP.csproj.FileListAbsolute.txt

@@ -1,8 +1,3 @@
-C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\AipGateway.AIP.dll
-C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\AipGateway.AIP.pdb
-C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\obj\Debug\AipGateway.AIP.csproj.CoreCompileInputs.cache
-C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\obj\Debug\AipGateway.AIP.dll
-C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\obj\Debug\AipGateway.AIP.pdb
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\x64\mip_dotnet.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\x64\libbz2-1.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\x64\libffi-8.dll
@@ -44,12 +39,22 @@ C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\x86\mip_file_sdk.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\x86\mip_protection_sdk.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\x86\mip_upe_sdk.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\x86\zlib1.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\AipGateway.AIP.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\AipGateway.AIP.pdb
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\Microsoft.Identity.Client.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\Microsoft.Identity.Client.Extensions.Msal.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\Microsoft.IdentityModel.Abstractions.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\Microsoft.InformationProtection.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Buffers.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Diagnostics.DiagnosticSource.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.IO.FileSystem.AccessControl.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Memory.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Numerics.Vectors.dll
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Security.AccessControl.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Security.Cryptography.ProtectedData.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\bin\Debug\System.Security.Principal.Windows.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\obj\Debug\AipGateway.AIP.csproj.CoreCompileInputs.cache
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\obj\Debug\AipGateway.AIP.csproj.CopyComplete
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\obj\Debug\AipGateway.AIP.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.AIP\obj\Debug\AipGateway.AIP.pdb

BIN=BIN
AipGateway.AIP/obj/Debug/AipGateway.AIP.pdb


BIN=BIN
AipGateway.AIP/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


+ 515 - 0
AipGateway.AIP/obj/project.assets.json

@@ -28,6 +28,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -74,6 +88,28 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -116,6 +152,65 @@
         "runtime": {
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
+      },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.AccessControl.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
       }
     },
     ".NETFramework,Version=v4.8/win": {
@@ -145,6 +240,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -191,6 +300,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -233,6 +358,47 @@
         "runtime": {
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
+      },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": {}
+        }
       }
     },
     ".NETFramework,Version=v4.8/win-x64": {
@@ -262,6 +428,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -308,6 +488,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -350,6 +546,47 @@
         "runtime": {
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
+      },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        }
       }
     },
     ".NETFramework,Version=v4.8/win-x86": {
@@ -379,6 +616,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -425,6 +676,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -467,6 +734,47 @@
         "runtime": {
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
+      },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        }
       }
     }
   },
@@ -502,6 +810,21 @@
         "microsoft.identity.client.nuspec"
       ]
     },
+    "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+      "sha512": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==",
+      "type": "package",
+      "path": "microsoft.identity.client.extensions.msal/4.60.3",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "lib/net6.0/Microsoft.Identity.Client.Extensions.Msal.dll",
+        "lib/net6.0/Microsoft.Identity.Client.Extensions.Msal.xml",
+        "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll",
+        "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.xml",
+        "microsoft.identity.client.extensions.msal.4.60.3.nupkg.sha512",
+        "microsoft.identity.client.extensions.msal.nuspec"
+      ]
+    },
     "Microsoft.IdentityModel.Abstractions/6.35.0": {
       "sha512": "xuR8E4Rd96M41CnUSCiOJ2DBh+z+zQSmyrYHdYhD6K4fXBcQGVnRCFQ0efROUYpP+p0zC1BLKr0JRpVuujTZSg==",
       "type": "package",
@@ -857,6 +1180,50 @@
         "useSharedDesignerContext.txt"
       ]
     },
+    "System.IO.FileSystem.AccessControl/5.0.0": {
+      "sha512": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
+      "type": "package",
+      "path": "system.io.filesystem.accesscontrol/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.IO.FileSystem.AccessControl.dll",
+        "lib/net461/System.IO.FileSystem.AccessControl.dll",
+        "lib/net461/System.IO.FileSystem.AccessControl.xml",
+        "lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "ref/net46/System.IO.FileSystem.AccessControl.dll",
+        "ref/net461/System.IO.FileSystem.AccessControl.dll",
+        "ref/net461/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "ref/netstandard1.3/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/de/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/es/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/fr/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/it/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ja/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ko/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ru/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/zh-hans/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/zh-hant/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "ref/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "runtimes/win/lib/net46/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.xml",
+        "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "system.io.filesystem.accesscontrol.5.0.0.nupkg.sha512",
+        "system.io.filesystem.accesscontrol.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
     "System.Memory/4.5.4": {
       "sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
       "type": "package",
@@ -951,11 +1318,155 @@
         "system.runtime.compilerservices.unsafe.nuspec",
         "useSharedDesignerContext.txt"
       ]
+    },
+    "System.Security.AccessControl/5.0.0": {
+      "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+      "type": "package",
+      "path": "system.security.accesscontrol/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.Security.AccessControl.dll",
+        "lib/net461/System.Security.AccessControl.dll",
+        "lib/net461/System.Security.AccessControl.xml",
+        "lib/netstandard1.3/System.Security.AccessControl.dll",
+        "lib/netstandard2.0/System.Security.AccessControl.dll",
+        "lib/netstandard2.0/System.Security.AccessControl.xml",
+        "lib/uap10.0.16299/_._",
+        "ref/net46/System.Security.AccessControl.dll",
+        "ref/net461/System.Security.AccessControl.dll",
+        "ref/net461/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/System.Security.AccessControl.dll",
+        "ref/netstandard1.3/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/de/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/es/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/fr/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/it/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ja/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ko/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ru/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
+        "ref/netstandard2.0/System.Security.AccessControl.dll",
+        "ref/netstandard2.0/System.Security.AccessControl.xml",
+        "ref/uap10.0.16299/_._",
+        "runtimes/win/lib/net46/System.Security.AccessControl.dll",
+        "runtimes/win/lib/net461/System.Security.AccessControl.dll",
+        "runtimes/win/lib/net461/System.Security.AccessControl.xml",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
+        "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
+        "runtimes/win/lib/uap10.0.16299/_._",
+        "system.security.accesscontrol.5.0.0.nupkg.sha512",
+        "system.security.accesscontrol.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
+    "System.Security.Cryptography.ProtectedData/4.5.0": {
+      "sha512": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==",
+      "type": "package",
+      "path": "system.security.cryptography.protecteddata/4.5.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Security.Cryptography.ProtectedData.dll",
+        "lib/net461/System.Security.Cryptography.ProtectedData.dll",
+        "lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Security.Cryptography.ProtectedData.dll",
+        "ref/net461/System.Security.Cryptography.ProtectedData.dll",
+        "ref/net461/System.Security.Cryptography.ProtectedData.xml",
+        "ref/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.xml",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "runtimes/win/lib/net46/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "system.security.cryptography.protecteddata.4.5.0.nupkg.sha512",
+        "system.security.cryptography.protecteddata.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
+    "System.Security.Principal.Windows/5.0.0": {
+      "sha512": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+      "type": "package",
+      "path": "system.security.principal.windows/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.Security.Principal.Windows.dll",
+        "lib/net461/System.Security.Principal.Windows.dll",
+        "lib/net461/System.Security.Principal.Windows.xml",
+        "lib/netstandard1.3/System.Security.Principal.Windows.dll",
+        "lib/netstandard2.0/System.Security.Principal.Windows.dll",
+        "lib/netstandard2.0/System.Security.Principal.Windows.xml",
+        "lib/uap10.0.16299/_._",
+        "ref/net46/System.Security.Principal.Windows.dll",
+        "ref/net461/System.Security.Principal.Windows.dll",
+        "ref/net461/System.Security.Principal.Windows.xml",
+        "ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
+        "ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/System.Security.Principal.Windows.dll",
+        "ref/netstandard1.3/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
+        "ref/netstandard2.0/System.Security.Principal.Windows.dll",
+        "ref/netstandard2.0/System.Security.Principal.Windows.xml",
+        "ref/uap10.0.16299/_._",
+        "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+        "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+        "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+        "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/uap10.0.16299/_._",
+        "system.security.principal.windows.5.0.0.nupkg.sha512",
+        "system.security.principal.windows.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
     }
   },
   "projectFileDependencyGroups": {
     ".NETFramework,Version=v4.8": [
       "Microsoft.Identity.Client >= 4.60.3",
+      "Microsoft.Identity.Client.Extensions.Msal >= 4.60.3",
       "Microsoft.InformationProtection.File >= 1.14.128"
     ]
   },
@@ -1001,6 +1512,10 @@
             "target": "Package",
             "version": "[4.60.3, )"
           },
+          "Microsoft.Identity.Client.Extensions.Msal": {
+            "target": "Package",
+            "version": "[4.60.3, )"
+          },
           "Microsoft.InformationProtection.File": {
             "target": "Package",
             "version": "[1.14.128, )"

+ 7 - 2
AipGateway.AIP/obj/project.nuget.cache

@@ -1,17 +1,22 @@
 {
   "version": 2,
-  "dgSpecHash": "Yizxq2UAbZ6p/gdrrtYOM5zF9SmVuX25IFh7DF41wrkHQHCb68CwyRBG7INO/mjWfh5rBmviY3WnF1DiAQhWlw==",
+  "dgSpecHash": "QcBu1rN1h+2aXdCXLKWqW6bAdMmodV5sVZQClMgUkxVkMaTNucUaLem2XUS11+NY67cQS8DXaVPObuz5dYF8Ag==",
   "success": true,
   "projectFilePath": "C:\\DEV\\SOLUTION\\IIS\\AipGateway\\AipGateway.AIP\\AipGateway.AIP.csproj",
   "expectedPackageFiles": [
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identity.client\\4.60.3\\microsoft.identity.client.4.60.3.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identity.client.extensions.msal\\4.60.3\\microsoft.identity.client.extensions.msal.4.60.3.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identitymodel.abstractions\\6.35.0\\microsoft.identitymodel.abstractions.6.35.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.informationprotection.file\\1.14.128\\microsoft.informationprotection.file.1.14.128.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.diagnostics.diagnosticsource\\6.0.1\\system.diagnostics.diagnosticsource.6.0.1.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.io.filesystem.accesscontrol\\5.0.0\\system.io.filesystem.accesscontrol.5.0.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
-    "C:\\Users\\OpenValue\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.cryptography.protecteddata\\4.5.0\\system.security.cryptography.protecteddata.4.5.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512"
   ],
   "logs": []
 }

+ 4 - 0
AipGateway.Test/obj/AipGateway.Test.csproj.nuget.dgspec.json

@@ -42,6 +42,10 @@
               "target": "Package",
               "version": "[4.60.3, )"
             },
+            "Microsoft.Identity.Client.Extensions.Msal": {
+              "target": "Package",
+              "version": "[4.60.3, )"
+            },
             "Microsoft.InformationProtection.File": {
               "target": "Package",
               "version": "[1.14.128, )"

BIN=BIN
AipGateway.Test/obj/Debug/AipGateway.Test.csproj.AssemblyReference.cache


+ 514 - 0
AipGateway.Test/obj/project.assets.json

@@ -28,6 +28,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -89,6 +103,28 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -132,11 +168,71 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.AccessControl.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -174,6 +270,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -235,6 +345,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -278,11 +404,53 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": {}
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -320,6 +488,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -381,6 +563,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -424,11 +622,53 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -466,6 +706,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -527,6 +781,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -570,11 +840,53 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -618,6 +930,21 @@
         "microsoft.identity.client.nuspec"
       ]
     },
+    "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+      "sha512": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==",
+      "type": "package",
+      "path": "microsoft.identity.client.extensions.msal/4.60.3",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "lib/net6.0/Microsoft.Identity.Client.Extensions.Msal.dll",
+        "lib/net6.0/Microsoft.Identity.Client.Extensions.Msal.xml",
+        "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll",
+        "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.xml",
+        "microsoft.identity.client.extensions.msal.4.60.3.nupkg.sha512",
+        "microsoft.identity.client.extensions.msal.nuspec"
+      ]
+    },
     "Microsoft.IdentityModel.Abstractions/6.35.0": {
       "sha512": "xuR8E4Rd96M41CnUSCiOJ2DBh+z+zQSmyrYHdYhD6K4fXBcQGVnRCFQ0efROUYpP+p0zC1BLKr0JRpVuujTZSg==",
       "type": "package",
@@ -1003,6 +1330,50 @@
         "useSharedDesignerContext.txt"
       ]
     },
+    "System.IO.FileSystem.AccessControl/5.0.0": {
+      "sha512": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
+      "type": "package",
+      "path": "system.io.filesystem.accesscontrol/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.IO.FileSystem.AccessControl.dll",
+        "lib/net461/System.IO.FileSystem.AccessControl.dll",
+        "lib/net461/System.IO.FileSystem.AccessControl.xml",
+        "lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "ref/net46/System.IO.FileSystem.AccessControl.dll",
+        "ref/net461/System.IO.FileSystem.AccessControl.dll",
+        "ref/net461/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "ref/netstandard1.3/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/de/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/es/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/fr/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/it/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ja/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ko/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ru/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/zh-hans/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/zh-hant/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "ref/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "runtimes/win/lib/net46/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.xml",
+        "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "system.io.filesystem.accesscontrol.5.0.0.nupkg.sha512",
+        "system.io.filesystem.accesscontrol.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
     "System.Memory/4.5.4": {
       "sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
       "type": "package",
@@ -1098,6 +1469,149 @@
         "useSharedDesignerContext.txt"
       ]
     },
+    "System.Security.AccessControl/5.0.0": {
+      "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+      "type": "package",
+      "path": "system.security.accesscontrol/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.Security.AccessControl.dll",
+        "lib/net461/System.Security.AccessControl.dll",
+        "lib/net461/System.Security.AccessControl.xml",
+        "lib/netstandard1.3/System.Security.AccessControl.dll",
+        "lib/netstandard2.0/System.Security.AccessControl.dll",
+        "lib/netstandard2.0/System.Security.AccessControl.xml",
+        "lib/uap10.0.16299/_._",
+        "ref/net46/System.Security.AccessControl.dll",
+        "ref/net461/System.Security.AccessControl.dll",
+        "ref/net461/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/System.Security.AccessControl.dll",
+        "ref/netstandard1.3/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/de/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/es/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/fr/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/it/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ja/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ko/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ru/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
+        "ref/netstandard2.0/System.Security.AccessControl.dll",
+        "ref/netstandard2.0/System.Security.AccessControl.xml",
+        "ref/uap10.0.16299/_._",
+        "runtimes/win/lib/net46/System.Security.AccessControl.dll",
+        "runtimes/win/lib/net461/System.Security.AccessControl.dll",
+        "runtimes/win/lib/net461/System.Security.AccessControl.xml",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
+        "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
+        "runtimes/win/lib/uap10.0.16299/_._",
+        "system.security.accesscontrol.5.0.0.nupkg.sha512",
+        "system.security.accesscontrol.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
+    "System.Security.Cryptography.ProtectedData/4.5.0": {
+      "sha512": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==",
+      "type": "package",
+      "path": "system.security.cryptography.protecteddata/4.5.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Security.Cryptography.ProtectedData.dll",
+        "lib/net461/System.Security.Cryptography.ProtectedData.dll",
+        "lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Security.Cryptography.ProtectedData.dll",
+        "ref/net461/System.Security.Cryptography.ProtectedData.dll",
+        "ref/net461/System.Security.Cryptography.ProtectedData.xml",
+        "ref/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.xml",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "runtimes/win/lib/net46/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "system.security.cryptography.protecteddata.4.5.0.nupkg.sha512",
+        "system.security.cryptography.protecteddata.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
+    "System.Security.Principal.Windows/5.0.0": {
+      "sha512": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+      "type": "package",
+      "path": "system.security.principal.windows/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.Security.Principal.Windows.dll",
+        "lib/net461/System.Security.Principal.Windows.dll",
+        "lib/net461/System.Security.Principal.Windows.xml",
+        "lib/netstandard1.3/System.Security.Principal.Windows.dll",
+        "lib/netstandard2.0/System.Security.Principal.Windows.dll",
+        "lib/netstandard2.0/System.Security.Principal.Windows.xml",
+        "lib/uap10.0.16299/_._",
+        "ref/net46/System.Security.Principal.Windows.dll",
+        "ref/net461/System.Security.Principal.Windows.dll",
+        "ref/net461/System.Security.Principal.Windows.xml",
+        "ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
+        "ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/System.Security.Principal.Windows.dll",
+        "ref/netstandard1.3/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
+        "ref/netstandard2.0/System.Security.Principal.Windows.dll",
+        "ref/netstandard2.0/System.Security.Principal.Windows.xml",
+        "ref/uap10.0.16299/_._",
+        "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+        "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+        "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+        "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/uap10.0.16299/_._",
+        "system.security.principal.windows.5.0.0.nupkg.sha512",
+        "system.security.principal.windows.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
     "AipGateway.AIP/1.0.0": {
       "type": "project",
       "path": "../AipGateway.AIP/AipGateway.AIP.csproj",

+ 7 - 2
AipGateway.Test/obj/project.nuget.cache

@@ -1,18 +1,23 @@
 {
   "version": 2,
-  "dgSpecHash": "rnztjik4XTAruOUq8zl7gcK0L4IgwTbFtmY3qbTQu3d85b1yEWTXDaUeP4oIhwQ5cMVAYIg+BgIg5IzVCIFsJQ==",
+  "dgSpecHash": "5CpJTnABhg5MOCLobQYaWMkQlSkowZhnkIUKdlXP7k1pDLdhmrGvykYRLupHKCKp/OS8VLH8Uju3uPr0vYlPMQ==",
   "success": true,
   "projectFilePath": "C:\\DEV\\SOLUTION\\IIS\\AipGateway\\AipGateway.Test\\AipGateway.Test.csproj",
   "expectedPackageFiles": [
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identity.client\\4.60.3\\microsoft.identity.client.4.60.3.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identity.client.extensions.msal\\4.60.3\\microsoft.identity.client.extensions.msal.4.60.3.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identitymodel.abstractions\\6.35.0\\microsoft.identitymodel.abstractions.6.35.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.informationprotection.file\\1.14.128\\microsoft.informationprotection.file.1.14.128.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.configuration.configurationmanager\\8.0.0\\system.configuration.configurationmanager.8.0.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.diagnostics.diagnosticsource\\6.0.1\\system.diagnostics.diagnosticsource.6.0.1.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.io.filesystem.accesscontrol\\5.0.0\\system.io.filesystem.accesscontrol.5.0.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
-    "C:\\Users\\OpenValue\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.cryptography.protecteddata\\4.5.0\\system.security.cryptography.protecteddata.4.5.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512"
   ],
   "logs": []
 }

+ 2 - 1
AipGateway.Viewer/App.config

@@ -14,6 +14,7 @@
 		<add key="aip:Domain" value="AIP.SPA.Files"/>
 		<add key="aip:EMail" value="SeungHo@kangfamily.site"/>
 		<add key="aip:SecretValue" value="CvW8Q~0iANtLN1Y2EXR_nVyYb_tQTDwjW-Z7Ndg3"/>
-		<add key="aip:CertThumbPrint" value=""/>
+		<add key="aip:CertThumbPrint" value="C:\DEV\SOLUTION\IIS\OpenSSL\ssl\server.pem"/>
+		<!-- <add key="aip:CertThumbPrint" value="E04AE4115B2810C204BE4E783DE3DCFC85D70C08"/> -->
 	</appSettings>
 </configuration>

+ 66 - 0
AipGateway.Viewer/FrmMain.Designer.cs

@@ -65,6 +65,11 @@ namespace AipGateway.Viewer
             this.CboPolicyLabel = new System.Windows.Forms.ComboBox();
             this.label14 = new System.Windows.Forms.Label();
             this.BtnGetInfo = new System.Windows.Forms.Button();
+            this.BtnOutGetInfo = new System.Windows.Forms.Button();
+            this.BtnSetLabel = new System.Windows.Forms.Button();
+            this.BtnSetProtection = new System.Windows.Forms.Button();
+            this.TxtOwner = new System.Windows.Forms.TextBox();
+            this.label15 = new System.Windows.Forms.Label();
             this.SuspendLayout();
             // 
             // CboAuthLoginType
@@ -421,11 +426,67 @@ namespace AipGateway.Viewer
             this.BtnGetInfo.UseVisualStyleBackColor = true;
             this.BtnGetInfo.Click += new System.EventHandler(this.BtnGetInfo_Click);
             // 
+            // BtnOutGetInfo
+            // 
+            this.BtnOutGetInfo.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.BtnOutGetInfo.Location = new System.Drawing.Point(719, 218);
+            this.BtnOutGetInfo.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.BtnOutGetInfo.Name = "BtnOutGetInfo";
+            this.BtnOutGetInfo.Size = new System.Drawing.Size(70, 22);
+            this.BtnOutGetInfo.TabIndex = 35;
+            this.BtnOutGetInfo.Text = "Info";
+            this.BtnOutGetInfo.UseVisualStyleBackColor = true;
+            this.BtnOutGetInfo.Click += new System.EventHandler(this.BtnOutGetInfo_Click);
+            // 
+            // BtnSetLabel
+            // 
+            this.BtnSetLabel.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.BtnSetLabel.Location = new System.Drawing.Point(804, 186);
+            this.BtnSetLabel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.BtnSetLabel.Name = "BtnSetLabel";
+            this.BtnSetLabel.Size = new System.Drawing.Size(92, 22);
+            this.BtnSetLabel.TabIndex = 36;
+            this.BtnSetLabel.Text = "Set Label";
+            this.BtnSetLabel.UseVisualStyleBackColor = true;
+            // 
+            // BtnSetProtection
+            // 
+            this.BtnSetProtection.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.BtnSetProtection.Location = new System.Drawing.Point(902, 186);
+            this.BtnSetProtection.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.BtnSetProtection.Name = "BtnSetProtection";
+            this.BtnSetProtection.Size = new System.Drawing.Size(120, 22);
+            this.BtnSetProtection.TabIndex = 37;
+            this.BtnSetProtection.Text = "Set Protection";
+            this.BtnSetProtection.UseVisualStyleBackColor = true;
+            // 
+            // TxtOwner
+            // 
+            this.TxtOwner.Location = new System.Drawing.Point(787, 156);
+            this.TxtOwner.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.TxtOwner.Name = "TxtOwner";
+            this.TxtOwner.Size = new System.Drawing.Size(265, 23);
+            this.TxtOwner.TabIndex = 38;
+            // 
+            // label15
+            // 
+            this.label15.AutoSize = true;
+            this.label15.Location = new System.Drawing.Point(740, 159);
+            this.label15.Name = "label15";
+            this.label15.Size = new System.Drawing.Size(42, 15);
+            this.label15.TabIndex = 39;
+            this.label15.Text = "Owner";
+            // 
             // FrmMain
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.ClientSize = new System.Drawing.Size(1063, 555);
+            this.Controls.Add(this.TxtOwner);
+            this.Controls.Add(this.label15);
+            this.Controls.Add(this.BtnSetProtection);
+            this.Controls.Add(this.BtnSetLabel);
+            this.Controls.Add(this.BtnOutGetInfo);
             this.Controls.Add(this.BtnGetInfo);
             this.Controls.Add(this.CboPolicyLabel);
             this.Controls.Add(this.label14);
@@ -509,6 +570,11 @@ namespace AipGateway.Viewer
         private System.Windows.Forms.ComboBox CboPolicyLabel;
         private System.Windows.Forms.Label label14;
         private System.Windows.Forms.Button BtnGetInfo;
+        private System.Windows.Forms.Button BtnOutGetInfo;
+        private System.Windows.Forms.Button BtnSetLabel;
+        private System.Windows.Forms.Button BtnSetProtection;
+        private System.Windows.Forms.TextBox TxtOwner;
+        private System.Windows.Forms.Label label15;
     }
 }
 

+ 112 - 18
AipGateway.Viewer/FrmMain.cs

@@ -31,24 +31,13 @@ namespace AipGateway.Viewer
         {
             TxtLog.Clear();
         
-            // CboFileLabel.DataSource = fileLabels;
-            // CboFileLabel.DisplayMember = "Display";
-            // CboFileLabel.ValueMember = "Value";
-            //
-            // CboPolicyLabel.DataSource = policyLabels;
-            // CboPolicyLabel.DisplayMember = "Display";
-            // CboPolicyLabel.ValueMember = "Value";
-            //
-            // CboProtection.DataSource = protectTemplates;
-            // CboProtection.DisplayMember = "Display";
-            // CboProtection.ValueMember = "Value";
-            // string value = CboFileLabel.SelectedValue.ToString();
-
             CboFileLabel.Items.Clear();
             CboPolicyLabel.Items.Clear();
             CboProtection.Items.Clear();
             CboAuthLoginType.SelectedIndex = -1;
 
+            BtnEnabled(false);
+
             _aipConfig = new AipConfig
             {
                 AppName = ConfigurationManager.AppSettings["AppName"], // 어플리케이션 이름
@@ -75,8 +64,20 @@ namespace AipGateway.Viewer
             TxtEMail.Text = _aipConfig.EMail;
             TxtSecretValue.Text = _aipConfig.SecretValue;
             TxtCertThumbPrint.Text = _aipConfig.CertThumbPrint;
+
+            TxtOwner.Text = _aipConfig.EMail;
         }
 
+        private void BtnEnabled(bool initialized)
+        {
+            BtnInitialize.Enabled = !initialized;
+            BtnSingOut.Enabled = initialized;
+            BtnGetInfo.Enabled = initialized;
+            BtnOutGetInfo.Enabled = initialized;
+            BtnSetLabel.Enabled = initialized;
+            BtnSetProtection.Enabled = initialized;
+
+        }
         private void BtnFileSelect_Click(object sender, EventArgs e)
         {
             String inputFileName = ShowFileOpenDialog();
@@ -217,13 +218,11 @@ namespace AipGateway.Viewer
             sb.AppendLine("=======================================================================");
             TxtLog.Text = sb.ToString();
 
-            BtnInitialize.Enabled = false;
-            BtnSingOut.Enabled = true;
+            BtnEnabled(true);
         }
         private void SignOut()
         {
-            BtnInitialize.Enabled = true;
-            BtnSingOut.Enabled = false;
+            BtnEnabled(false);
 
             CboFileLabel.Items.Clear();
             CboPolicyLabel.Items.Clear();
@@ -246,13 +245,108 @@ namespace AipGateway.Viewer
 
         private void BtnGetInfo_Click(object sender, EventArgs e)
         {
-            TxtLog.Clear();
             string inputFileName = TxtInputFile.Text.Trim();
             if (inputFileName.Equals(""))
             {
                 AppendLog("파일을 선택하세요.");
+                TxtInputFile.Focus();
+                return;
+            }
+
+            GetFileInfo(inputFileName);
+        }
+
+        private void BtnOutGetInfo_Click(object sender, EventArgs e)
+        {
+            string inputFileName = TxtActualFile.Text.Trim();
+            if (inputFileName.Equals(""))
+            {
+                AppendLog("파일을 선택하세요.");
+                TxtActualFile.Focus();
+                return;
+            }
+
+            GetFileInfo(inputFileName);
+        }
+
+        private void GetFileInfo(String fileName)
+        {
+            TxtLog.Clear();
+
+            if (File.Exists(fileName))
+            {
+                AppendLog("파일이 존재하지 않습니다: " + fileName);
+                return;
+            }
+
+            AipFileInfo info = _aipFileManager.GetFileInfo(fileName);
+            if (info == null)
+            {
+                AppendLog("파일정보를 읽어 오는데 실패하였습니다.");
+                AppendLog(_aipFileManager.LastErrNo + ", " + _aipFileManager.LastErrMsg);
                 return;
             }
+
+            AppendLog("출력파일명: " + info.OutputFileName);
+            if (info.ContentLabel == null)
+            {
+                AppendLog("ContentLabel: 정보없음.");
+            }
+            else
+            {
+                AppendLog("ContentLabel:......................................................................");
+                AppendLog("                CreationTime: " + info.ContentLabel.CreationTime);
+                AppendLog("            AssignmentMethod: " + info.ContentLabel.AssignmentMethod);
+                AppendLog("IsProtectionAppliedFromLabel: " + info.ContentLabel.IsProtectionAppliedFromLabel);
+                if (info.ContentLabel.Label != null)
+                {
+                    AppendLog("+Label                    Id: " + info.ContentLabel.Label.Id);
+                    AppendLog("                        Name: " + info.ContentLabel.Label.Name);
+                    AppendLog("                 Sensitivity: " + info.ContentLabel.Label.Sensitivity);
+                    AppendLog("                 Description: " + info.ContentLabel.Label.Description);
+                    AppendLog("                    IsActive: " + info.ContentLabel.Label.IsActive);
+                    AppendLog("                ActionSource: " + info.ContentLabel.Label.ActionSource);
+                }
+                else
+                {
+                    AppendLog("+                      Label: 정보없음.");
+                }
+            }
+            if (info.Protection == null)
+            {
+                AppendLog("Protection: 정보없음.");
+            }
+            else
+            {
+                AppendLog("Protection:......................................................................");
+                AppendLog("                  Owner: " + info.Protection.Owner);
+                AppendLog("               IssuedTo: " + info.Protection.IssuedTo);
+                AppendLog("        IsIssuedToOwner: " + info.Protection.IsIssuedToOwner);
+                AppendLog("              ContentId: " + info.Protection.ContentId);
+                AppendLog("UseDeprecatedAlgorithms: " + info.Protection.UseDeprecatedAlgorithms);
+                AppendLog("  AuditedExtractAllowed: " + info.Protection.AuditedExtractAllowed);
+                AppendLog("              BlockSize: " + info.Protection.BlockSize);
+                if (info.Protection.ProtectionDescriptor != null)
+                {
+                    AppendLog("+Description           ProtectionType: " + info.Protection.ProtectionDescriptor.ProtectionType);
+                    AppendLog("                            TemplateId: " + info.Protection.ProtectionDescriptor.TemplateId);
+                    AppendLog("              LabelInformation LabelId: " + info.Protection.ProtectionDescriptor.LabelInformation.LabelId);
+                    AppendLog("             LabelInformation TenantId: " + info.Protection.ProtectionDescriptor.LabelInformation.TenantId);
+                    AppendLog("                               LabelId: " + info.Protection.ProtectionDescriptor.LabelId);
+                    AppendLog("                                 Owner: " + info.Protection.ProtectionDescriptor.Owner);
+                    AppendLog("                             ContentId: " + info.Protection.ProtectionDescriptor.ContentId);
+                    AppendLog("                                  Name: " + info.Protection.ProtectionDescriptor.Name);
+                    AppendLog("                           Description: " + info.Protection.ProtectionDescriptor.Description);
+                    AppendLog("                    AllowOfflineAccess: " + info.Protection.ProtectionDescriptor.AllowOfflineAccess);
+                    AppendLog("                              Referrer: " + info.Protection.ProtectionDescriptor.Referrer);
+                    AppendLog("                     ContentValidUntil: " + info.Protection.ProtectionDescriptor.ContentValidUntil);
+                    AppendLog("                          DoubleKeyUrl: " + info.Protection.ProtectionDescriptor.DoubleKeyUrl);
+                }
+                else
+                {
+                    AppendLog("+Description: 정보없음.");
+                }
+            }
         }
     }
 }

BIN=BIN
AipGateway.Viewer/bin/Debug/AipGateway.AIP.pdb


+ 2 - 1
AipGateway.Viewer/bin/Debug/AipGateway.Viewer.exe.config

@@ -13,7 +13,8 @@
     <add key="aip:Domain" value="AIP.SPA.Files" />
     <add key="aip:EMail" value="SeungHo@kangfamily.site" />
     <add key="aip:SecretValue" value="CvW8Q~0iANtLN1Y2EXR_nVyYb_tQTDwjW-Z7Ndg3" />
-    <add key="aip:CertThumbPrint" value="" />
+    <add key="aip:CertThumbPrint" value="C:\DEV\SOLUTION\IIS\OpenSSL\ssl\server.pem" />
+    <!-- <add key="aip:CertThumbPrint" value="E04AE4115B2810C204BE4E783DE3DCFC85D70C08"/> -->
   </appSettings>
   <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

BIN=BIN
AipGateway.Viewer/bin/Debug/AipGateway.Viewer.pdb


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1413 - 0
AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/logs/mip_sdk.miplog


BIN=BIN
AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/mip.policies.sqlite3


BIN=BIN
AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/mip.protection.sqlite3


BIN=BIN
AipGateway.Viewer/bin/Debug/App_Data/mip_data/mip/telemetry


+ 4 - 0
AipGateway.Viewer/obj/AipGateway.Viewer.csproj.nuget.dgspec.json

@@ -42,6 +42,10 @@
               "target": "Package",
               "version": "[4.60.3, )"
             },
+            "Microsoft.Identity.Client.Extensions.Msal": {
+              "target": "Package",
+              "version": "[4.60.3, )"
+            },
             "Microsoft.InformationProtection.File": {
               "target": "Package",
               "version": "[1.14.128, )"

BIN=BIN
AipGateway.Viewer/obj/Debug/AipGateway.Viewer.FrmMain.resources


BIN=BIN
AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.AssemblyReference.cache


+ 1 - 1
AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-914b89129524baf2ed797084f213f16ca2940a37
+beae3500774e8d0614f7f95f8dedd2ff9ff297c3

+ 5 - 0
AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.FileListAbsolute.txt

@@ -62,3 +62,8 @@ C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\obj\Debug\AipGateway.Viewer.csp
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\obj\Debug\AipGateway.Viewer.exe
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\obj\Debug\AipGateway.Viewer.pdb
 C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\bin\Debug\System.Configuration.ConfigurationManager.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\bin\Debug\Microsoft.Identity.Client.Extensions.Msal.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\bin\Debug\System.IO.FileSystem.AccessControl.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\bin\Debug\System.Security.AccessControl.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\bin\Debug\System.Security.Cryptography.ProtectedData.dll
+C:\DEV\SOLUTION\IIS\AipGateway\AipGateway.Viewer\bin\Debug\System.Security.Principal.Windows.dll

BIN=BIN
AipGateway.Viewer/obj/Debug/AipGateway.Viewer.csproj.GenerateResource.cache


+ 2 - 1
AipGateway.Viewer/obj/Debug/AipGateway.Viewer.exe.config

@@ -13,7 +13,8 @@
     <add key="aip:Domain" value="AIP.SPA.Files" />
     <add key="aip:EMail" value="SeungHo@kangfamily.site" />
     <add key="aip:SecretValue" value="CvW8Q~0iANtLN1Y2EXR_nVyYb_tQTDwjW-Z7Ndg3" />
-    <add key="aip:CertThumbPrint" value="" />
+    <add key="aip:CertThumbPrint" value="C:\DEV\SOLUTION\IIS\OpenSSL\ssl\server.pem" />
+    <!-- <add key="aip:CertThumbPrint" value="E04AE4115B2810C204BE4E783DE3DCFC85D70C08"/> -->
   </appSettings>
   <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

BIN=BIN
AipGateway.Viewer/obj/Debug/AipGateway.Viewer.pdb


+ 514 - 0
AipGateway.Viewer/obj/project.assets.json

@@ -28,6 +28,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -89,6 +103,28 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -132,11 +168,71 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.AccessControl.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtimeTargets": {
+          "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": {
+            "assetType": "runtime",
+            "rid": "win"
+          }
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -174,6 +270,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -235,6 +345,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -278,11 +404,53 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": {}
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -320,6 +488,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -381,6 +563,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -424,11 +622,53 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -466,6 +706,20 @@
           "lib/net462/Microsoft.Identity.Client.dll": {}
         }
       },
+      "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.Identity.Client": "4.60.3",
+          "System.IO.FileSystem.AccessControl": "5.0.0",
+          "System.Security.Cryptography.ProtectedData": "4.5.0"
+        },
+        "compile": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll": {}
+        }
+      },
       "Microsoft.IdentityModel.Abstractions/6.35.0": {
         "type": "package",
         "compile": {
@@ -527,6 +781,22 @@
           "lib/net461/System.Diagnostics.DiagnosticSource.dll": {}
         }
       },
+      "System.IO.FileSystem.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.AccessControl": "5.0.0",
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.IO.FileSystem.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.IO.FileSystem.AccessControl.dll": {}
+        }
+      },
       "System.Memory/4.5.4": {
         "type": "package",
         "dependencies": {
@@ -570,11 +840,53 @@
           "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {}
         }
       },
+      "System.Security.AccessControl/5.0.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Security.Principal.Windows": "5.0.0"
+        },
+        "frameworkAssemblies": [
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.AccessControl.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.AccessControl.dll": {}
+        }
+      },
+      "System.Security.Cryptography.ProtectedData/4.5.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System.Security",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Cryptography.ProtectedData.dll": {}
+        }
+      },
+      "System.Security.Principal.Windows/5.0.0": {
+        "type": "package",
+        "frameworkAssemblies": [
+          "System",
+          "mscorlib"
+        ],
+        "compile": {
+          "ref/net461/System.Security.Principal.Windows.dll": {}
+        },
+        "runtime": {
+          "lib/net461/System.Security.Principal.Windows.dll": {}
+        }
+      },
       "AipGateway.AIP/1.0.0": {
         "type": "project",
         "framework": ".NETFramework,Version=v4.8",
         "dependencies": {
           "Microsoft.Identity.Client": "4.60.3",
+          "Microsoft.Identity.Client.Extensions.Msal": "4.60.3",
           "Microsoft.InformationProtection.File": "1.14.128"
         },
         "compile": {
@@ -618,6 +930,21 @@
         "microsoft.identity.client.nuspec"
       ]
     },
+    "Microsoft.Identity.Client.Extensions.Msal/4.60.3": {
+      "sha512": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==",
+      "type": "package",
+      "path": "microsoft.identity.client.extensions.msal/4.60.3",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "lib/net6.0/Microsoft.Identity.Client.Extensions.Msal.dll",
+        "lib/net6.0/Microsoft.Identity.Client.Extensions.Msal.xml",
+        "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.dll",
+        "lib/netstandard2.0/Microsoft.Identity.Client.Extensions.Msal.xml",
+        "microsoft.identity.client.extensions.msal.4.60.3.nupkg.sha512",
+        "microsoft.identity.client.extensions.msal.nuspec"
+      ]
+    },
     "Microsoft.IdentityModel.Abstractions/6.35.0": {
       "sha512": "xuR8E4Rd96M41CnUSCiOJ2DBh+z+zQSmyrYHdYhD6K4fXBcQGVnRCFQ0efROUYpP+p0zC1BLKr0JRpVuujTZSg==",
       "type": "package",
@@ -1003,6 +1330,50 @@
         "useSharedDesignerContext.txt"
       ]
     },
+    "System.IO.FileSystem.AccessControl/5.0.0": {
+      "sha512": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
+      "type": "package",
+      "path": "system.io.filesystem.accesscontrol/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.IO.FileSystem.AccessControl.dll",
+        "lib/net461/System.IO.FileSystem.AccessControl.dll",
+        "lib/net461/System.IO.FileSystem.AccessControl.xml",
+        "lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "ref/net46/System.IO.FileSystem.AccessControl.dll",
+        "ref/net461/System.IO.FileSystem.AccessControl.dll",
+        "ref/net461/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "ref/netstandard1.3/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/de/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/es/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/fr/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/it/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ja/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ko/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/ru/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/zh-hans/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard1.3/zh-hant/System.IO.FileSystem.AccessControl.xml",
+        "ref/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "ref/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "runtimes/win/lib/net46/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/net461/System.IO.FileSystem.AccessControl.xml",
+        "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.dll",
+        "runtimes/win/lib/netstandard2.0/System.IO.FileSystem.AccessControl.xml",
+        "system.io.filesystem.accesscontrol.5.0.0.nupkg.sha512",
+        "system.io.filesystem.accesscontrol.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
     "System.Memory/4.5.4": {
       "sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
       "type": "package",
@@ -1098,6 +1469,149 @@
         "useSharedDesignerContext.txt"
       ]
     },
+    "System.Security.AccessControl/5.0.0": {
+      "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+      "type": "package",
+      "path": "system.security.accesscontrol/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.Security.AccessControl.dll",
+        "lib/net461/System.Security.AccessControl.dll",
+        "lib/net461/System.Security.AccessControl.xml",
+        "lib/netstandard1.3/System.Security.AccessControl.dll",
+        "lib/netstandard2.0/System.Security.AccessControl.dll",
+        "lib/netstandard2.0/System.Security.AccessControl.xml",
+        "lib/uap10.0.16299/_._",
+        "ref/net46/System.Security.AccessControl.dll",
+        "ref/net461/System.Security.AccessControl.dll",
+        "ref/net461/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/System.Security.AccessControl.dll",
+        "ref/netstandard1.3/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/de/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/es/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/fr/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/it/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ja/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ko/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/ru/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
+        "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
+        "ref/netstandard2.0/System.Security.AccessControl.dll",
+        "ref/netstandard2.0/System.Security.AccessControl.xml",
+        "ref/uap10.0.16299/_._",
+        "runtimes/win/lib/net46/System.Security.AccessControl.dll",
+        "runtimes/win/lib/net461/System.Security.AccessControl.dll",
+        "runtimes/win/lib/net461/System.Security.AccessControl.xml",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
+        "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
+        "runtimes/win/lib/uap10.0.16299/_._",
+        "system.security.accesscontrol.5.0.0.nupkg.sha512",
+        "system.security.accesscontrol.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
+    "System.Security.Cryptography.ProtectedData/4.5.0": {
+      "sha512": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==",
+      "type": "package",
+      "path": "system.security.cryptography.protecteddata/4.5.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Security.Cryptography.ProtectedData.dll",
+        "lib/net461/System.Security.Cryptography.ProtectedData.dll",
+        "lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Security.Cryptography.ProtectedData.dll",
+        "ref/net461/System.Security.Cryptography.ProtectedData.dll",
+        "ref/net461/System.Security.Cryptography.ProtectedData.xml",
+        "ref/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.xml",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "runtimes/win/lib/net46/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
+        "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
+        "system.security.cryptography.protecteddata.4.5.0.nupkg.sha512",
+        "system.security.cryptography.protecteddata.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
+    "System.Security.Principal.Windows/5.0.0": {
+      "sha512": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+      "type": "package",
+      "path": "system.security.principal.windows/5.0.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net46/System.Security.Principal.Windows.dll",
+        "lib/net461/System.Security.Principal.Windows.dll",
+        "lib/net461/System.Security.Principal.Windows.xml",
+        "lib/netstandard1.3/System.Security.Principal.Windows.dll",
+        "lib/netstandard2.0/System.Security.Principal.Windows.dll",
+        "lib/netstandard2.0/System.Security.Principal.Windows.xml",
+        "lib/uap10.0.16299/_._",
+        "ref/net46/System.Security.Principal.Windows.dll",
+        "ref/net461/System.Security.Principal.Windows.dll",
+        "ref/net461/System.Security.Principal.Windows.xml",
+        "ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
+        "ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/System.Security.Principal.Windows.dll",
+        "ref/netstandard1.3/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
+        "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
+        "ref/netstandard2.0/System.Security.Principal.Windows.dll",
+        "ref/netstandard2.0/System.Security.Principal.Windows.xml",
+        "ref/uap10.0.16299/_._",
+        "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+        "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+        "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+        "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+        "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
+        "runtimes/win/lib/uap10.0.16299/_._",
+        "system.security.principal.windows.5.0.0.nupkg.sha512",
+        "system.security.principal.windows.nuspec",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
     "AipGateway.AIP/1.0.0": {
       "type": "project",
       "path": "../AipGateway.AIP/AipGateway.AIP.csproj",

+ 7 - 2
AipGateway.Viewer/obj/project.nuget.cache

@@ -1,18 +1,23 @@
 {
   "version": 2,
-  "dgSpecHash": "8c+nCfAxRt34TQKThFhmrHKl7Y4lCymZyPGAJzyWELRbpT4oai9QsxDHbge0pI1k8EiGubB7i+KkZlMNFV8fHg==",
+  "dgSpecHash": "Dt9Q9rFRQKHMLn0veKvJHrt0Z3llPx/v1Rh0OdCoxHR0nTORjXZudZePL0GSsAJAArxzFOuNBfb81B8ncsTRdQ==",
   "success": true,
   "projectFilePath": "C:\\DEV\\SOLUTION\\IIS\\AipGateway\\AipGateway.Viewer\\AipGateway.Viewer.csproj",
   "expectedPackageFiles": [
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identity.client\\4.60.3\\microsoft.identity.client.4.60.3.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identity.client.extensions.msal\\4.60.3\\microsoft.identity.client.extensions.msal.4.60.3.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.identitymodel.abstractions\\6.35.0\\microsoft.identitymodel.abstractions.6.35.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\microsoft.informationprotection.file\\1.14.128\\microsoft.informationprotection.file.1.14.128.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.configuration.configurationmanager\\8.0.0\\system.configuration.configurationmanager.8.0.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.diagnostics.diagnosticsource\\6.0.1\\system.diagnostics.diagnosticsource.6.0.1.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.io.filesystem.accesscontrol\\5.0.0\\system.io.filesystem.accesscontrol.5.0.0.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
     "C:\\Users\\OpenValue\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
-    "C:\\Users\\OpenValue\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.cryptography.protecteddata\\4.5.0\\system.security.cryptography.protecteddata.4.5.0.nupkg.sha512",
+    "C:\\Users\\OpenValue\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512"
   ],
   "logs": []
 }

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio