public async Task <AuthenticationResultEx> AcquireTokenUsingBroker(IDictionary <string, string> brokerPayload) { if (brokerPayload.ContainsKey("silent_broker_flow")) { throw new AdalSilentTokenAcquisitionException(); } brokerResponse = null; brokerResponseReady = new SemaphoreSlim(0); //call broker string base64EncodedString = Base64UrlEncoder.Encode(BrokerKeyHelper.GetRawBrokerKey()); brokerPayload["broker_key"] = base64EncodedString; brokerPayload["max_protocol_ver"] = "2"; if (brokerPayload.ContainsKey("claims")) { brokerPayload.Add("skip_cache", "YES"); string claims = EncodingHelper.UrlEncode(brokerPayload["claims"]); brokerPayload["claims"] = claims; } if (brokerPayload.ContainsKey("broker_install_url")) { string url = brokerPayload["broker_install_url"]; Uri uri = new Uri(url); string query = uri.Query; if (query.StartsWith("?", StringComparison.OrdinalIgnoreCase)) { query = query.Substring(1); } Dictionary <string, string> keyPair = EncodingHelper.ParseKeyValueList(query, '&', true, false, null); DispatchQueue.MainQueue.DispatchAsync(() => UIApplication.SharedApplication.OpenUrl(new NSUrl(keyPair["app_link"]))); throw new AdalException(AdalErrorIOSEx.BrokerApplicationRequired, AdalErrorMessageIOSEx.BrokerApplicationRequired); } else { NSUrl url = new NSUrl("msauth://broker?" + brokerPayload.ToQueryParameter()); DispatchQueue.MainQueue.DispatchAsync(() => UIApplication.SharedApplication.OpenUrl(url)); } await brokerResponseReady.WaitAsync().ConfigureAwait(false); PlatformParameters = null; return(ProcessBrokerResponse()); }
public override string ToString() { StringBuilder messageBuilder = new StringBuilder(); foreach (KeyValuePair <string, string> kvp in this) { EncodingHelper.AddKeyValueString(messageBuilder, EncodingHelper.UrlEncode(kvp.Key), EncodingHelper.UrlEncode(kvp.Value)); } if (this.ExtraQueryParameter != null) { messageBuilder.Append('&' + this.ExtraQueryParameter); } return(messageBuilder.ToString()); }
private StringBuilder ToStringBuilder() { StringBuilder messageBuilder = new StringBuilder(); if (this.stringBuilderParameter != null) { messageBuilder.Append(this.stringBuilderParameter); } foreach (KeyValuePair <string, string> kvp in this) { EncodingHelper.AddKeyValueString(messageBuilder, EncodingHelper.UrlEncode(kvp.Key), EncodingHelper.UrlEncode(kvp.Value)); } this.AddSecureParametersToMessageBuilder(messageBuilder); if (this.ExtraQueryParameter != null) { messageBuilder.Append('&' + this.ExtraQueryParameter); } return(messageBuilder); }