Рекомендации по проверке подлинности и авторизации в Blazor Webassembly

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

В настоящее время я пытаюсь выбрать лучший подход к аутентификации и авторизации. Раньше при настройке нового проекта Blazor я использовал встроенную аутентификацию, выбирая параметр «Индивидуальные учетные записи пользователей», а затем формировал страницы бритвы в серверном проекте. Мне нравится этот вариант, потому что он использует IdentityServer, и мне кажется, что это более безопасный вариант, поскольку я, конечно, не эксперт по безопасности. Однако, как часть этой новой системы, некоторые пользователи должны будут иметь возможность администрировать других пользователей в своей собственной компании, и я действительно не хочу отправлять их на страницы бритвы, чтобы сделать это, поскольку я использую компонент библиотека (Radzen) на стороне клиента, и внешний вид будет несовместимым между клиентом и сервером.

Я нашел отличный учебник от Chris Sainty, который позволит мне самостоятельно настроить аутентификацию и авторизацию, но у меня есть сомнения относительно того, будет ли он достаточно безопасным, если я пойду по этому пути.

Я предполагаю, что у меня есть вопросы, которые помогут мне принять решение в любом случае:

  1. Можно ли использовать библиотеки компонентов Blazor, такие как Radzen, в размещенном проекте ASP.NET Core?
  2. Если нет, возможно ли создать страницы управления пользователями на стороне клиента с помощью компонентов Razor и каким-то образом заставить их взаимодействовать с настроенной серверной частью? Мне понадобятся пользователи-администраторы, чтобы иметь возможность создавать, обновлять и удалять пользователей.
  3. Наконец, если два приведенных выше варианта невозможны, есть ли что-то особенное, что мне нужно учитывать при самостоятельной настройке аутентификации и авторизации, чтобы убедиться, что система максимально безопасна?

Спасибо.

Вы не должны управлять пользователями в приложении Blazor Web Assembly. Это небезопасно — все ваше приложение загружается в браузер, и любой человек, обладающий небольшими знаниями, может разобрать ваш код. Я предполагаю, что лучшим решением является создание отдельной системы управления пользователями в виде серверного приложения Blazor. Затем вы можете использовать библиотеку Radzen для поддержки UX. Вы можете размещать сервер и приложения WASM рядом друг с другом — см. статью — codeproject.com/Articles/5299017/…

MrC aka Shaun Curtis 10.05.2022 16:23

Я бы посмотрел это, прежде чем делать что-то еще blog.jetbrains.com/dotnet/2022/04/25/…

Tore Nestenius 12.05.2022 08:51
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Is it possible to use Blazor component libraries like Radzen on the ASP.NET Core hosted project?

Да, вы можете встраивать компоненты Razor в страницы Razor Pages.

is it possible to create user management pages client

Да, это так... Но тогда любые меры безопасности, предпринятые вами, становятся бесполезными. Никогда не делайте этого. Вместо этого создайте страницы управления пользователями в проекте Asp.Net Core Server (размещенном, верно?) и направляйте пользователей на эти страницы со страниц Blazor. Вы можете встраивать компоненты Radzen (компоненты Razor) на эти страницы.

Finally if the two options above aren't possible, is there anything in particular that I need to be considering when setting up authentication and authorisation myself to make sure that the system is as secure as possible?

Я бы не рекомендовал выбирать этот путь. Это сложно, опасно и неэффективно. Используйте существующие системы.

Насколько я понимаю, ваша проблема связана с внешним видом пользовательского интерфейса, верно? В этом случае вы можете замаскировать такие страницы, как Login.cshtml, и придать им вид компонента Radzen. Несложно заставить пользователя поверить, что он просматривает тот же веб-сайт. Это то, как я рекомендую это сделать. Или вставьте компоненты Radzen на эти страницы и заставьте их взаимодействовать друг с другом.

Простой пример

Предположим, вы хотите, чтобы файл Login.cshtml выглядел так, как будто это компонент Radzen, а пакет Radzen содержит компонент входа (я не знаком с этими библиотеками). В этом случае вы должны сначала создать шаблон страницы Login.cshtml и либо встроить компонент входа Radzen в страницу Login Razor Pages, которую вы только что создали, либо, что должно быть намного проще, просто скопировать CSS, используемый в Radzen. Компонент входа в систему и используйте его на созданной шаблоном странице входа.

Привет, большое спасибо за ваш совет. Это определенно внешний вид пользовательского интерфейса, который заставляет меня остановиться. Я буду активно использовать сетки данных и раскрывающиеся списки Radzen на клиентской стороне проекта, и в идеале я также смогу использовать эту серверную часть (да, это ASP.NET Core) для управления пользователями. Эти компоненты довольно многофункциональны, поэтому я думаю, что их будет сложно эмулировать. Знаете ли вы какие-нибудь хорошие учебные пособия, которые могли бы помочь мне вместо этого встроить их в страницы Razor?

Hannah Hayes 11.05.2022 10:55
many thanks for your advice. Это не совет. Это ответ на ваш вопрос, и к нему следует относиться так... за него проголосовали, приняли и т. д. difficult to emulate them. В этом случае я считаю, что лучшим решением будет встроить их на страницы вашего приложения Razor Pages. Я не знаком с какими-либо руководствами по этому поводу, кроме тех, что из документации (docs.microsoft.com/en-us/aspnet/core/blazor/components/…).
enet 11.05.2022 13:37

Обратите внимание, что это может потребовать некоторых усилий и времени с вашей стороны, поэтому подумайте, стоит ли это затраченных усилий (рентабельно). Лично я приложу для этого все усилия. Вы можете написать мне по электронной почте, если хотите, чтобы я отправил вам простой код для внедрения компонента Razor на страницу Razor Pages.

enet 11.05.2022 13:37

Другие вопросы по теме