The .NET 8 Auth Changes You Must Know About!

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ธ.ค. 2024
  • Use code DDD20 and get 20% off the brand new Domain-Driven Design course on Dometrain: dometrain.com/...
    Become a Patreon and get source code access: / nickchapsas
    Hello, everybody, I'm Nick, and in this video, I will show you how Authentication and Identity have changed in .NET 8 in an effort to simplify it and make it more accessible.
    Subscribe to Amichai: ‪@amantinband‬
    Workshops: bit.ly/nickwor...
    Don't forget to comment, like and subscribe :)
    Social Media:
    Follow me on GitHub: bit.ly/ChapsasG...
    Follow me on Twitter: bit.ly/ChapsasT...
    Connect on LinkedIn: bit.ly/ChapsasL...
    Keep coding merch: keepcoding.shop
    #csharp #dotnet

ความคิดเห็น • 349

  • @eg8568
    @eg8568 ปีที่แล้ว +121

    This is such a helpful addition. I recently had to build whole identity system and whilst a lot of the heavy lifting was taken care for me by identity, I had to build the endpoints for generating & refreshing tokens, resetting user passwords, etc. This would have saved SO much of my time.

    • @jessecalato4677
      @jessecalato4677 ปีที่แล้ว

      @@ApheliontI'm seriously thinking about this right now.

    • @eg8568
      @eg8568 ปีที่แล้ว +6

      @Apheliont I'd always recommend against implementing your own solution (and said so to my company!), but they didn't want to pay the license fee for Duende. Anyways, deep diving into Identity/Open ID was a good learning experience for me so I can't complain

    • @Velociapcior
      @Velociapcior ปีที่แล้ว

      @@eg8568 Azure has 50 000 MAU for free on B2C

    • @virtualdars
      @virtualdars ปีที่แล้ว

      You are not alone.

    • @HarrishSelvarajah
      @HarrishSelvarajah ปีที่แล้ว

      @eg8568 Why did you not have a look at dunde ?

  • @josephizang6187
    @josephizang6187 ปีที่แล้ว +75

    This is perfect! I think Microsoft should prescribe the right way of doing things and leave it to devs to customize it in anyway they want. Nice video Nick

    • @Paul-uo9sv
      @Paul-uo9sv ปีที่แล้ว

      November 14, 2023
      ASP .NET Core 8, with its much-anticipated features and enhancements, is scheduled to be officially released on November 14, 2023

    • @araz911
      @araz911 11 หลายเดือนก่อน

      Is this thing secure?

    • @SM-tj4jc
      @SM-tj4jc 5 หลายเดือนก่อน

      @@araz911 No, it is not.

  • @ExpensivePizza
    @ExpensivePizza ปีที่แล้ว +18

    I literally just manually coded something like this a couple of weeks ago. This would have made things much easier.
    I would love to see more content around this topic on the different token types, how to integrate it with front end frameworks like React and Vue and different backend databases like MongoDB.

  • @PippiTheLongSock
    @PippiTheLongSock ปีที่แล้ว +65

    I would love to see how well these endpoints could be customized. For example, what if you want to have some custom fields when registering a user (first name, last name, etc). How can you modify the request body? You also need to override the underlying implementation of the given endpoint.
    Suggestion for you Nick:
    When all of the new improvements to the way we deal with identity are finally released in dotnet 8, can you create a full course on what would be the modern/recommended approach of working with identity. Because over the years there have been so many ways and it really has become confusing (especially for a beginner). Also, Microsoft have been pushing the Identity UI MVC (or was it actually razor pages, idk) built-in capabilities, which for me was a mistake as the industry is really moving away from the MPAs. I promise I would be the first to buy this course :)
    Edit: You can even collaborate with Anton from RawCoding because as you know he is very passionate about auth

    • @10Totti
      @10Totti ปีที่แล้ว +3

      Exact!

    • @jomama55ful
      @jomama55ful ปีที่แล้ว +1

      I have to agree. My learning experience with auth was painful at best and has led to a lot of confusion as to best practices. In the end I found using third party solutions was less painful as a rule.

    • @mateuszkaleta1495
      @mateuszkaleta1495 ปีที่แล้ว

      That's the point

    • @elpe21
      @elpe21 ปีที่แล้ว +3

      I guess you have to scaffold the endpoints and do what's necessary. Additional fields most likely is just a matter of adding properties as those endpoints will work on T where IdentityUser

    • @MrDemiKer
      @MrDemiKer ปีที่แล้ว +1

      Did you figure out how to register user with custom fields with this register endpoint? It seems that it accept only email and password in register request

  • @jeffbarnard348
    @jeffbarnard348 ปีที่แล้ว +25

    This is great for small projects, but it's not OAuth2.0 and OIDC standardized. We'll still need to integrate OpenIddict or IdentityServer for full compliance

    • @Jared-150
      @Jared-150 ปีที่แล้ว

      I've been using OrchardCore just for its out of the box OpenIddict.

    • @TheProTip
      @TheProTip ปีที่แล้ว +1

      My other comment got deleted because I linked the repo.. There is code in the Asp Net Core project for handling OIDC flows (including I believe opaque tokens). If you don't need to be an IdP it's all buried in there and you can scaffold out the UI and see the stuff in action via the Razor pages right now.

    • @shanemonck3225
      @shanemonck3225 ปีที่แล้ว

      second this, very correct

    • @carson8417
      @carson8417 6 หลายเดือนก่อน

      yeah they destroyed the authentication that we actually need

  • @luis1118
    @luis1118 ปีที่แล้ว +22

    Hope the new documentation will be clear about the addition of social login options 😬

  • @virtualdars
    @virtualdars ปีที่แล้ว +9

    This is great! In this example the protected endpoint resides on the same Auth microservice (with RequireAuthorization()).
    Nick, can you please show us another sample of the separate API service that performs validation of the access tokens issued by this Auth service? Thank you!

    • @drrd5145
      @drrd5145 7 หลายเดือนก่อน +1

      Would love to see that!
      I'm looking for an example in .NET8, where I have a service that is used for login/token authentication and other API (separated service) that will use the token to call the service.
      Looks like any example assumes that the services API are the SAME as the authentication API.

    • @elias.mantzoros
      @elias.mantzoros หลายเดือนก่อน

      Any new about that? I'm interested to learn how can you seperate auth logic to different API from business logic API

  • @SnOrfus
    @SnOrfus ปีที่แล้ว +36

    This is definitely great, and a move in the right direction. That said, in the enterprise, it’s extraordinarily rare to build authn as part of your API like this. You’re almost always integrating with a 3rd party IdP/oidc/saml, and that integration is equally annoying.

    • @rzaip
      @rzaip ปีที่แล้ว +4

      Yea, I was just thinking if this could replace IdentityServer and came to the same conclusion that this is mostly for single apps that doesn't require oidc or single sign on.

  • @cn-ml
    @cn-ml 5 หลายเดือนก่อน +1

    1:57 like that reference 👌

  • @fifty-plus
    @fifty-plus ปีที่แล้ว +1

    Finally, I've been using this since it dropped instead of writing a ton of custom code. Very nice.

  • @hemant-sathe
    @hemant-sathe ปีที่แล้ว +17

    It’s great to see the improvements and also encouraging to see David Fowler replying to questions. Loving it. Is it possible to set up an independent auth server with this to be shared across multiple services? Also does this work with other third party systems like social login and azure Active Directory? Can we map the user with any Active Directory attributes like email, name, groups etc?

    • @Zenoc2
      @Zenoc2 ปีที่แล้ว +2

      +1 here wondering whether this can be used with an independent auth server for multiple services!

    • @eg8568
      @eg8568 ปีที่แล้ว

      @marklnz why wouldn't you call the extension method to add the endpoints? Functionality such as resetting user passwords etc would likely still be needed

    • @SlugiuesRex
      @SlugiuesRex ปีที่แล้ว

      Also, are there any improvements in net8 that work more efficiently with Azure Functions ??

    • @hemant-sathe
      @hemant-sathe ปีที่แล้ว

      @@marklnz I tend to favour Azure AD instead of local auth db. Azure B2B can be overkill at times but then you don't need to worry much about the authN functionality.

  • @brandonpearman9218
    @brandonpearman9218 ปีที่แล้ว +11

    I'm always worried about customization with black box magic because it looks simple until you use it in the real world. if I have to work on a system that implements this, how long will it take to figure out how to customize it. For example I may need to send an email on register, or maybe I need extra data on register to setup a relation to another entity.

    • @benjamininkorea7016
      @benjamininkorea7016 ปีที่แล้ว

      Well, i think the idea is that you can call the API from anywhere in your server-side logic.

  • @keesdewit1982
    @keesdewit1982 8 หลายเดือนก่อน +5

    @nickchapsas Please note that the default implementation of IdentityUser (used in this video) uses a string as Id which turns into a NVARCHAR(450) as primary key. This is terrible as it will lead to fragmentation because they don't insert records in a sequentially increasing order. This can lead to increased page splits and fragmentation within the database, potentially degrading performance over time as the database grows. To solve this and turn it into (for example) a integer primary key, the MyUser should inherit IdentityUser and the DbContext should inherit IdentityDbContext This will turn all primary keys into incrementing integers which are inserted in the right order.

  • @luigicfilho
    @luigicfilho ปีที่แล้ว +8

    For my case, I'm going for another approach, because the token get exposed in the client, any script on the browser has access.
    This can be a great idea to do a new video about the "backend for frontend" :)

    • @d0neall_
      @d0neall_ ปีที่แล้ว

      What approach did you go for? Have a video?

    • @luigicfilho
      @luigicfilho ปีที่แล้ว

      @@d0neall_ I use the backend for frontend approach, I don't think there is an video about it it's pretty new

  • @MaximilienNoal
    @MaximilienNoal ปีที่แล้ว +25

    Finally ! It was such a headache.

  • @victor1882
    @victor1882 ปีที่แล้ว +6

    I wish they had gone with OpenIddict, but I guess they don't want another IdentityServer situation and that it would be a competitor to Azure AD (or Entra, I don't know anymore)

  • @AceSyntaxx
    @AceSyntaxx ปีที่แล้ว +9

    I'd appreciate some explanation of how this integrates with other identity providers, Facebook, X etc. This looks like oidc/oauth, but you say it's not JWT, which bothers me. Could you enlighten me?

    • @kawamustudio
      @kawamustudio ปีที่แล้ว +1

      Oidc and oauth protocols does not require token to be in JWT format.

  • @dyakobaram
    @dyakobaram ปีที่แล้ว +16

    i wish they also made seeding admin accounts easier with roles and claims. can you make a video about it?

    • @arjix8738
      @arjix8738 ปีที่แล้ว

      If by seeding you are talking about creating the default admins, then you can do that before you run the app.
      You can manually create a scope and get the db context.

    • @andrewcolleen1698
      @andrewcolleen1698 ปีที่แล้ว

      @@arjix8738that’s problematic if your app is distributed

    • @z_prospective160
      @z_prospective160 9 หลายเดือนก่อน

      this is usually done via a post deployment script. if using ef core migrations you can do this in your db context class.. you can do this in your "OnModelCreating" method via the "HasData" method.

  •  ปีที่แล้ว +6

    Looks great I just hope there is enough customization possible and (more important) that the documentation for customization is well written.
    Are there also razor pages/blazor templates for UI variants of the endpoints?

  • @WTHBrou
    @WTHBrou ปีที่แล้ว +6

    How extendable is it? For instance, doing the classic step to use BCrypt or Argon instead of their default hash implementation? All it leaves is the authorization setup side to do?
    So far I find it pretty awesome. A huge facade made by Microsoft which certainly solves the complex setup it requires to properly create your own Identity Server. I don't remember how many times I have recalled to the documentation and guides when setting up one of these. Marvelous move done by Microsoft.

    • @lukegordon4734
      @lukegordon4734 ปีที่แล้ว +3

      Pretty easy to use bcrypt or argon2 with this. You just specify the password hashed singleton for the DI to use (I’ve done this for both already)

  • @iSoldat
    @iSoldat ปีที่แล้ว +7

    Can the new auth changes accept the AD as a user store? if so, how about mapping membership groups or custom AD properties in claims?

  • @EzequielRegaldo
    @EzequielRegaldo ปีที่แล้ว +3

    Where is the secret or cert?
    Can we change endpoints names?
    Can we choose features instead get all or nothing?
    Can i do an authentication server with this out of the box or integrate this ?

  • @todorkatsarski7487
    @todorkatsarski7487 ปีที่แล้ว

    I loved that Doug reference. THIS is awesome content.

  • @marijnfeijten
    @marijnfeijten ปีที่แล้ว +1

    For one of my projects I was looking into doing this myself and thought it would be a pain to setup. Then I saw that Microsoft was adding this and it looks really cool. Thanks for explaining yet another great topic!

  • @alex.semeniuk
    @alex.semeniuk ปีที่แล้ว +2

    Nick, you are doing a great job! Keep it up.

  • @RebelliousCanadian
    @RebelliousCanadian ปีที่แล้ว +6

    Love this update. Wonder how good this works with Swagger/OpenApi and more clarification between this and a JWT bearer tokens?

    • @kabal911
      @kabal911 ปีที่แล้ว +2

      Will be seamless with Swagger, they are just endpoints.
      I’m guess that the difference is that this token is not base64url encoded, and does not contain client readable info, unlike a jwt

    • @sikor02
      @sikor02 ปีที่แล้ว

      @@kabal911I don't see these endpoints in swagger
      edit:
      I had to add
      builder.Services.AddEndpointsApiExplorer();
      builder.Services.AddControllers();
      I worked on blazor dotnet 8 app and it wasn't included by default.

  • @mrkjartanvalur
    @mrkjartanvalur ปีที่แล้ว +6

    Is it possible to override e.g. the login method for custom logic like logging or add custom claims

  • @jerryjeremy4038
    @jerryjeremy4038 ปีที่แล้ว

    I really like it. Thanks Nick. I hope you create a video about this in full details and features.

  • @jeffjones9502
    @jeffjones9502 ปีที่แล้ว

    This is awesome! After setting up auth so many times this will definitely help streamline and make the process easier.

  • @saicharan1000
    @saicharan1000 ปีที่แล้ว

    I just needed this for what I am building. Thanks a lot.

  • @microtech2448
    @microtech2448 ปีที่แล้ว +4

    That's great that it is out of the box now. It would be nicer if it could be jwt format

  • @SvdSinner
    @SvdSinner ปีที่แล้ว +5

    How it will work with an enterprise identity server like Auth0?

  • @ryanobray1
    @ryanobray1 ปีที่แล้ว +4

    I think this is great simplification. I do have some questions though. First, is it safe to assume that .net 8 is using data protection under the hood for managing the certs used to mint the JWT? If so, is the only out-of-the-box way to implement this in such a way that it's cluster safe, to enable sticky sessions on the load balancer? I could see that becoming problematic with long living tokens though. I'm curious to know the best practice for implementing this in a cluster because unless Microsoft has added more options since I dug into it deeply, data protection isn't all that easy/reliable to implement in a cluster without just using sticky sessions. I once wrote my own SQL server solution for hosting dp keys, but it was difficult to avoid timing issues. I had to use locking techniques to prevent failures when all nodes in the cluster were spinning up at the same time. I had to role my own because the MS sql server dp provider didn't properly handle that very concern.

    • @davidfowl
      @davidfowl ปีที่แล้ว +4

      1. It is using data protection yes.
      2. The token is not a JWT, it's a different format.
      3. If there are still timing issues with data protection providers, we'll need to fix them, these tokens are on top of that subsystem.

    • @ryanobray1
      @ryanobray1 ปีที่แล้ว +1

      @@davidfowl Thanks for the response. I did catch in Nick's video that he said they aren't JWTs, but then the tokens in the login response looked a lot like what you get back in the OAuth OIDC client flow, so my brain went to JWTs.
      If I remember correctly, the easiest way to recreate the SQL Server DP provider timing issue was to stop all the nodes in the cluster, delete the DP keys from the database and then start the cluster. In my case, I was using Cloud Foundry with an app that I scaled up to something like 10 nodes. Even though I know the DP subsystem has some level of control around how nodes handle key rotation, I wanted to see what would happen if multiple nodes in the cluster were trying to create new keys at nearly the same time. The result in my test was that some nodes ended up with different DP keys than others because the SQL Server DP provider doesn't do any locking, which I believe could be necessary. The DP subsystem tries to get a key from the provider and if it doesn't exist, it tries having the provider write/save the one and then calls the get method again. If multiple nodes fail to get a key (because a write/save hasn't yet completed), each of those node's write/save key method will be hit, which can result in some nodes having different keys. It's pretty fringe case but was still concerning enough for me to write my own SQL provider for DP.

  • @souleymanembengue5989
    @souleymanembengue5989 ปีที่แล้ว +4

    Good but It would be better to implement standards OAuth and OIDC but Microsoft does prefer to sell Azure Active Directory...

  • @jasonsteelj
    @jasonsteelj ปีที่แล้ว +2

    It's a nice step, but they need a full example of authentication with SPAs, one that doesn't involve identity server/DUENDE. I don't need a whole identity server. I just need login on the local app.

    • @TheProTip
      @TheProTip ปีที่แล้ว

      Cookies are the way, it's not clear to me from this short overview that it's setting the cookies though. I know that David knows that though based on the GitHub issue, so it probably has support for setting cookies in there some where.

  • @AntiPolarity
    @AntiPolarity ปีที่แล้ว +17

    Hoping that they will integrate it into blazor

    • @sokoo1978
      @sokoo1978 ปีที่แล้ว +2

      There will be a new scaffold for Blazor in .NET8 RC1.

    • @sokoo1978
      @sokoo1978 ปีที่แล้ว +6

      @@marklnzIt will be obviously server rendered.

    • @felipepassion
      @felipepassion ปีที่แล้ว

      thanks u.u @@sokoo1978

    • @felipepassion
      @felipepassion ปีที่แล้ว

      you can try with webassembly. i was working with .ney7 with duende, ait it was a nightmare. then i can think now to replace the replacement that i used to replace duende 1 year ago in my server side.
      It's all about the server side. it's obvious.@@marklnz

    • @sokoo1978
      @sokoo1978 ปีที่แล้ว

      @@marklnzI think you misunderstand.. RC1 will be able to create you the client template like MVC did before. It will have the basic functionality and pages/components to register, login, have the basic header with the auth and user info. In many applications this is actually good enough, like intranet apps where Windows user is not applicable. The logic is all server side (like hosted WASM in current version).

  • @CryptoWulfApp
    @CryptoWulfApp ปีที่แล้ว +2

    This scenario is only intended for when your service also functions as an auth-service and not when you use an auth-provider like Azure AD/Azure AD B2C, right?

  • @rogeriobarretto
    @rogeriobarretto ปีที่แล้ว +18

    Is a great step forward. But the must annoying thing for me is the dictatorship on how my Authentication Tables needs to be setup (migrate). It is very common to change a new project where there's already a Database Model in place, some simple scenarios where there's only a Users table with Email and Password.
    Would be great if we were able to setup the Authentication in that Stupid Simple Lean approach (where you could specify what is the table and how complex you want your authentication to be, (include refresh tokens, hashed passwords, etc)

    • @davidfowl
      @davidfowl ปีที่แล้ว +3

      You would want the auth system to work with any database schema? Or would you augment the schema for the identity system? I think a better solution would be to provide more building block when the database schema is fixed. Another option is the use the identity schema as standalone and link it to your user table via foreign keys.

    • @dave7038
      @dave7038 ปีที่แล้ว

      Yup. Most of the systems I work on are 20+ years old and we don't have a lot of flexibility to update user stores (they are accessed or managed by many other systems). I have yet to work on a project where the built-in auth schemas are used.
      The direction I took was to create a class implementing Microsoft.AspNetCore.Identity.IUserPasswordStore and IUserLoginStore and a class implementing IRoleStore that I register as singletons and that handle interfacing with our user and role store (which in some cases is just an INI file with some username=scrambledPassword pairs under either [admin] or [user] keys), and then services.AddIdentity() connects my custom user and role stores with the identity system (I could probably also use the .AddRoleStore(), .AddUserStore() extensions on .AddIdentity()). We don't usually need the other features due to the nature of the systems we're working with, but implementing the stores for tokens and claims is similarly straightforward.
      That seems to work well, is very flexible, and fairly painless to set up. It would be great to have some guidance on how (or when/whether it makes sense) to integrate some of these newer options with custom stores that have limited feature sets.

  • @arkadiyshuvaev
    @arkadiyshuvaev ปีที่แล้ว

    I like the advice regarding EF Core 8 at 2:57. How can I reduce the cold start of EF Core in a serverless application?
    I have used the Debug mode and seen EF Core context initialization messages. The context initialization took 800 milliseconds per each cold start serverless invocation.

  • @btogkas1
    @btogkas1 ปีที่แล้ว

    What would be nice to have would be 1. Invalidating the token (one login, locking the user) 2. Ability to see online users. 3. Dynamic ACL based on user rights - role rights

  • @jjeffh
    @jjeffh 6 หลายเดือนก่อน

    StartingAsync! I think that solves a problem (a dirty background service hack like you mentioned) for me. Thanks!!

  • @leoravilo2812
    @leoravilo2812 ปีที่แล้ว

    Oh god... I waited for that for so long... Finally !

  • @bitmanagent67
    @bitmanagent67 ปีที่แล้ว +1

    This shit is still complicated. We would have never figured this out on our own. MSFT consistently convolutes approaches because they have this spaghetti against the wall mentality of refining features. Back in the day we used to have property panes and dialogs to configure options. The changes were made in the background for you. Now they basically said fk you to powerful tools and followed the rest of the open source community down the "type all your setup and config into a file" rabbit hole.

  • @jesperkped
    @jesperkped ปีที่แล้ว +2

    Can you show how to do it from a blazer wasm client calling the API?

  • @LordCoon159
    @LordCoon159 3 หลายเดือนก่อน

    It looks great and spent so many hours with identity in last few years. However, one of the thing which i am still missing is some kind of the way to invalidate at least refresh token. This basic behavior is simple but it still require additional work from us. I always implementing logic for validation of user every time when you use refresh token and also logic which is validating users in database at least once in every 5 minutes. My reason is that I am mostly working on closed systems where it's really important to kick users out of system almost immediately when admins decide to remove their right to be there.

  • @benjamininkorea7016
    @benjamininkorea7016 ปีที่แล้ว +1

    I don't understand. Are these API endpoints only accessible from onsite? What's to stop someone from batch-creating a million accounts using the register endpoint?

  • @Paul-uo9sv
    @Paul-uo9sv ปีที่แล้ว

    That's great video. Thanks. November 14, 2023
    ASP .NET Core 8, with its much-anticipated features and enhancements, is scheduled to be officially released on November 14, 2023

  • @jason3898
    @jason3898 ปีที่แล้ว

    6:10 What plugin allows you to explore the sqlite db file like that?

  • @ZimTachyon
    @ZimTachyon ปีที่แล้ว

    You deliver excellent and relevant information which helped me a lot. Thank you.

  • @aslanamca8225
    @aslanamca8225 ปีที่แล้ว +4

    Why not JWT?

  • @parlor3115
    @parlor3115 ปีที่แล้ว +3

    Does it support storing the user session in the database in case the token needs to be invalidated?

  • @systemslave510
    @systemslave510 ปีที่แล้ว +3

    Now how to make it work with dapper?

  • @TaiNguyen-gb1pr
    @TaiNguyen-gb1pr ปีที่แล้ว +1

    Great video! How to customize register endpoint, because maybe we need more field, ex: phone, avatar...?

    • @nickchapsas
      @nickchapsas  ปีที่แล้ว +1

      Simply add the field on the user object

  • @allothernameswherealreadytaken
    @allothernameswherealreadytaken ปีที่แล้ว +1

    Fantastic! I wish they had implementet the passkey auth though.

  • @hevymetldude
    @hevymetldude ปีที่แล้ว

    Love the Doug DeMuro cameo.

  • @ARumGremlin
    @ARumGremlin ปีที่แล้ว +17

    I would love to see a video on how to lock down an API with Azure AD authentication. I just went through the horror of doing it myself and the documentation for it is woefully confusing.

    • @SaltySquirrel12
      @SaltySquirrel12 ปีที่แล้ว +5

      +1. Would like to see this in action with Azure AD

    • @hemant-sathe
      @hemant-sathe ปีที่แล้ว

      Normally you would have to create an app registration and provide the client id, tenant id & secret. Then you set it up for a 302 response instead of 401 and you are mostly done. Postman documentation is also decent to explain how to set it up and how to add the postman return url in the app registration. The set up for an app like angular can be messy though. I find having our own UI for login more complex to set up in a typical SPA + API scenario.

    • @aremes
      @aremes ปีที่แล้ว +2

      it seems to me like this system is entirely designed for when you want to provide your own user-management/authentication solution. With AzureAD (or MS Entra, now, because i think Microsoft has a renaming-things fetish) you dont have to do any of that, You use good old OAuth2 with maybe a little OpenID sprinkled on top. And that stuff will *always* be confusing. I've implemented it, I've taught it, I've written documentation for it and trust me: "Simple" and "Authentication" just dont go together. You just cant secure an API using *any* identity provider without some serious requirements introspection (i.e. what clients do you want to support, what level of security, where does your config live, etc.

    • @fabiolune
      @fabiolune ปีที่แล้ว

      Totally agree.
      In my (could be limited) experience, it's rarely a good idea to create a custom authentication system.
      On top of security, there's also a huge amount of regulation compliance that can easily become a nightmare.
      So, while I appreciate the effort, I don't think I will ever use it in this way: better to rely on some authentication provider using a robust standard.

    • @eg8568
      @eg8568 ปีที่แล้ว +1

      I recently did this for a client and automated it via IaC / Bicep files. The documentation for both was dreadful and made it doubly confusing, I feel your pain.

  • @shahzshafie
    @shahzshafie ปีที่แล้ว +1

    very helpful.. would like to know how .net8 can be integrated with a 3rd party IAM provider like Auth0...

  • @ethanford9678
    @ethanford9678 ปีที่แล้ว

    Love the Doug DeMuro reference :D

  • @uflidd
    @uflidd ปีที่แล้ว +1

    That was just a ton of tables and magic 😮

  • @Daanik8
    @Daanik8 ปีที่แล้ว +1

    I liked the humor! 😂 But hey Nick, it would be great if you show how to integrate this identity authentication and authorization with keycloak!

    • @Ballebone
      @Ballebone ปีที่แล้ว

      Ha! I was going to beg for the same thing! All of our apps require KC use. Scopes and refresh are an added bonus!

  • @danku1013
    @danku1013 ปีที่แล้ว +2

    Is it possible to use JWT with that approach?

  • @AhmedAymanM
    @AhmedAymanM ปีที่แล้ว +5

    7:39 I love how you roasted microsoft, which created this auto refresh token generation, in 2 seconds 😂😂😂😂

  • @cjt9150
    @cjt9150 11 หลายเดือนก่อน +1

    Good work. Can you please create a video for custom authentication with cookie/local storage/session storage & without identity

    • @socomjoy4563
      @socomjoy4563 5 หลายเดือนก่อน

      Need this, too 😲 with some other stuff like persistence (e.g. pressing F5 will log you out in Blazor Server) ... - never found a working solution for this

  • @KobeBlackMamba24
    @KobeBlackMamba24 6 หลายเดือนก่อน

    Perfect…just perfect. .Net really stepped up their game

  • @mariocamspam72
    @mariocamspam72 ปีที่แล้ว +13

    So it's not good to save all user credentials as plaintext? :P

    • @jacobstamm
      @jacobstamm ปีที่แล้ว +1

      I think the people replying to you took your joke seriously

  • @atur94
    @atur94 ปีที่แล้ว

    That is so freaking awesome. Finally

  • @muzammilghani2492
    @muzammilghani2492 ปีที่แล้ว

    Great video Nick 👍🏻

  • @JoeLizFamily4
    @JoeLizFamily4 ปีที่แล้ว +2

    Can this be connected to an outside service like Octa?

  • @Silentsouls
    @Silentsouls ปีที่แล้ว +2

    What about B2C integration ?

  • @hananiahlinde1377
    @hananiahlinde1377 ปีที่แล้ว +1

    My favorite part 7:40

  • @viniciusmelquiades
    @viniciusmelquiades ปีที่แล้ว

    C# has changed a lot since I last used it. If I ever go back to backend, I'll probably use C#

  • @HMan2828
    @HMan2828 หลายเดือนก่อน

    Hey Nick, I would REALLY appreciate a follow up on this video for how to setup identity without a database... I have an application where I need to authenticate and get user data from a third party application using a REST service. It used to be really easy in .NET 4 to create a custom user storage provider that would call a REST or SOAP service to obtain or update user data, but I have been struggling real hard trying doing the same in a Blazor SSR application, and let's just say the documentation really isn't straightforward at all... Standard solutions do not work, because I do not need to actually connect through a third party OAuth endpoint. What I need to do is query an external ERP product that contains the user data (through customer contacts for example), and use that data to authorize users in my external .NET 8 app.

  • @vladmaiorov1072
    @vladmaiorov1072 7 หลายเดือนก่อน

    1) Where is that file with all the settings and api routes in the end of the video? Can't find it in my project
    2) If I have webapi app, and two client apps - mvc and phone app. I want to get token from web api and use it for authorization in client apps. How can I do that?

  • @GlebWritesCode
    @GlebWritesCode ปีที่แล้ว +1

    Really helpful. Is there an option to get this working so that Identity endpoints are not in minimal API fashion?

  • @dukefleed9525
    @dukefleed9525 ปีที่แล้ว

    ...a step in a right direction! Previous "web" authentication/authorization from Microsoft was very wrong. This is something better, but there is still a lot to improve. See, authentication/authorization can be done in a lot of different ways, the lack of usage of interfaces and also the fact that appears to be "all or nothing" is still quite wrong. A problem like authorization/authentication should be treated as much as orthogonal problems as possible. This requires a very profound redesign, and even if the proposed solution is very handy in simple scenario, i dubt it can be adopted for advanced things (imagine a system where the grants are added to the user and the UI have to respond in near real time using a gRPC channel with JWT bearer and an event sourced database as storage.... i dubt this thing could do it)

  • @oldmanscreaming
    @oldmanscreaming ปีที่แล้ว +1

    is there a way to delete the api key? or revoke it?

  • @ManuelPerez-cn2fj
    @ManuelPerez-cn2fj ปีที่แล้ว

    Loved the "except for Microsoft" comment! xD

  • @poojamahtha2780
    @poojamahtha2780 ปีที่แล้ว

    Wow ! Such a great video.

  • @tanglesites
    @tanglesites ปีที่แล้ว

    This is a game changer and such a time saver!

  • @JKhalaf
    @JKhalaf ปีที่แล้ว

    Can you please do a video on how to setup .NET 8 with AWS Cognito with the Blazor auth scaffolding pages?

  • @TechBuddyTR
    @TechBuddyTR ปีที่แล้ว

    Is it in purpose the picture at 01.57?

  • @TheSpruut
    @TheSpruut ปีที่แล้ว

    great video, thanks Nick

  • @lucaciandrei
    @lucaciandrei 6 หลายเดือนก่อน

    Do you have info / video on how to set this up properly as a JWT? Is this also out of the box (configuration only)? Or should we add extra code for that?

  • @sikor02
    @sikor02 ปีที่แล้ว +1

    adding few social login providers and merging that with local account would be nice. But I guess the 3rd party integration requires redirection at some point so no single API call will handle this, right?

    • @kabal911
      @kabal911 ปีที่แล้ว

      This already is supported. If your identity username is the same as your social username (usually email address) then you can login with either.
      If they have different usernames, then you would need to do something to allow an authed user to then link a social account - which I haven’t tried, but should be simple enough

  • @mightypirate100
    @mightypirate100 ปีที่แล้ว

    Thanks for the video. Question: How to customise the register and login endpoints to accept user id instead of email?
    Thank you

  • @TonyKenny-u5h
    @TonyKenny-u5h ปีที่แล้ว

    This is a great iintro, thank you, but where is the signout URL? I can't find it in the source or the documentatioin

  • @mariomandzukic8676
    @mariomandzukic8676 7 หลายเดือนก่อน

    Hello do i need 2 set of bases for doing this? Or i can put all other domain models in that data base? I used to have models in one base for example blogs walks etc and other one was identitydb can i store it all in one? "identitydb" ? or does it comes only with user model

  • @kagishophahlamohlaka2306
    @kagishophahlamohlaka2306 ปีที่แล้ว

    This is mind blowing!!!

  • @ChuckGiddens
    @ChuckGiddens ปีที่แล้ว

    Do you have a video on how to handle this on the Blazor Client side? No one ever shows the client side....

  • @nilswierling5899
    @nilswierling5899 ปีที่แล้ว

    Hey! What do you think about CQRS Pattern with EF ? Any experiences on that topic? And is there maybe a Video comming from you about CQRS?

  • @_curtman
    @_curtman ปีที่แล้ว

    Can't wait for .Net 8 to be released.

  • @LifeWithSeb99
    @LifeWithSeb99 9 หลายเดือนก่อน

    What's really helpful! What should I do if I don't need some of the endpoints? For example my API won't use 2 factor authentication

  • @Bourn77
    @Bourn77 ปีที่แล้ว +1

    Does it support role based access system by default?

  • @tango1803
    @tango1803 ปีที่แล้ว

    FInally an easy way to setup authorizations... Just a question, i have a master website and N satellite sites, with this new way how could I share my authentication with satellite sites? Mi idea is to login once and load these sites in an iFrame on the master website where I logged in.

  • @wusswuzz5818
    @wusswuzz5818 9 หลายเดือนก่อน

    Hi when i try this and access a protected minimal api endpoint I get a 404 because it is trying to redirect to Account/Login which does not exist. Is there a way to disable this behaviour so I can get the expected 401?

  • @allenn9068
    @allenn9068 ปีที่แล้ว

    Great intro to this new feature. Echoing questions about generating and customizing UI for AspNet, Blazor, or SPA frameworks. Wondering if there are templates to start with. Looks perfect for a simple personal web site that has auth for an admin area or customer/client features. Wondering if it can be used for a Generic Host as well as for a Web Host. Will have to try it. Looks good!

  • @haxi52
    @haxi52 ปีที่แล้ว +1

    Would like to see what happens when you start filling out the user class. Does it support complex types?

  • @keithealanta7790
    @keithealanta7790 ปีที่แล้ว

    That's really useful. I wonder if there's an easy way to get it to use JWTs by default (I'm sure it's possible to rewrite overall, I'd just love to be able to set a flag for that, as we use JWTs in the rest of our system, and it would be ideal to maintain compatibility/)

  • @mdzakariamasud8326
    @mdzakariamasud8326 ปีที่แล้ว

    How to work with roles in this new identity api endpoints and also how to override auto generated auth endpoints?

  • @tyk37
    @tyk37 ปีที่แล้ว

    Saves devs setting up many things, that is a boom