Category Archives: Development

rangee – Serialize/Deserialize Range in HTML [Lukáš Rada, HAVIT Vzdělávací okénko 12.4.2018]

Záznam ze Vzdělávacího okénka HAVIT z 12. dubna 2018. Je publikován na našem HAVIT YouTube Channelu.

Svou open-source JavaScriptovou komponentu pro serializaci a deserializaci Range objektů (např. z window.getSelection) prezentoval Lukáš Rada.

Global Azure Bootcamp Praha – 21.4.2018 – pozvánka

Zveme vás na Global Azure Bootcamp Praha – 21.4.2018

Přednášející

  • Robert Haken
  • Tomáš Herceg
  • David Gešvindr
  • Jiří Činčura
  • Tomáš Kubica
  • Marek Chmel & Vladimír Mužný
  • David Gešvindr
  • a další osobnosti světa Azure!

Těšit se můžete na

  • Novinky v Azure PaaS
  • Azure Cosmos DB
  • Azure SQL
  • Zkušenosti s Azure CDN
  • Zkušenosti s migrací do Azure
  • Azure Bot Service
  • Power BI a otevřená data
  • Kubernetes
  • Azure IoT hub
  • Diganostické možnosti Azure App Service
  • a další přednášky nejen o Azure

V pátek v předtermínu nabitý workshop

  • Utilizing Azure Services for Data Science and Machine Learning

SQL: TDE, Always Encrypted [Jiří Kanda, HAVIT Vzdělávací okénko 5.4.2018]

Záznam ze Vzdělávacího okénka HAVIT z 5. dubna 2018. Je publikován na našem HAVIT YouTube Channelu.

Dotčená témata:

  • Transparent Data Encryption (TDE)
  • Always Encrypted
    • Deterministic vs. Randomized
    • sp_describe_parameter_encryption
    • Connection String: Column Encryption Setting=enabled

CORS a WebAPI

V rámci solution máme dva webové projekty – Web (javascriptová single-page aplikace) a WebAPI (backend s API). v ASP.NET Core 2.0. Řešili jsme problém, že nám nefungoval spolehlivě CORS – javascriptové requesty z Webu nedostávaly správné odpovědi od WebAPI. Chovalo se to velmi podivně i přesto, že lokálně vše fungovalo, a to i když aplikace běžely na různých portech.

Konkrétně:

  • Některé GET requesty fungovaly i v testovacím prostředí, ale POST, PUT a DELETE requesty nikdy.
  • GET requesty browser někdy zdvojoval (zejména v Safari na Macu), první vždy prošel (status code 200) a druhý neprošel (status code 403)
  • V Developer tools v Chrome, ani v Safari nejsou vidět autorizační hlavičky i přesto, že uživatel je přihlášený (při odchycení requestu Fiddlerem tam skutečně jsou). Ovšem na localhostu jsou vidět autorizační hlavičky vždy.

CORS v aplikaci máme nastaven celkem standardně a nepříliš restriktivně:

2018-04-10-CORS-settings

Kde byl(y) problém(y):

Nejdříve jsme neměli povolené všechny hlavičky (pozor zejména na Authorization, která není v Chrome Developer tools defaultně vidět). Nakonec jsme stejně skočili u AllowAnyHeader().

Důležité je mít povoleno AllowCredentials(), pokud řešíte přihlašování

Na co nám nejdéle trvalo přijít je, že je potřeba povolit anonymní autentifikaci i když v aplikaci žádné anonymní požadavky nejsou potřeba (povoluje se to v IIS na obrázku níže). Je potřeba na to ovšem myslet a v aplikaci si ošetřit, že uživatel musí být přihlášen při běžném přístupu do aplikace.

2018-04-10-CORS-IIS

Na pozadí CORS funguje tak, že vzdálený klient nejdříve udělá tzv. preflight request metodou OPTIONS a v hlavičce pošle informace, na jakou URL chce jakou metodou kdo přistupovat. Pokud není povolena anonymní autentifikace, OPTIONS požadavek selže (vrátí 401), protože v hlavičce preflight requestu se dle specifikace https://fetch.spec.whatwg.org/#cors-preflight-fetch autorizační hlavička neposílá. V takovém případě vzdálený klient není schopný zjistit, zda bude mít oprávnění udělat skutečný požadavek, a tak celá komunikace selže (nebo se chová nepředvídatelně – viz podivnosti výše).

Technické podrobnosti např. zde: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Nakonec pro přehlednost ještě schéma posílání CORS požadavků:2018-04-10-CORS-schema

Cloud Design Patterns – záznam, slides [WUG Days Brno 04/2018]

Záznam z přednášky pro konferenci WUG Days Brno z 8. dubna 2018. Je publikován na našem HAVIT YouTube Channelu.

Materiály

