public static AuthenticationParameters CreateFromResponseAuthenticateHeader(string authenticateHeader)
{
if (string.IsNullOrWhiteSpace(authenticateHeader))
{
throw new ArgumentNullException("authenticateHeader");
}
authenticateHeader = authenticateHeader.Trim();
// This also checks for cases like "BearerXXXX authorization_uri=...." and "Bearer" and "Bearer "
if (!authenticateHeader.StartsWith(Bearer, StringComparison.OrdinalIgnoreCase)
|| authenticateHeader.Length < Bearer.Length + 2
|| !char.IsWhiteSpace(authenticateHeader[Bearer.Length]))
{
var ex = new ArgumentException(MsalErrorMessage.InvalidAuthenticateHeaderFormat, "authenticateHeader");
PlatformPlugin.Logger.Error(null, ex);
throw ex;
}
authenticateHeader = authenticateHeader.Substring(Bearer.Length).Trim();
Dictionary<string, string> authenticateHeaderItems = EncodingHelper.ParseKeyValueList(authenticateHeader, ',', false, null);
var authParams = new AuthenticationParameters();
string param;
authenticateHeaderItems.TryGetValue(AuthorityKey, out param);
authParams.Authority = param;
authenticateHeaderItems.TryGetValue(ResourceKey, out param);
authParams.Resource = param;
return authParams;
}