Я собираюсь приступить к созданию новой онлайн-системы с помощью Blazor Webassembly (net 6.0), которая потребует от пользователей входа в систему, прежде чем они смогут использовать какие-либо функции.
В настоящее время я пытаюсь выбрать лучший подход к аутентификации и авторизации. Раньше при настройке нового проекта Blazor я использовал встроенную аутентификацию, выбирая параметр «Индивидуальные учетные записи пользователей», а затем формировал страницы бритвы в серверном проекте. Мне нравится этот вариант, потому что он использует IdentityServer, и мне кажется, что это более безопасный вариант, поскольку я, конечно, не эксперт по безопасности. Однако, как часть этой новой системы, некоторые пользователи должны будут иметь возможность администрировать других пользователей в своей собственной компании, и я действительно не хочу отправлять их на страницы бритвы, чтобы сделать это, поскольку я использую компонент библиотека (Radzen) на стороне клиента, и внешний вид будет несовместимым между клиентом и сервером.
Я нашел отличный учебник от Chris Sainty, который позволит мне самостоятельно настроить аутентификацию и авторизацию, но у меня есть сомнения относительно того, будет ли он достаточно безопасным, если я пойду по этому пути.
Я предполагаю, что у меня есть вопросы, которые помогут мне принять решение в любом случае:
Спасибо.
Я бы посмотрел это, прежде чем делать что-то еще blog.jetbrains.com/dotnet/2022/04/25/…
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?
many thanks for your advice.
Это не совет. Это ответ на ваш вопрос, и к нему следует относиться так... за него проголосовали, приняли и т. д. difficult to emulate them.
В этом случае я считаю, что лучшим решением будет встроить их на страницы вашего приложения Razor Pages. Я не знаком с какими-либо руководствами по этому поводу, кроме тех, что из документации (docs.microsoft.com/en-us/aspnet/core/blazor/components/…).
Обратите внимание, что это может потребовать некоторых усилий и времени с вашей стороны, поэтому подумайте, стоит ли это затраченных усилий (рентабельно). Лично я приложу для этого все усилия. Вы можете написать мне по электронной почте, если хотите, чтобы я отправил вам простой код для внедрения компонента Razor на страницу Razor Pages.
Вы не должны управлять пользователями в приложении Blazor Web Assembly. Это небезопасно — все ваше приложение загружается в браузер, и любой человек, обладающий небольшими знаниями, может разобрать ваш код. Я предполагаю, что лучшим решением является создание отдельной системы управления пользователями в виде серверного приложения Blazor. Затем вы можете использовать библиотеку Radzen для поддержки UX. Вы можете размещать сервер и приложения WASM рядом друг с другом — см. статью — codeproject.com/Articles/5299017/…