Как создать единый identity server для web api и Blazor web assembly

Развернул проект Blazor web assembly с ипользованием стандартной реализации identety server, как передать данные о пользователе в web api, не требуя повторно вводить логин и пароль, т.е использовать те claims которые выдает identetyServer. Если в веб апи обратиться к User.Identity.Name то он окажется пустым. получилось насторить так же как в этой статье IdentityServer4 in ASP.NET Core, но он передает на сервер только идентификатор клиента, а передать пользователя этим способом не удается. Код который генерирует токен для доступа к вебапи

public class TokenService : ITokenService
{
    private DiscoveryDocumentResponse _discDocument { get; set; }
    public TokenService()
    {
        
    }
    public async Task<TokenResponse> GetToken(string scope)
    {
        using (var client = new HttpClient())
        {
            _discDocument = await client.GetDiscoveryDocumentAsync("https://localhost:7245/.well-known/openid-configuration");
        }
        using (var client = new HttpClient())
        {
            var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address = _discDocument.TokenEndpoint,
                ClientId = "cwm.client",
                Scope = scope,
                ClientSecret = "secret",
            // сюда хочу как нибудь добавить claim который содержит username
            });
            if (tokenResponse.IsError)
            {
                throw new Exception("Token Error");
            }
            return tokenResponse;
        }
    }
}

Готов выслушать любые предложения которые помогут решить эту задачу Может быть есть какие то другие механизмы которые помогут идентифицировать пользователя в web api


Ответы (0 шт):