Dotčená témata

  • Anti-Corruption Layer
  • External Configuration Store
  • .NET 4.7.1 – ConfigurationBuilders
  • Gateway Aggregation
  • Gateway Offloading
  • Gateway Routing
  • Health Endpoint Monitoring
  • Sidecar
  • Ambassador
  • Cache-Aside
  • Locking with Double Checking
  • Static Content Hosting
  • Sharding – Lookup Strategy, Range Strategy, Hash Strategy
  • Throttling
  • Retry
  • Bulkhead
  • Circuit Breaker
  • Materialized View
  • Event Sourcing
  • Compensating Transaction
  • CQRS – Command and Query Responsibility Segregation
  • Valet Key

Optimalizace SQL dotazů [Robert Haken, FreshIT, 27.3.2018]

Záznam z přednášky pro konferenci FreshIT Praha z 27.3.2018. Je publikován na našem HAVIT YouTube Channelu.

Materiály

Dotčená témata

  • SQL Optimalizace
  • Zacílení optimalizace
  • Connection Pooling
  • Cachování
  • DB Schema
  • Heap
  • Clustered Index, Non-Clustered Index
  • Execution Plans
  • Statistiky
  • Table Scan, Index Scan, Index Seek, Lookup
  • Merge Join, Hashmatch, Nested Loops
  • Parameter Sniffing
  • Porovnávání dle data

a další…

Správa Azure subscription patřící Microsoft Accountu z Organizational Accountu (AAD)

Můžete se stejně jako já ocitnout v situaci, kdy

  • máte existující Azure Subscription patřící pod Microsoft Account,
  • chcete ji spravovat pomocí svého Organizational Accountu (Azure AD),
  • a nechcete nebo nemůžete z jakéhokoliv důvodu převést vlastníka subscription na Organizational Account – např. pokud se jedná o sponzorovanou subscription, kde je sponzorství asociované na určitý Microsoft Account (Microsoft Partner Network, MSDN Subscription, MVP Sponsorship, atp.).

Celý trik je prostý „change the directory of the subscription to your Azure AD directory“. Toto uspořádání vám ponechá vlastnictví subscription na Microsoft Accountu (Account Admin), přesto budete moci subscription na portále spravovat při přihlášení přes svůj Organizational Account.

Prakticky je to jen pár kroků:

1. Přidejte Microsoft Account do svého Azure AD jako „guest user“

Aby bylo možné změnit directory oné subscription, musí být příslušný Microsoft Account členem cílového AAD. Asociaci MSA k AAD provedete jednoduše:

  • Přihlašte se do Azure Portálu jako Azure AD administrator cílového AAD.
  • Otevřete si Azure Active Directory blade.
  • Jděte do sekce Users.
  • Zvolte tlačítko „+ New guest user“ v horní liště.
  • Pozvěte svůj Microsoft Account do cílové Azure Active Directory.

2018-03-26_9-50-53

2. Přijměte pozvánku Microsoft Accountu do AAD

Pozvánku je potřeba přijmout…

  • Dostanete do e-mailové schránky Microsoft Accountu zprávu, v které je tlačítko pro přijetí pozvánky.
  • Raději neklikejte na tlačítko Accept Invitation přímo, protože váš browser může být přihlášený na Organizational Account (nebo se jinak chytne na buchvíjaký účet).
  • Raději naberte cílové URL tlačítka do schránky a otevřete ho v privátním okně browseru (New incognito window, popř. In-private, či jak se to v různých browserech jmenuje).
  • Přihlašte se pomocí Microsoft Accountu.
  • Po přihlášení a akceptaci pozvánky budete nejspíš přesměrováni na matoucí (dost často prázdnou) stránku Applications. Nicméně asociace je vytvořena a můžete browser zavřít.

3. Změna directory subscription

Nyní můžete změnit directory subscription na cílové AAD:

  • Přihlašte se do Azure Portalu svým Microsoft Accountem.
  • Otevřete si příslušnou subscription (můžete využít např. vyhledávací pole nahoře a napsat „subscription“).
  • Klikněte na tlačítko Change directory v horní liště tlačítek.
  • Na panelu Change the directory byste nyní měli mít možnost vybrat svou Azure AD jako cílovou directory pro změnu.
  • Potvrďte změnu.

Změna se obvykle projeví během 10 minut.

2018-03-26_9-49-25

4. Přidání oprávnění pro váš Organizational Account

Abyste mohli svůj Organizational Account použít ke správě subscription, je potřeba mu přidat příslušná oprávnění (dokud jste přihlášeni pomocí původního Microsoft Accountu).

  • V blade Subscription se přepněte do sekce Access control (AIM).
  • Přidejte svému Organizational Accountu roli Owner na úrovni subscription.
  • V kontextovém menu (pravé tlačítko myši) na přidaném Organizational Accountu můžete též zvolit Add as co-administrator. Některé okrajové starší scénáře ještě spoléhají na co-administrátorské oprávnění a nestačí jim role Owner..

2018-03-26_9-22-25

5. Hotovo

  • Odhlaste se z Microsoft Accountu, přihlašte se Organizational Accountem a měli byste mít možnost subscription v portále spravovat.