private static Assembly LoadAdalAssembly() { List <Assembly> list; lock (ASAzureUtility.GetAppDomainLock("MICROSOFT_ANALYSISSERVICES_XMLA_LIBS_ADAL_LOADING_LOCK")) { list = (List <Assembly>)AppDomain.CurrentDomain.GetData("MICROSOFT_ANALYSISSERVICES_XMLA_LIBS_LOADED_ADAL_ASSEMBLIES"); if (list != null) { list.ForEach(delegate(Assembly assembly) { AdalRuntimeLibrary.AdalAssembliesDictionary.Add(assembly.FullName, assembly); }); } else { list = new List <Assembly>(); string[] adalAssemblyNames = AdalRuntimeLibrary.AdalAssemblyNames; for (int i = 0; i < adalAssemblyNames.Length; i++) { string name = adalAssemblyNames[i]; Assembly assembly2 = AdalRuntimeLibrary.LoadAssemblyFromLocalResource(name); list.Add(assembly2); AdalRuntimeLibrary.AdalAssembliesDictionary.Add(assembly2.FullName, assembly2); } AppDomain.CurrentDomain.SetData("MICROSOFT_ANALYSISSERVICES_XMLA_LIBS_LOADED_ADAL_ASSEMBLIES", list); } } return(list.First <Assembly>()); }
private AdalRuntimeLibrary() { Assembly assembly = AdalRuntimeLibrary.LoadAdalAssembly(); this.LoadUserAuthTypes(assembly); this.LoadAuthenticationContextTypes(assembly); this.LoadTokenCacheTypes(assembly); }
private static Assembly LoadAssemblyFromLocalResource(string name) { Assembly result; using (Stream resourceAsStream = AdalRuntimeLibrary.GetResourceAsStream(name)) { byte[] array = new byte[resourceAsStream.Length]; resourceAsStream.Read(array, 0, array.Length); result = Assembly.Load(array); } return(result); }
private static object CreateAuthenticationContextWithCache(AadAuthParams authParams, string dataSource) { AdalRuntimeLibrary instance = AdalRuntimeLibrary.Instance; object obj = Activator.CreateInstance(instance.TokenCacheT); new AdalRuntimeLibrary.CacheLocalStorage(obj, dataSource); return(Activator.CreateInstance(instance.AuthenticationContextT, new object[] { authParams.Authority, obj })); }
internal static AadTokenHolder ReAcquireToken(string refreshToken, AadAuthParams authParams, string dataSource, bool useAdalCache) { AadTokenHolder result; using (new AdalRuntimeLibrary.Usage()) { AdalRuntimeLibrary instance = AdalRuntimeLibrary.Instance; object obj = useAdalCache ? AadAuthenticator.CreateAuthenticationContextWithCache(authParams, dataSource) : Activator.CreateInstance(instance.AuthenticationContextT, new object[] { authParams.Authority }); object obj2 = instance.AcquireTokenByRefreshTokenM.Invoke(obj, new string[] { refreshToken, authParams.ApplicationId }); result = new AadTokenHolder((string)instance.AccessTokenP.GetValue(obj2, null), (string)instance.RefreshTokenP.GetValue(obj2, null), (DateTimeOffset)instance.ExpiresOnP.GetValue(obj2, null), authParams, dataSource, useAdalCache); } return(result); }
private static bool TryToUpdateTenant(AadAuthParams authParams, object authContext, string userId, out AadAuthParams authParamsUpdated) { AdalRuntimeLibrary instance = AdalRuntimeLibrary.Instance; object value = instance.TokenCacheP.GetValue(authContext, null); foreach (object current in ((IEnumerable)instance.ReadItemsM.Invoke(value, null))) { string text = (string)instance.AuthorityP.GetValue(current, null); string b = (string)instance.ClientIdP.GetValue(current, null); string b2 = (string)instance.DisplayableIdP.GetValue(current, null); if (authParams.ApplicationId == b && AadAuthParams.IsSameInstance(authParams.Authority, text) && (userId == null || userId == b2)) { authParamsUpdated = new AadAuthParams { Authority = text, ApplicationId = authParams.ApplicationId, DomainPostfix = authParams.DomainPostfix }; return(true); } } authParamsUpdated = null; return(false); }
public void Dispose() { AdalRuntimeLibrary.AfterAdalUsage(); }
internal Usage() { AdalRuntimeLibrary.BeforeAdalUsage(); }
internal static AadTokenHolder AcquireToken(Uri dataSourceUri, string dataSource, string identityProvider, string userId, string password, bool useAdalCache) { if (userId == null && password != null) { return(new AadTokenHolder(password)); } AadAuthParams aadAuthParams = AadAuthParams.FindMatchingAuthParams(identityProvider, dataSourceUri); string text = string.Format("https://{0}", dataSourceUri.Host); AadTokenHolder result; using (new AdalRuntimeLibrary.Usage()) { AdalRuntimeLibrary instance = AdalRuntimeLibrary.Instance; object obj; if (useAdalCache) { obj = AadAuthenticator.CreateAuthenticationContextWithCache(aadAuthParams, dataSource); AadAuthParams aadAuthParams2; if (aadAuthParams.IsCommonTenant && AadAuthenticator.TryToUpdateTenant(aadAuthParams, obj, userId, out aadAuthParams2)) { aadAuthParams = aadAuthParams2; obj = AadAuthenticator.CreateAuthenticationContextWithCache(aadAuthParams, dataSource); } } else { obj = Activator.CreateInstance(instance.AuthenticationContextT, new object[] { aadAuthParams.Authority }); } object obj3; if (userId != null && password != null) { object obj2 = Activator.CreateInstance(instance.UserCredentialT, new object[] { userId, password }); obj3 = instance.AcquireTokenCredentialsM.Invoke(obj, new object[] { text, aadAuthParams.ApplicationId, obj2 }); } else if (userId != null) { object obj4 = Activator.CreateInstance(instance.UserIdentifierT, new object[] { userId, instance.OptionalDisplayableIdV }); obj3 = instance.AcquireTokenUserIdM.Invoke(obj, new object[] { text, aadAuthParams.ApplicationId, AadAuthenticator.RedirectUri, instance.PromptBehaviorAutoV, obj4 }); } else { obj3 = instance.AcquireTokenM.Invoke(obj, new object[] { text, aadAuthParams.ApplicationId, AadAuthenticator.RedirectUri, instance.PromptBehaviorAutoV }); } result = new AadTokenHolder((string)instance.AccessTokenP.GetValue(obj3, null), (string)instance.RefreshTokenP.GetValue(obj3, null), (DateTimeOffset)instance.ExpiresOnP.GetValue(obj3, null), aadAuthParams, dataSource, useAdalCache); } return(result); }