Blazor Client Side аутентификация JWT или куки - PullRequest
1 голос
/ 15 июня 2019

Итак, я экспериментирую с блазором на стороне клиента и пытаюсь найти правильную реализацию для аутентификации JWT или Cookie. Предположим, у меня есть служба, которая обслуживает токены и обновляет токен на стороне клиента. У меня будет несколько API-сервисов, которым потребуется использовать этот токен или файлы cookie для создания запросов API.

Итак, насколько я понимаю, мне нужно будет реализовать классы API-сервисов так же, как это описано здесь https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

Таким образом, чтобы иметь согласованное состояние аутентификации, должна быть введена служба аутентификации и внедрена в классы сервиса API. Эта служба будет отвечать за выполнение аутентификации, получение исходного токена и обновление токена при необходимости.

Итак, в последнем выпуске Blazor появился этот новый компонент под названием AuthenticationStateProvider, его использование кажется очевидным, но вопрос в том, будет ли правильный подход использовать его в качестве глобальной службы аутентификации?

Ответы [ 2 ]

1 голос
/ 16 июня 2019

При использовании JWT на незащищенных клиентах, таких как SPA, использование обновленных токенов является плохой практикой, поскольку они должны быть приватными.

Текущая рекомендация OIDC (для SPA) - реализовать стратегию предоставления кода аутентификации.

Я бы порекомендовал вам взглянуть на библиотеку Blazor-Auth0 (автор здесь), она реализует стратегию предоставления кода аутентификации, выделенную черным цветом на Auth0, поэтому вам не нужно заново изобретать колесо (и это бесплатно).

Даже если вы не хотите добавлять новую зависимость, вы найдете ее хорошим источником примеров того, как реализовать аутентификацию и авторизацию JWT в Blazor.

https://github.com/Pegazux/Blazor.Auth0

1 голос
/ 15 июня 2019

Таким образом, HttpClientFactory не поддерживается на клиенте. В клиентской части Blazor HttpClient добавляется в систему DI, и вы можете внедрить его в свои компоненты или классы.

То есть вы хотите использовать AuthenticationStateProvider в качестве службы глобальной аутентификации? Я не знаком с этим компонентом, но боюсь, что после прочтения вашего вопроса после прочтения вашего вопроса, это не система аутентификации, а инструмент для предоставления информации о состоянии аутентификации, такой как возраст пользователя и т. Д. Вам все еще нужно настроить промежуточное ПО Jwt, создать контроллер, отвечающий за выдачу токена Jwt, и так далее. И я предполагаю, что вы можете использовать AuthenticationStateProvider, чтобы предоставить клиентскому приложению состояние аутентификации до того, как пользователь, скажем, войдет в систему и после, и т. Д. Я надеюсь, что я не ошибаюсь, по крайней мере, не полностью.

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...