IdentityServer4 - логин и регистрация пользователя

  Рет қаралды 16,758

Platinum DEV

Platinum DEV

Күн бұрын

Разработка ASP NET Core Web API с нуля профессионально. Видео 12. IdentityServer4 - логин и регистрация
Если хотите поддержать канал: pay.cloudtips....
Мы продолжаем работать с IdentityServer4 и сегодня доработаем наш сервер авторизации для нашего Web API и клиентов, которые будут этот Web API использовать. Мы добавим возможность регистрироваться и входить в систему.
Мы в Telegram: t.me/platinum_...
Чат для общения и вопросов: t.me/platinum_...
Код из видео: github.com/and...
Technology vector created by vectorjuice: www.freepik.co...

Пікірлер: 53
@yaroslav1441
@yaroslav1441 3 жыл бұрын
Возможно, что в следующих уроках уже поправили, но на всякий случай: в AuthController в get-методе Register должно быть return View(viewModel) вместо View(returnUrl).
@PlatinumTechTalks
@PlatinumTechTalks 3 жыл бұрын
спасибо большое за наблюдательность! да, к сожалению, пришлось исправить этот момент отдельно уже после записи.. в репозитории с кодом отдельным коммитом: github.com/andreisfedotov/Notes/commit/fbd18ed60d95e04956ec81313a06002913e2a6ce
@ciipher430
@ciipher430 Жыл бұрын
Очень объемное и познавательное видео. Странно что просмотров так мало. Один важный момент для тех кто будет делать подобный сервис. Делать 2 отдельных ошибки "User not found" и "Login error" -- плохая практика. Так злоумышленник может подобрать сначала Логин, а после пытаться к логину подобрать пароль (есть разные способы). Поэтому ошибка должна быть всегда одна: Login Error. Не давайте подсказки злоумышленникам :)
@mrlait5732
@mrlait5732 7 ай бұрын
В любом случае злоумышленник может просто начать регаться под разными логинами и подобрать логин который уже занят) Что в этом случае делать?
@ivanpebus6139
@ivanpebus6139 3 жыл бұрын
Дуже дякую.
@gennadiigorbunov1027
@gennadiigorbunov1027 3 жыл бұрын
Остался вопрос, я региструруюсь и вижу юзера в бд Auth, но вот как Notes.Backend поймет, что такой юзер есть и пустит к данным? или это вследующих сериях?)
@shyxiaolong
@shyxiaolong Жыл бұрын
Вообщем сгорем пополам, прикрутил я IdentityServer к бекенду через клиент, только вот как получить Guid ведь чтобы юзать наше приложение Identity должен получить свой Guid. сейчас я делаю через простые Credenteals и Jwt токен, подскажите как получить наш Guid
@BraentR
@BraentR 3 жыл бұрын
Спасибо
@qofi4922
@qofi4922 3 жыл бұрын
Большое спасибо за уроки, они очень информативны и полезны! В данном видео рассматривается разграничение доступа к "своим" объектам. Есть ли у вас идеи / подходы / шаблоны для системы, в которой пользователи могут давать доступ к своим файлам для других пользователей (на чтение / изменение) ?
@kokoshko1985
@kokoshko1985 2 жыл бұрын
А почему аттрибут [Authorize] вы ставите для каждого метода, а не на контроллере? Для этого какая то причина есть?
@PlatinumTechTalks
@PlatinumTechTalks 2 жыл бұрын
Нет, можно по-другому
@DenPoBlog
@DenPoBlog 2 жыл бұрын
Спасибо за видео. Но я так и не понял как зарегистрироваться и залогиниться. Я думал, что после перехода по адресу /api/note/ должно перекинуть на страницу логина IS. Но этого не произошло.
@PlatinumTechTalks
@PlatinumTechTalks 2 жыл бұрын
Автоматически переадресация не происходит. С тегом [Authorize] эндпоинт /api/note будет ждать токен доступа, иначе вернет 401. Переадресация настраивается отдельно в конфигурации
@nikolaifedorov685
@nikolaifedorov685 Жыл бұрын
@@PlatinumTechTalksты же сказал, что на это видео с аутентфикацией всё. Но не показал как она работает! Гениально! Хотя чего ждать. Валидацию сделали, а как работает снова не показал. Молодец, хули!
@deserof
@deserof 3 жыл бұрын
А как сделать редирект с api на identity server, если пользователь не авторизован?
@OlegTar
@OlegTar 3 жыл бұрын
автоматически должно
@PlatinumTechTalks
@PlatinumTechTalks 3 жыл бұрын
Для этого служит тэг [Authorize] в методах контроллера и добавление конфигурации в Startup классе. На основе этого Web API и IdentityServer будут понимать авторизован пользователь или нет. У клиента, которым пользуется пользователь также есть конфигурация, в которой указываются адреса перенаправления, в том числе и тот, куда надо идти для того чтобы авторизоваться. Про конфигурацию клиента будет рассказано в ближайших видео
@sau9703
@sau9703 2 жыл бұрын
в целом это не задача апи , ведь апи может вызывать и десктоп.клиент , по этому апи лишь возвращает код ошибки доступа . а уже клиент - будь то веб.браузер или десктоп app , решает что с этим делать.
@neliquidmusic
@neliquidmusic 2 жыл бұрын
Подскажите как можно это все запомнить? Объем инфы просто огромный.)
@PlatinumTechTalks
@PlatinumTechTalks 2 жыл бұрын
Постепенно, не за один раз) практикуясь)
@sergbo3114
@sergbo3114 Жыл бұрын
А еще не старайтесь запомнить все конструкции с настройками и остальные детали. Запоминайте принципы и логику работы. Детали вы всегда сможете найти в справочниках. Главное правильно запомнить что ты делаешь и зачем, а не как.
@АртемСлободенюк-е6д
@АртемСлободенюк-е6д 10 ай бұрын
А почему ViewModel , я вместо этого пишу DTO
@this_is_denys
@this_is_denys 2 жыл бұрын
Такой вопрос, делаю веб апи приложение интернет магазин по вашему шаблону, мне надо хранить информацию о клиентах в отдельной таблице, которая связана с таблицей заказов отношением один ко многим, но если логика аутентификации вынесена в отдельное решение и база данных юзеров там своя, собственно как и и в вашем видео, можно ли как-то связать две бд из разных решений, чтобы иметь доступ к информации о клиентах, то бишь юзерах из бд решения аутентификации, в самом веб апи магазина, или придется дублировать таблицу заказчиков в решении веб апи для этой цели? Мне сказали, что логичнее всего в таком случае будет дублировать таблицу заказчиков в бд самого магазина и хранить там айди юзеров из бд решения аутентификации, так ли это? Или может всё-таки есть какая-то возможность интегрировать две бд из разных решений? Или вообще может лучше в таком случае не разделять аутентификацию и само приложение магазина на разные решения, а делать всё в одном? Что вы можете сказать по этому поводу?
@this_is_denys
@this_is_denys 2 жыл бұрын
Появилось ещё предложение вынести контекст в отдельный проект и расшарить его между двумя решениями
@PlatinumTechTalks
@PlatinumTechTalks 2 жыл бұрын
Задача IdentityServer хранить информацию о пользователях и их ролях, всё то, что относится к аутентификации и авторизации. знать что-либо о бизнес логике ему не нужно, то есть о товарах или для чего бы он не использовался. веб апи может у себя хранить ту информацию о пользователях которая ему необходима. общими у обоих решений будут идентификаторы пользователей, остальное разное - у айдентити это роли, у веб апи например информация о товарах. в веб апи проекте инфо о пользователе можно брать из токена при оформлении товара и тд.
@this_is_denys
@this_is_denys 2 жыл бұрын
@@PlatinumTechTalks Понял, спасибо вам большое за развернутый ответ!
@egorkaras8947
@egorkaras8947 2 жыл бұрын
Не знаю, что сделал не так, но когда перехожу по /api/note? выдаёт ошибку {"error":"No authenticationScheme was specified, and there was no DefaultChallengeScheme found. The default schemes can be set using either AddAuthentication(string defaultScheme) or AddAuthentication(Action\u003CAuthenticationOptions\u003E configureOptions)."}
@deathfox2955
@deathfox2955 2 ай бұрын
@egorkaras8947 У меня такая же ошибка, если вы вдруг разобрались, можете описать как в двух словах
@danielmentjak1278
@danielmentjak1278 2 жыл бұрын
Всем привет. Вопрос, при Login или Register в ReturnUrl всегда null. Проверяю и Get запросы и Post . В базу запись упала, спустя несколько попыток, но тот же Login не срабатывает, так как ModelState Invalid, потому что ReturnUrl - Required, но содержит null. В чем может быть причина? Благодарю за ответ
@PlatinumTechTalks
@PlatinumTechTalks 2 жыл бұрын
убрать Required github.com/andreisfedotov/Notes/blob/main/Notes.Identity/Notes.Identity/Models/LoginViewModel.cs
@ByMyKolaps
@ByMyKolaps Жыл бұрын
Как я понял, это происходит из-за того, что в новых версиях .Net появились nullable-типы и в нашем LoginViewModel поле ReturnUrl не помечено как nullable-тип. Похоже, что это автоматически учитывается и даже если поле не помечено атрибутом Required (то есть по сути не является обязательным), то в любом случае значение null для этого поля будет восприниматься как ошибка. Я решил эту проблему, сделав поле ReturnUrl nullable-типом (пометил как string?). Либо же можно отключить nullable-типы в свойствах проекта.
@edge-of-the-world
@edge-of-the-world 3 жыл бұрын
У меня почему-то после _signInManager.SignOutAsync() не происходит разлогин пользователя и logoutRequest.PostLogoutRedirectUri всегда равен null. В чем тут может быть проблема?
@edge-of-the-world
@edge-of-the-world 3 жыл бұрын
Решил проблему. Оказалось, что Microsoft.AspNetCore.ApiAuthorization.IdentityServer конфликтует с их собственным System.Text.Json (-_-)
@PlatinumTechTalks
@PlatinumTechTalks 3 жыл бұрын
рады, что получилось решить проблему! извините за поздний ответ =)
@bek15071991
@bek15071991 3 жыл бұрын
А как сделать если авторизация через реакт?
@PlatinumTechTalks
@PlatinumTechTalks 3 жыл бұрын
Авторизация через реакт - это что вы имеете в виду? Авторизует делать что-то сервер, а не клиент, чем являются реакт приложения. О том как через реакт приложение пройти аутентификацию через IdentityServer будет показано в ближайших видео
@bek15071991
@bek15071991 3 жыл бұрын
@@PlatinumTechTalks , имею в ввиду когда страница авторизации(логин,пароль) реализована на реакте
@PlatinumTechTalks
@PlatinumTechTalks 3 жыл бұрын
вероятно, для этого стоит посмотреть авторитетные в этой теме источники... но что касается IdentityServer'а то его идея заключается в том, чтобы хранить всё что относится к авторизации у себя, включая страницы входа
@МихаилИванов-м2э
@МихаилИванов-м2э 3 жыл бұрын
@@PlatinumTechTalks имеется ввиду урлы для точек авторизации/аутентификации ?
@PlatinumTechTalks
@PlatinumTechTalks 3 жыл бұрын
@@МихаилИванов-м2э это больше относится к самим страницам входа/регистрации
@lav_4278
@lav_4278 2 жыл бұрын
Подскажете, пожалуйста, при указании адреса localhost:44319/Auth/Login компонент Login.cshtml вызывает ошибку:Model.ReturnUrl равен null, из-за чего может быть данная ситуация?
@Denis778322877
@Denis778322877 2 жыл бұрын
Присоединяюсь. Та же проблема.
@PlatinumTechTalks
@PlatinumTechTalks 2 жыл бұрын
так это потому что некуда возвращаться, поэтому return url и null. если бы был совершен переход с какой-либо страницы, а не введен вручную в адресную строку, то и return url не был бы пустым
@shyxiaolong
@shyxiaolong Жыл бұрын
@@PlatinumTechTalks это простите меня, очевидно как угол дома. а подскажите пожалуйста, как это использовать? допустим я понял как строить RediterUrl localhost:44350/Auth/Register?ReturnUrl=localhost:44300%2Fapi%2Fnote где %2F является "/" но, как мне проверить функционал который у нас работает и как мне использовать ваш пример сервера запущенного с двух проектов?
@bureevar4952
@bureevar4952 Жыл бұрын
Есть проблема - в файле _ViewImports.cshtml и Login.cshtml (дальше 5:00 не шел) @model и @addTagHelper горит красным аля ошибка (the name 'addTagHelper' does not exists in current context), но проект запускается. Есть у кого идеи в чем проблема?
@lonelypaul69
@lonelypaul69 Жыл бұрын
балииин, я думал проект на web api, а вы тут mvc херачите(
@VRCHarbor
@VRCHarbor Жыл бұрын
Я просто фигею с того что уже неактуальную инфу продолжают постить, так и не нашел грамотной реализации регистрации на duende с помощью SPA
coco在求救? #小丑 #天使 #shorts
00:29
好人小丑
Рет қаралды 27 МЛН
Noodles Eating Challenge, So Magical! So Much Fun#Funnyfamily #Partygames #Funny
00:33
Serilog - Логгирование
8:24
Platinum DEV
Рет қаралды 12 М.
7. Minimal APIs - добавляем аутентификацию
17:19
Всё об Entity Framework Core
2:38:04
Platinum DEV
Рет қаралды 55 М.
Вячеслав Михайлов - Построение SSO на примере Identity Server 4.0 (.NET Core 2.0)
1:02:11
DotNext — конференция для .NET‑разработчиков
Рет қаралды 13 М.
Unit-тесты в .NET с использованием xUnit
17:02