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

Поділитися
Вставка
  • Опубліковано 3 гру 2024
  • Разработка 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 роки тому +7

    Возможно, что в следующих уроках уже поправили, но на всякий случай: в AuthController в get-методе Register должно быть return View(viewModel) вместо View(returnUrl).

    • @PlatinumTechTalks
      @PlatinumTechTalks  3 роки тому +4

      спасибо большое за наблюдательность! да, к сожалению, пришлось исправить этот момент отдельно уже после записи.. в репозитории с кодом отдельным коммитом: github.com/andreisfedotov/Notes/commit/fbd18ed60d95e04956ec81313a06002913e2a6ce

  • @ciipher430
    @ciipher430 Рік тому +5

    Очень объемное и познавательное видео. Странно что просмотров так мало.
    Один важный момент для тех кто будет делать подобный сервис. Делать 2 отдельных ошибки "User not found" и "Login error" -- плохая практика. Так злоумышленник может подобрать сначала Логин, а после пытаться к логину подобрать пароль (есть разные способы). Поэтому ошибка должна быть всегда одна: Login Error. Не давайте подсказки злоумышленникам :)

    • @mrlait5732
      @mrlait5732 7 місяців тому

      В любом случае злоумышленник может просто начать регаться под разными логинами и подобрать логин который уже занят) Что в этом случае делать?

  • @ivanpebus6139
    @ivanpebus6139 3 роки тому +4

    Дуже дякую.

  • @gennadiigorbunov1027
    @gennadiigorbunov1027 3 роки тому +5

    Остался вопрос, я региструруюсь и вижу юзера в бд Auth, но вот как Notes.Backend поймет, что такой юзер есть и пустит к данным? или это вследующих сериях?)

  • @BraentR
    @BraentR 3 роки тому +1

    Спасибо

  • @qofi4922
    @qofi4922 3 роки тому +1

    Большое спасибо за уроки, они очень информативны и полезны!
    В данном видео рассматривается разграничение доступа к "своим" объектам. Есть ли у вас идеи / подходы / шаблоны для системы, в которой пользователи могут давать доступ к своим файлам для других пользователей (на чтение / изменение) ?

  • @shyxiaolong
    @shyxiaolong 2 роки тому +1

    Вообщем сгорем пополам, прикрутил я IdentityServer к бекенду через клиент, только вот как получить Guid ведь чтобы юзать наше приложение Identity должен получить свой Guid. сейчас я делаю через простые Credenteals и Jwt токен, подскажите как получить наш Guid

  • @kokoshko1985
    @kokoshko1985 2 роки тому +1

    А почему аттрибут
    [Authorize] вы ставите для каждого метода, а не на контроллере? Для этого какая то причина есть?

  • @deserof
    @deserof 3 роки тому +3

    А как сделать редирект с api на identity server, если пользователь не авторизован?

    • @OlegTar
      @OlegTar 3 роки тому +1

      автоматически должно

    • @PlatinumTechTalks
      @PlatinumTechTalks  3 роки тому +1

      Для этого служит тэг [Authorize] в методах контроллера и добавление конфигурации в Startup классе. На основе этого Web API и IdentityServer будут понимать авторизован пользователь или нет. У клиента, которым пользуется пользователь также есть конфигурация, в которой указываются адреса перенаправления, в том числе и тот, куда надо идти для того чтобы авторизоваться. Про конфигурацию клиента будет рассказано в ближайших видео

    • @sau9703
      @sau9703 2 роки тому

      в целом это не задача апи , ведь апи может вызывать и десктоп.клиент , по этому апи лишь возвращает код ошибки доступа . а уже клиент - будь то веб.браузер или десктоп app , решает что с этим делать.

  • @neliquidmusic
    @neliquidmusic 2 роки тому +2

    Подскажите как можно это все запомнить? Объем инфы просто огромный.)

    • @PlatinumTechTalks
      @PlatinumTechTalks  2 роки тому +1

      Постепенно, не за один раз) практикуясь)

    • @sergbo3114
      @sergbo3114 Рік тому

      А еще не старайтесь запомнить все конструкции с настройками и остальные детали. Запоминайте принципы и логику работы. Детали вы всегда сможете найти в справочниках. Главное правильно запомнить что ты делаешь и зачем, а не как.

  • @this_is_denys
    @this_is_denys 2 роки тому +1

    Такой вопрос, делаю веб апи приложение интернет магазин по вашему шаблону, мне надо хранить информацию о клиентах в отдельной таблице, которая связана с таблицей заказов отношением один ко многим, но если логика аутентификации вынесена в отдельное решение и база данных юзеров там своя, собственно как и и в вашем видео, можно ли как-то связать две бд из разных решений, чтобы иметь доступ к информации о клиентах, то бишь юзерах из бд решения аутентификации, в самом веб апи магазина, или придется дублировать таблицу заказчиков в решении веб апи для этой цели?
    Мне сказали, что логичнее всего в таком случае будет дублировать таблицу заказчиков в бд самого магазина и хранить там айди юзеров из бд решения аутентификации, так ли это? Или может всё-таки есть какая-то возможность интегрировать две бд из разных решений? Или вообще может лучше в таком случае не разделять аутентификацию и само приложение магазина на разные решения, а делать всё в одном? Что вы можете сказать по этому поводу?

    • @this_is_denys
      @this_is_denys 2 роки тому

      Появилось ещё предложение вынести контекст в отдельный проект и расшарить его между двумя решениями

    • @PlatinumTechTalks
      @PlatinumTechTalks  2 роки тому +3

      Задача IdentityServer хранить информацию о пользователях и их ролях, всё то, что относится к аутентификации и авторизации. знать что-либо о бизнес логике ему не нужно, то есть о товарах или для чего бы он не использовался. веб апи может у себя хранить ту информацию о пользователях которая ему необходима. общими у обоих решений будут идентификаторы пользователей, остальное разное - у айдентити это роли, у веб апи например информация о товарах. в веб апи проекте инфо о пользователе можно брать из токена при оформлении товара и тд.

    • @this_is_denys
      @this_is_denys 2 роки тому

      @@PlatinumTechTalks Понял, спасибо вам большое за развернутый ответ!

  • @АртемСлободенюк-е6д
    @АртемСлободенюк-е6д 11 місяців тому

    А почему ViewModel , я вместо этого пишу DTO

  • @DenPoBlog
    @DenPoBlog 2 роки тому +1

    Спасибо за видео. Но я так и не понял как зарегистрироваться и залогиниться. Я думал, что после перехода по адресу /api/note/ должно перекинуть на страницу логина IS. Но этого не произошло.

    • @PlatinumTechTalks
      @PlatinumTechTalks  2 роки тому

      Автоматически переадресация не происходит. С тегом [Authorize] эндпоинт /api/note будет ждать токен доступа, иначе вернет 401.
      Переадресация настраивается отдельно в конфигурации

    • @nikolaifedorov685
      @nikolaifedorov685 Рік тому +1

      @@PlatinumTechTalksты же сказал, что на это видео с аутентфикацией всё. Но не показал как она работает! Гениально! Хотя чего ждать. Валидацию сделали, а как работает снова не показал. Молодец, хули!

  • @danielmentjak1278
    @danielmentjak1278 2 роки тому

    Всем привет. Вопрос, при Login или Register в ReturnUrl всегда null. Проверяю и Get запросы и Post . В базу запись упала, спустя несколько попыток, но тот же Login не срабатывает, так как ModelState Invalid, потому что ReturnUrl - Required, но содержит null. В чем может быть причина?
    Благодарю за ответ

    • @PlatinumTechTalks
      @PlatinumTechTalks  2 роки тому +1

      убрать 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-типы в свойствах проекта.

  • @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 3 місяці тому

      @egorkaras8947 У меня такая же ошибка, если вы вдруг разобрались, можете описать как в двух словах

  • @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 роки тому +2

      рады, что получилось решить проблему! извините за поздний ответ =)

  • @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 роки тому +1

    Подскажете, пожалуйста, при указании адреса localhost:44319/Auth/Login компонент Login.cshtml вызывает ошибку:Model.ReturnUrl равен null, из-за чего может быть данная ситуация?

    • @Denis778322877
      @Denis778322877 2 роки тому +1

      Присоединяюсь. Та же проблема.

    • @PlatinumTechTalks
      @PlatinumTechTalks  2 роки тому

      так это потому что некуда возвращаться, поэтому return url и null. если бы был совершен переход с какой-либо страницы, а не введен вручную в адресную строку, то и return url не был бы пустым

    • @shyxiaolong
      @shyxiaolong 2 роки тому +2

      @@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 Рік тому +3

    балииин, я думал проект на web api, а вы тут mvc херачите(

    • @VRCHarbor
      @VRCHarbor Рік тому

      Я просто фигею с того что уже неактуальную инфу продолжают постить, так и не нашел грамотной реализации регистрации на duende с помощью SPA