/// <summary> /// Creates an IFileProfile and returns. /// IFileProfile is the root of all MIP SDK File API operations. Typically only one should be created per app. /// </summary> /// <param name="appInfo"></param> /// <param name="authDelegate"></param> /// <returns></returns> private IPolicyProfile CreatePolicyProfile(ApplicationInfo appInfo, ref AuthDelegateImplementation authDelegate) { // Initialize MipContext mipContext = MIP.CreateMipContext(appInfo, "mip_data", LogLevel.Trace, null, null); // Initialize file profile settings to create/use local state. var profileSettings = new PolicyProfileSettings(mipContext, CacheStorageType.OnDiskEncrypted); // Use MIP.LoadFileProfileAsync() providing settings to create IFileProfile. // IFileProfile is the root of all SDK operations for a given application. var profile = Task.Run(async() => await MIP.LoadPolicyProfileAsync(profileSettings)).Result; return(profile); }
// Use Execution State to compute policy actions /// <summary> /// Constructor for Action class. Pass in AppInfo to simplify passing settings to AuthDelegate. /// </summary> /// <param name="appInfo"></param> public Action(ApplicationInfo appInfo) { this.appInfo = appInfo; // Initialize AuthDelegateImplementation using AppInfo. authDelegate = new AuthDelegateImplementation(this.appInfo); // Initialize SDK DLLs. If DLLs are missing or wrong type, this will throw an exception MIP.Initialize(MipComponent.Policy); // This method in AuthDelegateImplementation triggers auth against Graph so that we can get the user ID. var id = authDelegate.GetUserIdentity(); // Create profile. profile = CreatePolicyProfile(appInfo, ref authDelegate); // Create engine providing Identity from authDelegate to assist with service discovery. engine = CreatePolicyEngine(id); }