Правильный способ ввода токена носителя в httpclient с использованием IOC - PullRequest
0 голосов
/ 19 января 2020

В нашем веб-приложении. NET 4.72 я пытаюсь выяснить, правильно ли мы добавляем токены Bearer.

  • Мы используем Microsoft.Extensions.DependencyInjection v. 2.1.1

  • Жетоны доступа хранятся в ClaimsPrincipal

Так мы в настоящее время настраиваем httpclient и одну из служб, использующих его. :

public void Configure(IServiceCollection serviceCollection)
{
    serviceCollection.AddHttpClient<AccountService>(client =>
        {
            client.BaseAddress = new Uri(ShopConfiguration.AccountBalanceServiceUrl);

            string token = GetTokenFromClaims();
            if (!string.IsNullOrEmpty(token))
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
            }
        });
}

private string GetTokenFromClaims()
{
    Claim token = ClaimsPrincipal.Current.FindFirst(claim => claim.Type == Authentication.Constants.Claims.ApiAccessToken);
    return token == null ? string.Empty : token.Value;
}

Я хочу убедиться, что каждый раз, когда новый пользователь потребляет AccountService, это будет токен того пользователя, который используется в httpclient.

Это правильный способ добавить токен на предъявителя в HttpClient?

...