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.
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
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 orgbackend
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
Code Janitor
Cleans up and modernizes C# in Visual Studio and VS Code, so nobody has to do it by hand.
VS 2026, VS Code · C# · LGPL-3.0
Project pageClaude Code VS
Claude Code inside Visual Studio, without leaving the IDE.
VS 2022, 2026 · Agent Client Protocol · MIT
Project pageoh-my-pi
The oh-my-pi coding agent in Visual Studio and VS Code, with native diffs and control over the editor.
VS 2022, 2026, VS Code · OMP JSONL RPC · MIT
Project page
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
- 2022-2024Senior .NET Developer, Cloud Infrastructure ConsultantPredica (now SoftwareOne)
- 2019-2022Senior Software Developer, ConsultantCloudTeam
- 2011-2019Software Developer, ConsultantAction Centrum Edukacyjne
- 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.