рд╕реЗрдорд╕рд╛рдЗрдЯ рдПрдХ 2016
HTTP рдХреБрдХреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рдЕрдиреБрд░реЛрдз рдЬрд╛рд▓рд╕рд╛рдЬреА (рд╕реАрдПрд╕рдЖрд░рдПрдл) рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЗрд╕рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдереА рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдПрдХ рдирдИ рд╕рдорд╛рди рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рджреЛ рдЕрд░реНрде рдереЗ, рд▓реИрдХ рдФрд░ рд╕реНрдЯреНрд░рд┐рдХреНрдЯред
рд▓рдХреНрд╖реНрдордг рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдХреАрдЬрд╝ рдХреЛ рдПрдХ рд╕рд╛рдЗрдЯ рдкрд░ рд╕рд░реНрдлрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╛ рдЕрдиреНрдп рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдЬреАрдИрдЯреА рд╕рд░реНрдлрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореВрд▓реНрдп рд╕реАрдорд┐рдд рдХреБрдХреАрдЬрд╝ред рдХрд┐рд╕реА рднреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХрдореА рдХреБрдХреАрдЬрд╝ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред OpenIdConnect рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдСрдкрд░реЗрд╢рдВрд╕ (рдЬреИрд╕реЗ, рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛, рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░рдирд╛) рдФрд░ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рд╕рд╛рдЗрдЯ рд╕реЗ POST рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рд╛рдЗрдЯ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ, рдЬреЛ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдХреАрдЬрд╝ рдХреЛ рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ / рдпрд╛ CSRF рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рдПрдХ рд╕рдореНрдкрддреНрддрд┐ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд┐рдирд╛ рд╕реЗрдорд╕рд╛рдЗрдЯ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЗрди рдХреБрдХреАрдЬрд╝ рдХреЛ рдЙрдирдХреЗ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╡рд╛рд╣ рдХреЗ рджреМрд░рд╛рди рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
Google рд╡рд░реНрддрдорд╛рди
рдореЗрдВ рдорд╛рдирдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреНрд░реЛрдо рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЙрд╕реА рд╕рдорд╛рди "рдХреЛрдИ рдирд╣реАрдВ" рдореВрд▓реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ "рд▓рдХреНрд╖" рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣ OpenIdConnect рд▓реЙрдЧрд┐рди рдФрд░ рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдмрди рд╕рдХрддреА рд╣реИрдВред рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рдирдХреА рд╕рдорд╛рди рд╕рдВрдкрддреНрддрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреЛ рдореВрд▓ рдорд╛рдирдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирдП рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдирдП рдорд╛рдирдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреА .NET рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдЕрдм рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдирдпрд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рднреЗрдЬрдирд╛ рд╣реИ рдпрд╛ рд╕рднреА рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рднреЗрдЬрдирд╛ рд╣реИред

.NET рдХреЛ Google рдХреЗ рдирдП рдореВрд▓реНрдп рдХреА рд╢реБрд░реВрдЖрдд рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП .NET 4.7.2 рдФрд░ .NET рдХреЛрд░ 2.1 рдореЗрдВ рд╕рдорд╕реИрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди 19 рдирд╡рдВрдмрд░ рдХреЛ Microsoft рдЕрджреНрдпрддрди рдФрд░ WSUS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдкрдбреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЪреЗрдХ рдлреЙрд░ рдЕрдкрдбреЗрдЯреНрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред 10 рджрд┐рд╕рдВрдмрд░ рдХреЛ, рдЕрдкрдбреЗрдЯ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ Microsoft рдЕрджреНрдпрддрди рдХреЗрдВрджреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред .NET рдХреЛрд░ рдЕрдкрдбреЗрдЯ рдирд╡рдВрдмрд░ рдореЗрдВ .NET рдХреЛрд░ 3.1 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдЬреЛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ред
.NET Core 3.1 рдореЗрдВ рдПрдХ
рдЕрджреНрдпрддрди рдПрдиреБрдо
рдкрд░рд┐рднрд╛рд╖рд╛ , SameSite.Unspecified рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА, рдЬреЛ рд╕рдорд╛рди рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧреАред
Microsoft.Owin v4.1 рдФрд░ .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП OpenIdConnect рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рд╕реВрдБрдШрдиреЗ рдХрд╛ рдХреЛрдб рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЗ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдЬреЗрдВрдЯ рд╕реВрдБрдШрдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдк ASP.NET рдпрд╛ ASP.NET Core рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
ASP.NET 4.7.2 рдХреЗ рд▓рд┐рдП Microsoft.Owin рдХреЗ рд╕рд╛рде 4.1.0 рдПрдЬреЗрдВрдЯ рд╕реВрдБрдШрдиреЗ рдХреЛ
ICookieManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
public class SameSiteCookieManager : ICookieManager { private readonly ICookieManager _innerManager; public SameSiteCookieManager() : this(new CookieManager()) { } public SameSiteCookieManager(ICookieManager innerManager) { _innerManager = innerManager; } public void AppendResponseCookie(IOwinContext context, string key, string value, CookieOptions options) { CheckSameSite(context, options); _innerManager.AppendResponseCookie(context, key, value, options); } public void DeleteCookie(IOwinContext context, string key, CookieOptions options) { CheckSameSite(context, options); _innerManager.DeleteCookie(context, key, options); } public string GetRequestCookie(IOwinContext context, string key) { return _innerManager.GetRequestCookie(context, key); } private void CheckSameSite(IOwinContext context, CookieOptions options) { if (DisallowsSameSiteNone(context) && options.SameSite == SameSiteMode.None) { options.SameSite = null; } } public static bool DisallowsSameSiteNone(IOwinContext context) {
рдФрд░ рдлрд┐рд░ рдирдП рдХреБрдХреА рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OpenIdConnect рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ;
app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions {
SystemWebCookieManager рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддрдп рд╕рдорд╕реИрдЯ .NET 4.7.2 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
ASP.NET Core рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреИрдЪ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░
рдХреБрдХреА рдкреЙрд▓рд┐рд╕реА рдореЗрдВ рдПрдЬреЗрдВрдЯ рд╕реВрдБрдШрдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред 3.1 рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, SameSiteMode.Unspecified (SameSiteMode) (- 1) рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
private void CheckSameSite(HttpContext httpContext, CookieOptions options) { if (options.SameSite > SameSiteMode.Unspecified) { var userAgent = httpContext.Request.Headers["User-Agent"].ToString();
Azure рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЯреАрдо рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрдХ рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ Azure рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирдП рдорд╛рди рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред
public static bool DisallowsSameSiteNone(string userAgent) {
рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рдпрд╣ рд╕реВрдЪреА рдХрд┐рд╕реА рдРрд╕реЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирд┐рдпрдорд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдЕрдкрдбреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдареАрдХ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдХреНрд░реЛрдо 80 рдлрд░рд╡рд░реА рдпрд╛ рдорд╛рд░реНрдЪ 2020 рдореЗрдВ
рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ
рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреЗ рдХрд╛рд░рдг
рд╣реИ ред рдпрджрд┐ рдЖрдк рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг
рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЙрд╕ рд╕рдордп рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдХреНрд░реЛрдо 2020 рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк OpenIdConnect рд╕реНрдЯреНрд░реАрдо рдХреЛ рдПрдХ рдХреЛрдб рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ ASP.NET рдФрд░ ASP.NET рдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЛрд░ рдХреЗ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдирд╡рдВрдмрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреНрд░реЛрдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдбреЗрдЯ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред