Category Archives: Development

Azure OpenAI chat (Global Azure Keynote) – záznam a demo [Robert Haken, Global Azure Praha 05/2023]

V pátek 12. května jsme společně s Davidem Gešvindrem (WUG) a Tomášem Hercegem (Update Conference) pořádali v pražském Microsoftu lokální běh celosvětové konference Global Azure.

Záznam z keynote, kde jsem v podstatě celou dobu mluvil o Azure OpenAI a vytváření chatbota v ChatGPT.

Chatbota si můžete vyzkoušet na chat.havit.cz.

Demo samotné najdete tradičně na GitHub: github.com/havit/HavitOpenAIChatPOC

Pokud máte zájem o něco podobného, ať už od nás naprogramovat, nebo jako pomoc vašemu IT týmu, ozvěte se nám havit.cz/kontakty.

Blazor WASM: Nepodporované připojení k AAD pomocí standardní auth-knihovny (Microsoft.AspNetCore.Components.WebAssembly.Authentication)

Pokud jste si (podobně jako já) slibovali, že „snadno“ vytvoříte Blazor aplikaci, která bude napojitelná na obecného OIDC identity-providera pomocí knihovny Microsoft.AspNetCore.Components.WebAssembly.Authentication, přičemž budete zároveň touto cestou podporovat i napojení na Azure Active Directory (AAD), zklamu vás.

Myšlenka je jednoduchá, AAD přeci podporuje OIDC a tedy nyní důvod, proč by obecný OIDC klient neměl jít připojit i na AAD. Bohužel překážek je více, než byste chtěli překonávat.

Knihovna Microsoft.Authentication.WebAssembly.Msal, která je pro AAD určená, je sice nadstavbou základní Microsoft.AspNetCore.Components.WebAssembly.Authentication knihovny, dělá toho však o dost více, než jenom boilerplate konfiguraci podkladového obecného OIDC.

Základní rozdíl můžete najít například v „interop“ části s podkladovým JavaScriptovým modulem oidc-client.

  • AuthenticationService.ts v Microsoft.AspNetCore.Components.WebAssembly.Authentication,
  • AuthenticationService.ts v Microsoft.Authentication.WebAssembly.Msal.

Projevuje se to například při vyzvedávání access-tokenů. MSAL verze „fixuje“ specifikum AAD, které při dotazech na token endpoint ne vždy vrátí access-token se všemi požadovanými scopes (detaily jsou na širší diskuzi, ale např. nedostanete token, který by v sobě měl User.Read scope společně s custom-scope vašeho API, atp.).

Základní knihovna využívá „cachování“ tokenů v UserManageru oidc-client a spoléhá se na předpoklad: „Pokud token-endpoint vrátil access-token, pak tento token v sobě má všechny požadované scopes.“ (tedy si k získanému tokenu požadované scopes uloží a pak při dalším požadavku na stejné scopes vrací již získaný token).

„Fixovaná“ knihovna MSAL tento nedostatek podkladového oidc-client zná a ví, že tento sice tvrdí, že má token pro nějakou sadu scopes, ale access-token ve skutečnosti tyto scopes mít nemusí. Proto „vypíná“ na této úrovni cachování a získává token vždy znovu.

Základní Azure PaaS služby [Jiří Kanda, Vzdělávací okénko, 29.3.2023]

Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval, jak v HAVITu používáme platformní služby Azure pro hosting aplikací.

Slides

Novinky v C# 11, [ASP].NET 7 a Blazor – záznam, slides a dema [Robert Haken, FreshIT Praha 2023]

Záznam z přednášky pro konferenci FreshIT Praha z 30. března 2023, kde jsem povídal o novinkách v platformě .NET v poslední verzi 7.

Dema

Slides

Havit.Blazor – založení projektu z šablony [Robert Haken, Vzdělávací okénko, 22.3.2023]

Záznam ze Vzdělávacího okénka HAVIT z 22.3.2023.
Povídal jsem o založení nového projektu (solution) z šablony https://github.com/havit/NewProjectTemplate-Blazor.

Podrobnosti o Havit.Blazor stacku viz záznam přednášky pro WUG Zlín.

Havit.Blazor stack podrobněji – záznam z WUG Zlín [Robert Haken, 28.2.2023]

Záznam z přednášky pro komunitní setkání WUG Zlín z 28. února 2023. Povídal jsem o uspořádání Havit.Blazor stacku (šablona https://github.com/havit/NewProjectTemplate-Blazor) a proč je uspořádaný, tak jak je.

Slides (PDF):

Havit.Blazor stack – záznam z WUG Days 2023.1

Záznam z přednášky pro konferenci WUG Days 2023.1 v Brně z 30. ledna 2023. Povídal jsem o uspořádání Havit.Blazor stacku (šablona https://github.com/havit/NewProjectTemplate-Blazor) a proč je uspořádaný, tak jak je.

Slides (PDF):

Blazor – životní cyklus komponent II [Jiří Kanda, Vzdělávací okénko, 1.12.2021]

Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval již podruhé životní cyklus Razor (Blazor) komponent. Tentokrát se soustředil na detekci změn parametrů komponent.

Novinky v C# 10 [Alexandr Hájek, Vzdělávací okénko, 3.11.2021]

Záznam ze Vzdělávacího okénka HAVIT, kde Alex Hájek mluvil o novinkách v programovacím jazyce C# verze 10.

JavaScript Interop v Blazor [Jiří Kanda, Vzdělávací okénko, 27.10.2021]

Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval, jak volat z Blazoru JavaScript a z JavaScriptu Blazor.