Перейти к содержанию

Используем клиент на C# с JWT

Теперь давайте посмотрим, как нам передавать JWT в запросе от клиента на C#.
Прежде всего предлагается реализовать обработку ошибок аутентификации, то есть gRPC-статусов UNAUTHENTICATED и PERMISSIONDENIED — это будет полезно для отладки проблем с аутентификацией на клиентской стороне. Следующий пример показывает, как использовать токен и передавать его в в запрос, добавляя заголовок authorization со значением bearer {TOKEN}, а также демонстрирует блок try/catch с использованием нескольких catch when.

public async IAsyncEnumerable<CountryModel> GetAllAsync(string token)
{
    var list = new List<CountryModel>();
    try
    {
        var metadata = new Metadata();
        metadata.Add("authorization", $"bearer {token}");
        using var serverStreamingCall = _countryServiceClient.GetAll(new Empty(), metadata);
        while (await serverStreamingCall.ResponseStream.MoveNext(CancellationToken.None))
        {
            list.Add(serverStreamingCall.ResponseStream.Current.ToDomain());
        }
    }
    catch (RpcException ex) when (ex.StatusCode == StatusCode.Unauthenticated)
    {
        _logger.LogError(ex, "Token was missing or invalid");
    }
    catch (RpcException ex) when (ex.StatusCode == StatusCode.PermissionDenied)
    {
        _logger.LogError(ex, "Token was valid butt missed particular role");
    }
    catch (RpcException ex)
    {
        _logger.LogError(ex, "an error occured");
    }

    foreach (var country in list)
    {
        yield return country;
    }
}


Последнее обновление : 6 сентября 2023 г.
Дата создания : 6 сентября 2023 г.

Комментарии

Комментарии