Как создать единый 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