defiant schreef op zondag 29 september 2019 @ 14:00:
Het commerciële punt van Microsoft is dan ook dat het .NET framework voor de belangrijkste componenten een officieel ondersteunde Microsoft variant beschikbaar heeft. D.w.z. in tegenstelling tot Java, hoef je als je wilt geen keuzes te maken, maar kies je voor EF, WCF (niet in core), ASP.NET MVC, etc.
Daar voldoen ze al een tijdje niet meer aan.
Sterker nog, open source is een manier voor ze om juist steeds meer dingen af te stoten. Daarom verbaast het mij ook dat ze soms alsnog weer iets zelf gaan doen, zoals die JSON library.
Een groot bedrijf als Microsoft denkt simpelweg door de community bij een project te betrekken, dat ze dan met minder mensen in dienst bepaalde producten in leven kunnen houden. Als je op github kijkt wie er dan commit, dan is het ook nog eens vaak een intern.
Vanuit de ORM wereld is er altijd veel kritiek geweest op EF, zeker in het begin. Met de komst van .NET Core slaat Microsoft weer een nieuwe richting in waarin er bijvoorbeeld opeens een officieel Microsoft DI framework aanwezig is, maar aan de andere kant afscheid wordt genomen van een officieel component voor SOAP services (wat in de corporate/enterprise wereld nog veel wordt gebruikt).
Het lijkt erop alsof MS wil meeliften op de snel bewegende wereld van web/cloud/etc.
Ook al wil je graag een eigen ORM oplossing aanbieden, dan nog is het handig als je klanten / gebruikers de mogelijkheid geeft om er aan te knopen wat je maar wil.
Nu kan dat met IdentityServer ook, maar Microsoft documenteert dat scenario niet / nauwelijks. Alle voorbeelden gebruiken EF. Dus als jij geen EF maar NHibernate of Dapper wil gebruiken, dan moet je het van de community hebben en eindig je al snel op iemand zijn blog die dan een artikel schrijft met een enorm stappenplan dat je denkt van "really? voor zoiets simpels?".
Microsoft duwt EF door je strot met zo ongeveer alles dat je wil doen. Sowieso is een nieuw ASP.NET Core project maken een mijnenveld. Ik kies altijd voor een Empty Project template, en voeg dan elk dingetje dat ik wil handmatig toe... anders krijg ik er een berg zooi bij waar ik helemaal niet op zit te wachten. Van uitgebreide telemetrie, EF, tot en met allemaal JavaScript en bootstrap libraries waarvan ik helemaal niet wil dat Visual Studio die beheert.
Ach ja.
Grijze Vos schreef op zondag 29 september 2019 @ 20:16:
[...]
Wij generaten idd zelf JWT tokens en stoppen die in een cookie. Moet eerlijk zeggen dat ik het niet gebouwd heb en er vrij weinig van weet. Heb alleen de implementatie as is netjes weggewerkt in onze nieuwe .NET Core architectuur nadat mijn collega het gebouwd had.
Hoe doen jullie dan sessie management?
Stel je genereert een JWT token, dan verloopt deze meestal na 10 tot 15 minuten. Als gebruikers actief bezig zijn met jouw SPA, is het niet handig als ze ineens opnieuw moeten inloggen. Dus dan zul je automatisch een nieuw access token moeten aanvragen, met bijvoorbeeld een refresh token.
Maar zodra iemand een refresh token bemachtigt, kan hij oneindig nieuwe tokens aanvragen... dus dat is een vrij nasty scenario als daar geen extra beveiliging op zit.
Of gaan jullie zover als sommige voorbeelden die ik gezien heb, dat elke gelukte request naar een API ook automatisch een nieuw token oplevert? Dat voelt heel wrang voor mij ergens (het mixen van 2 verantwoordelijkheden).
Al met al vind ik de gedachte achter een aparte IdentityServer die als authority fungeert voor het uitdelen en valideren van tokens wel iets hebben, omdat je dan 1 duidelijke afgebakende functie hebt op 1 plek. Bovendien met een beperkte attack surface.
PS
Wat ik wil, lijkt met een eigen implementatie van IResourceOwnerPasswordValidator te kunnen:
https://www.linkedin.com/...4-using-owner-dalvandi-2/
Ik ga er nog een tijdje mee verder spelen. Zou natuurlijk prima een class kunnen maken die IResourceOwnerPasswordValidator implementeert en bijvoorbeeld met Dapper de juiste gegevens erbij haalt.
Schijnt onveilige methode te zijn

Ach ja. Next.
"The Resource Owner Password Flow is rarely the recommended approach. It is intended for applications for which no other flow works"
Ik moet er echt rustig voor gaan zitten en het allemaal gaan uitzoeken... meh. Ook fijn dat er blijkbaar mensen zijn die het gewoon implementeren en het verder prima vinden. Er zelfs een hele blog post op LinkedIn aan wenden.
[
Voor 30% gewijzigd door
Lethalis op 29-09-2019 21:37
]
Ask yourself if you are happy and then you cease to be.