Senior Identity Management Engineer

Authentication that holds up in production

I design and deliver authentication, authorization and SSO on Microsoft Entra ID and Azure AD B2C, built to keep up as the company grows. For finer-grained permissions, down to individual resources, I use OpenFGA. I have worked with .NET for 17 years and with Azure since 2010.

id_tokensample, EdDSA

header

{ "alg": "EdDSA", "typ": "JWT", "kid": "edgarus-sample" }

payload

{"iss": "https://edgarus.eu","sub": "przemyslaw-gawdzik","name": "Przemysław Gawdzik","role": "Senior Identity Management Engineer","scp": "entra-id azure-ad-b2c oauth2 oidc dotnet","azure_since": 2010,"dotnet_years": 17,"degree": "Engineer (inż.), computer networks and distributed systems"}

signature

cU11id6a6mjCXc8hz6NX_fxFjl7o5tMrhNnSLNoPUV5y11d6OlbAG7SoqFx9Pv3cET6tS-Zb-fV-KCoP7fruDg

signature verifiedsignature check failed

azure_since
2010, first as a Windows Azure trainer
dotnet_years
17, C# and ASP.NET Core
identity
Entra ID, External ID, Azure AD B2C
authorization
OAuth 2.0, OIDC, OpenFGA

What I work on

Backend, access and deployment overlap in practice, so I usually own all three on a project.

identity

Authentication and access

How users sign in, what they are allowed to do and how applications talk to each other. Day to day that means Microsoft Entra ID, External ID, Azure AD B2C, OAuth 2.0 and OpenID Connect, with SSO and MFA where they make sense. In OpenFGA I describe permissions as relationships between users and resources, as in the example model.

Entra ID, Azure AD B2C, External ID, OAuth 2.0, OIDC, OpenFGA, CIAM

openfga model, example
model
  schema 1.1

type user

type tenant
  relations
    define member: [user]
    define admin: [user]

type document
  relations
    define org: [tenant]
    define viewer: [user] or member from org
    define editor: [user] or admin from org

backend

Secure .NET applications

Identity does not end with Entra ID configuration. I also build the applications in C# and ASP.NET Core: APIs that validate identity, enforce authorization and carry the business logic and integrations. DDD, TDD and SOLID keep that code readable, tested and easy to change.

C#, ASP.NET Core, authorization policies, DDD, TDD

delivery

From code to production

Azure, containers and CI/CD, so a deployment is boring and repeatable. Infrastructure lives in code and configuration in the repository. After a release I read the logs, metrics and traces to see what is really happening. New networking, security and automation ideas go through my homelab before they reach a client.

Azure, CI/CD, containers, OpenTelemetry, homelab

Open source

Published as Edgarus79 in edgarus-labs on GitHub

About

I design and build identity solutions on Azure, including CIAM systems, and I cover the whole of it: architecture, code, automation, infrastructure and running production.

I hold an engineer’s degree (inż.) in computer networks and distributed systems from WSPA in Lublin.

experience

  1. 2022-2024Senior .NET Developer, Cloud Infrastructure ConsultantPredica (now SoftwareOne)
  2. 2019-2022Senior Software Developer, ConsultantCloudTeam
  3. 2011-2019Software Developer, ConsultantAction Centrum Edukacyjne
  4. 2010-2011Windows Azure Trainer, Consultant, DeveloperABC Data Centrum Edukacyjne

How I work

Testing

A test earns its place when it fails on a real regression, odd cases included. A test that passes while the code is wrong protects nothing.

Unit tests cover rules, calculations and edge cases in isolation. Integration tests check that the API, the database and authentication work together. End-to-end tests walk the key user journeys, including the ones where something goes wrong.

Delivery

Before I pick a tool, I ask what has to work, who will use it and who will maintain it.

I prefer small changes that are easy to review, test and fix. Readable code, useful logs and written-down decisions matter, because the next person to open the project is often me.

Got something to build or fix?

The form goes straight to my inbox.

Prefer LinkedIn? Message me there

No cookies, no analytics. The theme follows your system setting. When you switch language, your reading position is kept for up to 30 seconds so the other version opens in the same place.

5 to 5000 characters

Cloudflare Turnstile checks the form for spam in the background. By sending a message, you acknowledge Cloudflare’s Turnstile Privacy Addendum.

How your data is used

I use your name, email address and message only to reply to you. The message reaches me through Resend. I do not profile, sell or use this data for marketing.