private bool TryGetCacheValue(AuthorityInfo authorityInfo, string userPrincipalName, out AuthorityEndpoints endpoints) { endpoints = null; if (!s_endpointCacheEntries.TryGetValue(authorityInfo.CanonicalAuthority, out var cacheEntry)) { return(false); } if (authorityInfo.AuthorityType != AuthorityType.Adfs) { endpoints = cacheEntry.Endpoints; return(true); } if (!string.IsNullOrEmpty(userPrincipalName)) { if (!cacheEntry.ValidForDomainsList.Contains(AdfsUpnHelper.GetDomainFromUpn(userPrincipalName))) { return(false); } } endpoints = cacheEntry.Endpoints; return(true); }
private void Add(AuthorityInfo authorityInfo, string userPrincipalName, AuthorityEndpoints endpoints) { var updatedCacheEntry = new AuthorityEndpointCacheEntry(endpoints); if (authorityInfo.AuthorityType == AuthorityType.Adfs) { // Since we're here, we've made a call to the backend. We want to ensure we're caching // the latest values from the server. if (s_endpointCacheEntries.TryGetValue(authorityInfo.CanonicalAuthority, out var cacheEntry)) { foreach (string s in cacheEntry.ValidForDomainsList) { updatedCacheEntry.ValidForDomainsList.Add(s); } } updatedCacheEntry.ValidForDomainsList.Add(AdfsUpnHelper.GetDomainFromUpn(userPrincipalName)); } s_endpointCacheEntries.TryAdd(authorityInfo.CanonicalAuthority, updatedCacheEntry); }
private async Task <DrsMetadataResponse> GetMetadataFromEnrollmentServerAsync( string userPrincipalName, RequestContext requestContext) { try { // attempt to connect to on-premise enrollment server first. return(await QueryEnrollmentServerEndpointAsync( Constants.FormatEnterpriseRegistrationOnPremiseUri(AdfsUpnHelper.GetDomainFromUpn(userPrincipalName)), requestContext).ConfigureAwait(false)); } catch (Exception exc) { requestContext.Logger.InfoPiiWithPrefix( exc, "On-Premise ADFS enrollment server endpoint lookup failed. Error - "); } return(await QueryEnrollmentServerEndpointAsync( Constants.FormatEnterpriseRegistrationInternetUri(AdfsUpnHelper.GetDomainFromUpn(userPrincipalName)), requestContext).ConfigureAwait(false)); }