From 8556626ff3427885ce33d3425d69c49eed7d85c9 Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Thu, 13 Aug 2026 09:37:28 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=BB=D0=B6=D0=B5=D0=BD=20=D1=87?= =?UTF-8?q?=D0=B8=D1=82=D0=B0=D1=82=D1=8C=D1=81=D1=8F=20email=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D1=82=D0=BE=D0=BA=D0=B5=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Tnsu.ApprovalRoute.Api/Auth/AuthSetup.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backend/Tnsu.ApprovalRoute.Api/Auth/AuthSetup.cs b/backend/Tnsu.ApprovalRoute.Api/Auth/AuthSetup.cs index 8e0d770..5d82424 100644 --- a/backend/Tnsu.ApprovalRoute.Api/Auth/AuthSetup.cs +++ b/backend/Tnsu.ApprovalRoute.Api/Auth/AuthSetup.cs @@ -58,6 +58,14 @@ public static class AuthSetup { options.Authority = $"https://login.microsoftonline.com/{tenantId}/v2.0"; options.TokenValidationParameters = validationParameters(); + // Без этого JwtBearerHandler переименовывает короткие имена claim'ов + // из токена в длинные ClaimTypes-URI (upn → ClaimTypes.Upn, + // unique_name → ClaimTypes.Name — а НЕ ClaimTypes.Email!) ещё до + // того, как код увидит ClaimsPrincipal. CurrentUserAccessor ищет + // ровно сырые имена ("upn", "unique_name") — с ремаппингом они не + // совпадали ни с чем, и email инициатора не находился вообще + // (не только у токенов без claim'а email, как этот — у ЛЮБЫХ). + options.MapInboundClaims = false; }); services.AddAuthentication() @@ -65,6 +73,7 @@ public static class AuthSetup { options.Authority = $"https://login.microsoftonline.com/{tenantId}/v2.0"; options.TokenValidationParameters = validationParameters(); + options.MapInboundClaims = false; options.Events = new JwtBearerEvents { // Подпись, издатель и аудитория у app-only токена те же, что у