Как использовать проверку подлинности Windows с библиотекой Flurl? - PullRequest
0 голосов
/ 15 сентября 2018

Flurl имеет методы для проверки подлинности OAuth и Basic:

await url.WithBasicAuth("username", "password").GetJsonAsync();
await url.WithOAuthBearerToken("mytoken").GetJsonAsync();

но как мне выполнить проверку подлинности Windows, используя текущего пользователя? HttpClientHandler, поверх которого построен Flurl, имеет свойство UseDefaultCredentials, но я не знаю, как его использовать в Flurl.

var httpClient = new HttpClient(new HttpClientHandler() 
{
    UseDefaultCredentials = true
});

1 Ответ

0 голосов
/ 15 сентября 2018

Flurl разумно использует HttpClientHandler для каждого домена, поэтому вы не хотите устанавливать UseDefaultCredentials при каждом запуске. Вместо этого вы можете изменить HttpClientFactory, чтобы он возвращал тот, который настроен для использования UseDefaultCredentials.

public class UseDefaultCredentialsClientFactory : DefaultHttpClientFactory
{
    public override HttpMessageHandler CreateMessageHandler()
    {
        return new HttpClientHandler { UseDefaultCredentials = true };
    }
} 

Затем необходимо указать Flurl использовать эту фабрику для доменов, для которых вы хотите использовать проверку подлинности Windows.

public static class FlurlConfiguration
{
    public static void ConfigureDomainForDefaultCredentials(string url)
    {
        FlurlHttp.ConfigureClient(url, cli =>
            cli.Settings.HttpClientFactory = new UseDefaultCredentialsClientFactory());
    }
}

Тогда вам просто нужно вызвать это один раз при запуске для каждого домена. Для ASP.NET хорошим выбором будет метод Application_Start в вашем глобальном классе приложений.

FlurlConfiguration.ConfigureDomainForDefaultCredentials("https://example.com");
FlurlConfiguration.ConfigureDomainForDefaultCredentials("http://services.example.com");

Благодарность достается Тодду Меньеру за объяснение мне .

...