- Видео 115
- Просмотров 81 854
Thomas Clark
Великобритания
Добавлен 23 янв 2017
Having graduated from the University of Gloucestershire with a first class degree in computing, I am currently working at Kallidus as a software developer. I enjoy both front-end and back-end development, and I have created and deployed multiple applications as part of a team. I have strong practical experience using a variety of frameworks and technologies, however I specialise in Identity and Access Management (IAM) including IdentityServer.
Adding FIDO2-Related Mutations to a Hot Chocolate 13 GraphQL API
github.com/tnc1997/samples/tree/main/adding-fido2-related-mutations-to-a-hot-chocolate-13-graphql-api
00:00 Introduction
02:25 Service Registration
03:15 Type Converters
07:30 Create Public Key Credential Creation Options Mutation
23:25 Add Public Key Credential Mutation
44:05 Demonstration
00:00 Introduction
02:25 Service Registration
03:15 Type Converters
07:30 Create Public Key Credential Creation Options Mutation
23:25 Add Public Key Credential Mutation
44:05 Demonstration
Просмотров: 92
Видео
Adding FIDO2-Related Queries to a Hot Chocolate 13 GraphQL API
Просмотров 622 месяца назад
github.com/tnc1997/samples/tree/main/adding-fido2-related-queries-to-a-hot-chocolate-13-graphql-api
Implementing the ASP.NET Core 8 Identity Email Sender using MailKit
Просмотров 2772 месяца назад
github.com/tnc1997/samples/tree/main/implementing-the-aspnet-core-8-identity-email-sender-using-mailkit
Adding Passwordless Login to ASP.NET Core 8 Identity using FIDO2
Просмотров 2342 месяца назад
github.com/tnc1997/samples/tree/main/adding-passwordless-login-to-aspnet-core-8-identity-using-fido2 00:00 Introduction 02:15 FIDO2 Handler 25:45 Login JavaScript 35:10 Login Page 45:15 Demonstration
Adding Passwordless Register to ASP.NET Core 8 Identity using FIDO2
Просмотров 2732 месяца назад
github.com/tnc1997/samples/tree/main/adding-passwordless-register-to-aspnet-core-8-identity-using-fido2 00:00 Introduction 01:15 FIDO2 Development App Settings 03:45 FIDO2 Services 05:50 Session Services 07:20 Session Middleware 08:05 FIDO2 Handler 37:30 Register JavaScript 51:50 Register Page 1:00:40 Demonstration
Adding FIDO2-Related Entities to ASP.NET Core 8 Identity
Просмотров 1062 месяца назад
github.com/tnc1997/samples/tree/main/adding-fido2-related-entities-to-aspnet-core-8-identity
Adding a React 18 User Interface to IdentityServer 6
Просмотров 1,1 тыс.Год назад
github.com/tnc1997/samples/tree/main/adding-a-react-18-user-interface-to-identityserver-6
Implementing Multitenancy in Entity Framework Core 6 using a Database Per-Tenant
Просмотров 4,9 тыс.Год назад
github.com/tnc1997/samples/tree/main/implementing-multitenancy-in-entity-framework-core-6-using-a-database-per-tenant
Adding Multitenancy to an ASP.NET Core 6 Application
Просмотров 5 тыс.Год назад
github.com/tnc1997/samples/tree/main/adding-multitenancy-to-an-aspnet-core-6-application
Adding the Export Directive to a Hot Chocolate 13 GraphQL API
Просмотров 351Год назад
github.com/tnc1997/samples/tree/main/adding-the-export-directive-to-a-hot-chocolate-13-graphql-api
Enabling Batching in a Hot Chocolate 13 GraphQL API
Просмотров 355Год назад
github.com/tnc1997/samples/tree/main/enabling-batching-in-a-hot-chocolate-13-graphql-api
Adding Data Loaders to a Hot Chocolate 13 GraphQL API
Просмотров 1,2 тыс.Год назад
github.com/tnc1997/samples/tree/main/adding-data-loaders-to-a-hot-chocolate-13-graphql-api
Extending Types in a Hot Chocolate 13 GraphQL API
Просмотров 429Год назад
github.com/tnc1997/samples/tree/main/extending-types-in-a-hot-chocolate-13-graphql-api
Adding Projections to a Hot Chocolate 13 GraphQL API
Просмотров 868Год назад
github.com/tnc1997/samples/tree/main/adding-projections-to-a-hot-chocolate-13-graphql-api
Adding Sorting to a Hot Chocolate 13 GraphQL API
Просмотров 548Год назад
github.com/tnc1997/samples/tree/main/adding-sorting-to-a-hot-chocolate-13-graphql-api
Adding Filtering to a Hot Chocolate 13 GraphQL API
Просмотров 2 тыс.Год назад
Adding Filtering to a Hot Chocolate 13 GraphQL API
Integrating Entity Framework Core 7 with a Hot Chocolate 13 GraphQL API
Просмотров 902Год назад
Integrating Entity Framework Core 7 with a Hot Chocolate 13 GraphQL API
Adding Mutations to a Hot Chocolate 13 GraphQL API
Просмотров 1,1 тыс.Год назад
Adding Mutations to a Hot Chocolate 13 GraphQL API
Creating a Hot Chocolate 13 GraphQL API
Просмотров 585Год назад
Creating a Hot Chocolate 13 GraphQL API
Adding an Angular 14 User Interface to IdentityServer 6
Просмотров 2,5 тыс.2 года назад
Adding an Angular 14 User Interface to IdentityServer 6
Adding JWT Bearer Authentication to a Hot Chocolate 12 GraphQL API
Просмотров 3,6 тыс.2 года назад
Adding JWT Bearer Authentication to a Hot Chocolate 12 GraphQL API
Creating an IdentityServer 6 Solution
Просмотров 10 тыс.2 года назад
Creating an IdentityServer 6 Solution
Flutter State Management using Inherited Notifiers
Просмотров 1643 года назад
Flutter State Management using Inherited Notifiers
Containerising an IdentityServer 5 Project with API Resources and Clients
Просмотров 3593 года назад
Containerising an IdentityServer 5 Project with API Resources and Clients
Containerising an IdentityServer 5 Project
Просмотров 1533 года назад
Containerising an IdentityServer 5 Project
Authenticating a Flutter Android Application using IdentityServer 5
Просмотров 2,1 тыс.3 года назад
Authenticating a Flutter Android Application using IdentityServer 5
Authenticating an Angular 11 Single-Page Application using IdentityServer 5
Просмотров 5293 года назад
Authenticating an Angular 11 Single-Page Application using IdentityServer 5
Authenticating an ASP.NET Core 5 Web Application using IdentityServer 5
Просмотров 4493 года назад
Authenticating an ASP.NET Core 5 Web Application using IdentityServer 5
Adding Entity Framework Core 5 to IdentityServer 5
Просмотров 5773 года назад
Adding Entity Framework Core 5 to IdentityServer 5
Authenticating a .NET 5 Console Application using IdentityServer 5
Просмотров 7883 года назад
Authenticating a .NET 5 Console Application using IdentityServer 5
What a fantastic content, many thanks for sharing these gems.
Glad you liked it!
You are number.
Thank you very much!
Another great video, Thanks for sharing.
Glad you liked it!
This better than paid courses Thanks for sharing these series
You're welcome!
You're great and your videos are useful. Many Thanks
Thank you very much!
You're great and your videos are useful
Thank you very much!
Thanks for the tut. Can I ask you something, Do we have something similar in NodeJS/NestJS? I know this was intended for C# but I wanna develop a GraphQL API in NodeJS which is extensible and cacheable. Any form of resource will be enough for me, right now I just do not know where to look for a good example or doc as how it should be cacheable. BTW I am reading GraphQL doc but if I could find something talking explicitly about "filters + pagination" I would be happier ;).
Apologies but I am unsure about NestJS as I am not familiar with that technology myself.
Would you please make a video about DBUp for data seeding and how to use it within Docker Compose?
Thank you very much for the suggestion, it is a video that I will consider in the future.
@@tnc1997 Thank you for your replay , one more thing can be related also to your multitenancy video, how to handle the multi-tenancy application when you are using the header strategy and the user will use a unified login page.
Could you expand on what you are trying to accomplish with the header strategy and a unified login page to help me plan a video in the future?
@@tnc1997 Assuming you have a multi-tenant system using multiple databases, during user login, the system cannot yet determine the user's tenant. To handle this, a central database or identity server is required to verify the user's credentials. Once verified, the system can redirect the user to the appropriate tenant database. Additionally, Finbuckle's WithHeaderStrategy can be used as an alternative to the host strategy for tenant identification, allowing tenant information to be passed through HTTP headers Thank you again for your replay and i cannot wait to see your video about that :)
Grt Video Thomas, i want to know whether we can make this approach multi tenant or this is tied to single tenant since fido configurations allow users from specific URL in app settings.
You could implement per-tenant options as seen here: www.finbuckle.com/MultiTenant/Docs/v9.0.0/Options and a database per-tenant as seen here: ruclips.net/video/t0pOYx9qU2U/видео.html.
Am I not seeing the backend, or was that intentional?
Hi @Anthony, you can see the adding of FIDO2-related entities to ASP.NET Core Identity in this video: ruclips.net/video/XoC_ozmlaTM/видео.html.
@@tnc1997 you rock, thanks!
@tnc1997 Yes sorry, in past Fido2 methods I used, there was a controller portion... I now see it is bound to the Application User upon creation. Thank you for taking the time to do this awesome walkthrough, it's well explained!
Hi @Anthony, this sample uses the minimal syntax with a handler class and static methods: learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis/route-handlers#static-method.
Thanks for great videos. Waiting for many great videos.
Glad you like them!
Thank you for great video! Please create more videos!
Glad you liked it!
I am getting completley lost by identity server. Is there a video before this in order to setup the client_id and client_secret?
If you would like more information about clients that use client credentials to authenticate then I would recommend this video: ruclips.net/video/1xEjmm44s04/видео.html.
It's really helpful, thank you!
You're welcome!
Not sure why you had to made this project overcomplicated with SSL. 40% of the video off subject
Thank you for your feedback, you are welcome to skip the SSL content, if it is not relevant for you.
The SSL is necessary for ANY web-based application. Thank you for including that part!
@CarCan316 you're welcome!
Hi , Thanks for sharing the implementation of OAuth. From where to get the client id & secret?Do we need to store in application itself or any appsettings json file.
You can get the client id and client secret from the service provider (in this video that would be the IdentityServer 6 application) when you register your application. You should make sure that you store the client secret in a secure location as it is a secret value that should not be publicly accessible.
Perhaps just add in to the title that you using Docker. How would it work if wer'e not ??
If you're not using Docker, then you would need an alternative reverse proxy, and you would need to ensure that application ports are unique.
I am getting Unauthorized error in postman even I got success token from Access Token URL ? can you please help on this.
Hi Devang, I would be more than happy to help where possible, can you share a link to a repository that contains your solution?
@@tnc1997 code is in my local system.. and I followed same as your code in this video.. and I got CORS error also in swagger UI. what to do in this case
@@DevangPatel-bv3zd without seeing your implementation, it's difficult to know exactly what the issue is, would you be comfortable sharing your code?
does anyone know hwo to split queries and mutations per entity? it's weird to put all mutations into same place
Hi @undercontr, you can split queries and mutations per entity by using type extensions to extend the query type and mutation type respectively: chillicream.com/docs/hotchocolate/v13/defining-a-schema/extending-types.
This ka indeed helpful, how about exter. Authentication like google or Facebook how do we implement that?
You could create an endpoint in the .NET application that returns a challenge result that redirects to the external identity provider.
Thansk for answering, I did implement this it redirected to google was able to authenticate to google but when doing the callback and managing the sign-in on the backend via `httpContext.SignInAsync` it doesn't do authenticate the user after redirection. Also there is no error 😂 weird. Do you have anyway reference for this scenario
If you are able to share a repository with the source code then I would be more than happy to help!
Great video. Super straighforward. Well done!
Much appreciated!
iam try to inject services or dbcontext in mutation or query class in constructor it give an error
Could you include more information regarding the error? Ensure that any injected dependencies have been set up correctly.
Nice vid. Just worth noting for any viewers like me, apparently the @Export directive is being removed from Hot Chocolate 14 onwards according to a post on their Slack channel, with alternate options being offered as part of a rework of batching.
Thank you very much for pointing out that deprecation for viewers.
do you think you could do one where you use identity framework and a shared database I am really struggling to set that up and I haven't found any videos outlining how its done
Many thanks for your feedback, that is definitely a topic that I will consider in the future.
Hi Thomas I just wanted to know your view about using clean architecture should we use that in our projects if not then please give some reasons Thanks
Hi, I am not familiar with clean architecture myself, so I wouldn't be able to comment on that.
Hi Thomas. I find your videos on IdS incredibly helpful. Thank you. Would this solution work if all three apps were deployed on the same domain but separate subdomains? I'd like my sign up/sign in SPA to be hosted separately from the the IdS.Bff but not sure if that will work? Like for ex. setting identityServerOptions.UserInteraction.LoginUrl = "<full domain + path>;
Thank you very much! I haven't tested that scenario myself.
No worries @@tnc1997. In that case, how would you deploy your current solution into a cloud env? Assuming you'd have to keep the UI and BFF together on the same instance given the relative paths. Or would it be easier to simply embed the SPA into the BFF and have it deployed as a single solution.
I would probably embed the SPA into the IdentityServer application such that they are running together as a single application: learn.microsoft.com/en-us/aspnet/core/client-side/spa/intro.
Looks like the sample solution here is probably pretty close to what it should look like: Git hub - /DuendeSoftware/Samples/tree/main/IdentityServer/v6/UserInteraction/SpaLoginUi (Linking directly to git hub deletes my comment)
Yes it's pretty similar to the sample in this video except that it uses vanilla JavaScript for the SPA UI.
Thaks a lot man! This is great demo.
Glad you found it helpful!
If i do localhost, it,s not working😢
Could you provide further details regarding what isn't working?
I'm working with a vps server with a dedicated IP address. The front application runs on the blazor server, and the authentication server runs on the duende identity server, this is concatenated in docker. I tried to configure the certificate on the server according to your guide. When accessing an application client 5004 or an authorization server 5001, an unsecured connection is displayed. A little later I’ll post the details with screenshots.
Thank you for the additional information, are you able to link to a repository that reproduces the issue that you're experiencing?
Thanks a lot, but is the dbContext still thread safe now. When reading the docs and using EF I read you needed to use DbcontextFactory see: "docs/hotchocolate/v13/integrations/entity-framework#dataloaders:"
I believe that it is only required to use a DB Context Factory if the DB Context is pooled: chillicream.com/docs/hotchocolate/v13/integrations/entity-framework/#working-with-a-pooled-dbcontext.
Thank you so much for the informative video. Multitenancy, in general, is a bit challenging, especially when it comes to managing tenants and their subscriptions through a dedicated tenant administration portal. This is in conjunction with data isolation strategies such as a Shared Database for All Tenants and a Separate Database Per Tenant. We dedicated the past four years to analyzing and studying the best practices that should be considered when building a SaaS app using the Multitenancy approach.
Glad you found it useful!
thanks for video, can use projection with dataloader?
You're welcome, unfortunately, I don't believe that is currently possible: github.com/ChilliCream/graphql-platform/issues/6191.
@@tnc1997 thank you
Thanks Thomas great video, but I guess it does not make sense to set ValidateIssuerSigningKey = true for Api DP configuration, as typical for this validation scenario you provided, the jwtbearer middleware automatically fetches the signing keys from the IdentityServer's JWKS endpoint based on the provided Authority and the kid (Key Id) from the access token header is used to select the appropriate key from the JWKS for signature verification.
Thank you very much for your positive feedback, upon reviewing the documentation that appears to be the case.
Thank you for the video !!!! Thanks for taking the time and effort to set this up
You're welcome!
Thanks for great video Thomas, I followed steps but I got this error "Unable to obtain configuration from: 'identityserver:7000/.well-known/openid-configuration" with statuscode 500, when trying to access api:7001/WeatherForecast. what can be the problem?
I was looking for copper, but I found gold. 😄😄 Thank you so much for this video. Really useful.
Thank you very much for your positive feedback!
What is name of editor
I use JetBrains Rider as the IDE in this video.
In 1:33:42, I insert the fields but an error happens: "auth errorTypeError: NetworkError when attempting to fetch resource."
Hi @ali-de3my, are there any additional details and/or messages logged in the browser console?
I just have a question about authority and audience in API project, I checked your github example but nothing exists! 404 unauthorized error occurs@@tnc1997
Could you confirm if you're experiencing a 404 not found or a 401 unauthorized?
I solved the issue about 404, and now, I can login. But another important problem occurs, I just copied and pasted your code, but again has happened. It show me an error about : Bearer error="invalid_token",error_description="The signature key was not found" . When I set issuer to false, then an error for key will happen. I checked db and can see many key record in Keys table, It's ok and has data for it. Please help me with this @@tnc1997
which app is being used for this?
I use JetBrains Rider as the IDE in this video.
Hi Thomas Is it possible to use the CacheDataLoader with a composite key (a combination of two strings) ?
It appears to be possible according to this issue: github.com/graphql-dotnet/graphql-dotnet/issues/1359.
@thomas Clark Why don't you create a series of video just to educate people from your experience like how to create production ready api like which can have multi users and publicly accessible? That would be a high value content
Thank you for your suggestion, I will definitely consider that in the future.
Great content 👍👍👍
Glad you liked it!
Hi Thomas... great video.. can you share a video on resource owner flow for ID server 6
Thank you very much for your positive feedback! I doubt that I will cover the Resource Owner Password Credentials grant type as it is deprecated and not recommended.
Hey Thomas! Thank you fro your great video Doubt: does this walkthrough implements OAuth 2.0 and OpenID? regards!
Thank you very much! This video covers both OAuth 2.0 and OpenID Connect.
OpenID Connect is an extension of the OAuth 2.0 specification.
@@tnc1997 you're so kind!! Thank you heaps for your reply. I'm watching the whole video This seems to come handy for my current work :)
@@tnc1997 buddy, I have not finished the whole video, but by anychance do you happen to know how to implement Refresh Token full life cycle? I mean, how the flow has to be coded in order to use refresh token after Access Token has expired?.
It depends on the client application that you're creating because most libraries automatically handle access token refresh using the offline_access scope and refresh tokens.
Great explanation 😄
Glad it was helpful!
great one thx
Thank you very much!
It's a great course I've ever seen!! Thank you very much!!! Can you make video with Windows authentification with IdentityServer6? It can help with integration with users from win.....
Thank you very much for your feedback, I'll consider a video covering that in the future!
@thomas Clark This is exactly what I was looking for and need help putting together. Question for you sir, how would you go about setting up a registration page? I'm assuming Identity Server doesn't handle registration and that would be all custom. Would you be able to do a video showing a setup like this with third party login like google or github?
Yes the registration page and associated code behind logic would need to be implemented. You could use the user auto provisioning logic as part of the external login process to create a user in IdentityServer when a user logs in via an external identity provider for the first time.
@@tnc1997 Do you know if there is any examples of the auto provisioning logic with third party login? I'm having a lot of trouble navigating identity server documentation. I'm sure all the information is there but there docs site is so poorly designed. its hard to find what your looking for.
@@funkel1989 you can find an example of the auto provisioning logic here: github.com/DuendeSoftware/IdentityServer.Quickstart.UI.AspNetIdentity/blob/4492007dc7a7637f5577eccf5a6bce942b0950bb/Pages/ExternalLogin/Callback.cshtml.cs#L110-L171.
@@tnc1997 One more thing. I followed your tutorial here to create this and the only difference between my repo and your repo is that i used vuejs 3 instead of react. I noticed that the .well-known/openid-configuration page is unable to be obtained. do you have any idea what to do to get it back?
If possible would you be able to share a link to your source code repository so that I can take a closer look and see if I can diagnose the issue?
great tutorial, Thomas! Almost doesn´t exist tutorials related to HotChocolate 13 here. I will be grateful if you post more videos about this technology. Thank you!
Thank you very much!
Thanks for taking the time and effort to set this up. Much appreciated! Keep up the fantastic work! 👏😎
Thank you very much!
This is a very lovely tutorial, very clear and concise. Do you have any other courses available? I wouldn't mind paying for them.
Thank you very much! I only have what's available on GitHub/RUclips currently, but I am open to suggestions and to helping out where I can.
@@tnc1997 Thank you for the video, it was very informational. I loved it. One enhancement suggestion is adding a photo for a profile picture for a user. Something like uploading the photo to the server and then having a uri that can be displayed on a front end. Thanks!
@@nicholasferrara8028 thank you very much for your positive feedback!
Thank you for your explanation. It's very helpful. Did you maybe ever customize your sort enum type so you can sort nullable fileds (nulls first, nulls last)? In postgresql default behavior is nulls first in DESC order, but is it possible to customize that in .NET?
Thank you very much for your positive feedback! I haven't covered extending the default sort enum type, but this documentation might be useful: chillicream.com/docs/hotchocolate/v13/fetching-data/sorting#extend-types.