Microsoft рд╕реНрдЯреИрдХ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛), рдЖрдк рдРрд╕реЗ рдХреЛрдб рдХреЗ рдХреЛрдб рдпрд╛ рд░реИрдкрд░ рдХреЛ рдЙрдирдХреЗ рдКрдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
HttpContext.User.Identity.Name
HttpContext.User.IsInRole(...)
рдпрд╛
Thread.CurrentPrincipal.Identity.Name
Thread.CurrentPrincipal.IsInRole(...)
рдЗрди рдХреЙрд▓ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдЗрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ: рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛, рдкреНрд░рдкрддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдПрдирдЯреАрдПрд▓рдПрдо рдЯреЛрдХрди, рдХреЗрд░реНрдмрд░реЛрд╕ рдЯреЛрдХрдиред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдЙрд╕рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
"рдкреВрд░реНрд╡-рдмрд╛рджрд▓ рд╕рдордп" рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред рдпрджрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛, рддреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдмрдирд╛рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд╕рд╡рд╛рд▓ рдЕрдХреНрд╕рд░ рдореБрдЦреНрдп рд╕рд╡рд╛рд▓ рдерд╛: рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рднреВрдорд┐рдХрд╛ рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рддрдХ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдПрдХ рд╣реЛрдиреЗ рддрдХ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рд╡реНрдпрд╛рдкрд╛рд░ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдЖрджрд┐ред рдмрд╛рджрд▓реЛрдВ, рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ, рд╕рд╛рд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдЕрдиреНрдп рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рдЬрд┐рдирдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╣ рдореЙрдбрд▓ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рд╕рд╛рдереА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реАрдЖрд░рдПрдо рдХреЗ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рд╡рд╛рд▓ рдЕрдХреНрд╕рд░ рдЙрдарддрд╛ рд╣реИ: рд╢реБрд░реВ рдореЗрдВ рдЖрдкрдиреЗ рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкреНрд░рд╢рд╛рд╕рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ, рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрджрд╛рд░рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рджреЗрдЦреЗрдВ:
[Authorize("Administrators")]
public ActionResult DoSomeHardcoreAdminStuff()
{
...
}
рдФрд░ рдПрдХ рд╕рд╛рд▓ рдХреЗ рдмрд╛рдж, рд╡реНрдпрд╡рд╕рд╛рдп рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕рдм рдХреБрдЫ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреВрд░реЗ рдирд╛рдЯрдХ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рд▓рд┐рдП SystemAdministrator рдФрд░ SecurityDirectator рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХрд░рдирд╛ред рдФрд░ рдпрд╣ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╕рд╛рдп рдХреА рдХрд▓реНрдкрдирд╛ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИрдВред
рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рд╕рдм рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдФрд░ рдмреИрд╕рд╛рдЦреА рдХреЗ рдПрдХ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реБрдЖред рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ OAuth, рдкреНрд░рдкрддреНрд░, рд╡рд┐рдВрдбреЛрдЬ, рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдирд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрд░реНрдХ рд▓рд┐рдЦрдирд╛ рдерд╛, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдкреА рдерд╛, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рднреА рдмрдирд╛рдПрдВред
рдЬрд╡рд╛рдм рдореЗрдВ, 2008 рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдлрд╛рдЙрдВрдбреЗрд╢рди (WIF) рдХреА рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рд░реА рдХреА рдЧрдИ рдереА рдФрд░ рджрд╛рд╡рд╛-рдЖрдзрд╛рд░рд┐рдд рдкрд╣рдЪрд╛рди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкреЗрд╢ рдХреА рдЧрдИ рдереАред рдЗрд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ, рдмрд┐рдирд╛ рдЗрд╕ рд╡рд┐рд╡рд░рдг рдХреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, WIF рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЖрдк 18 рд╕рд╛рд▓ рдХреЗ рд╣реЛ рдЧрдП рдФрд░ рдЖрдкрдиреЗ рд╕рд┐рдиреЗрдорд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡рдпрд╕реНрдХ рдлрд┐рд▓реНрдоред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдм рддрдХ рдкрд╛рд╕рдкреЛрд░реНрдЯ (рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдкрд╣рдЪрд╛рди рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдпрд╣ рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛)ред рдЖрдк рдкрд╛рд╕рдкреЛрд░реНрдЯ рдХрд╛рд░реНрдпрд╛рд▓рдп рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдЖрдкрдХреЛ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдкрдирд╛ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреЗрдЭрд┐рдЭрдХ рдЕрдкрдирд╛ рдХрд╝реАрдорддреА рдЯрд┐рдХрдЯ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рддреНрд░ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ WIF рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ:

рд╡рд┐рд╖рдп, рдпрд╛рдиреА рдЖрдк рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ (рдкрд╛рд╕рдкреЛрд░реНрдЯ рдХрд╛рд░реНрдпрд╛рд▓рдп) рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрдиреНрдо рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреЛ рдкрд╛рд╕рдкреЛрд░реНрдЯрдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░, рдЗрд╕ PassportToken рдХреЗ рд╕рд╛рде, рдЖрдк Relying рдкрд╛рд░реНрдЯреА (рд╕рд┐рдиреЗрдорд╛) рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЕрдкрдиреА рдЙрдореНрд░ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
1. рдЖрдкрдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рдпрд╕реНрдХ рд╕рддреНрд░ рдХреЗ рдЖрдЧрдВрддреБрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рд┐рдиреЗрдорд╛ рдХреЛ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХ рдЖрдзрд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдпрд╛ рдХрд╣реАрдВ рднреА рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрд╕реЗ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдЖрдИрдбреА рдХрд╛рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ (рдкрд╛рд╕рдкреЛрд░реНрдЯ, рд╕реИрдиреНрдп рдЖрдИрдбреА, рдЕрдзрд┐рдХрд╛рд░)ред
2. рдкрд╛рд╕рдкреЛрд░реНрдЯ рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдХрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗред (WIF рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ)ред
3. рдкрд╛рд╕рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рд┐рдиреЗрдорд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рд╡реНрд╣рд┐рд╕реНрдХреА рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдерд╛ рдореЗрдВ рдмрдВрдзрдХ рдпрд╛ рдХреБрдЫ рдФрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд░рд╛рдЬреНрдп рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╕рдВрд╕реНрдерд╛ред
рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА OAuth, WS-Trust рдФрд░ WS-Fed, SAML-P рдЬреИрд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдпреЛрдЬрдирд╛ рдЙрдирд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдЧреАред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЯреЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкрд╣рдЪрд╛рди рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдкрддрд┐рдд рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдЖрдк рд╕реНрд╡рдпрдВ рдЗрд╕ рдкреНрд░рдорд╛рдгрд┐рдд рдкрд╛рд░реНрдЯреА рд╣реИрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред WIF рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред WIF рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рд╣реИред
WIF рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкрд╛рд░реНрдЯреА рдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ "рдЖрдЙрдЯрд╕реЛрд░реНрд╕" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкрд╣рдЪрд╛рдиреЛрдВ рдХреЛ ClaimsPrincipal рдФрд░ ClaimsIdentity рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдкреНрд░рдХрд╛рд░ рдорд╛рдирдХ * рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдФрд░ * рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд╡реЗ IPrincipal рдФрд░ IIdentity рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЬреЛ рдЙрди рд╕рднреА рдХрдердиреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, IIdentity рдФрд░ IClaimsPrincipal рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
static void CheckAdministrator()
{
Console.WriteLine("User is an administrator");
}
рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рднреВрдорд┐рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрдк рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) "рдПрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░" рдорд╛рди рдХреЗ рд╕рд╛рдеред
ASP.NET MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
[ClaimsAuthorize(ClaimTypes.Role, "Administrators")]
public ActionResult DoSomeHardcoreAdminStuff()
{
...
}
рдпрд╛ рддреЛ:
[ClaimsAuthorize(ClaimTypes.Permission, "DoSomeHardcoreAdminStuff")]
public ActionResult DoSomeHardcoreAdminStuff()
{
...
}
рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрдпреБ, рдЙрд╕рдХрд╛ рдореЗрд▓рд┐рдВрдЧ рдкрддрд╛, рд╣реЛрдо рдлрд╝реЛрди рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВред
рдЗрди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рднреВрдорд┐рдХрд╛ рдЖрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдм рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдк рдпрд╣ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ, рдХрд┐рд╕ рдЖрдзрд╛рд░ рдкрд░ рдФрд░ рдХрд╣рд╛рдБ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдЕрдВрдЬрд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдП, рд╕рд╛рде рд╣реА рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрдВрддреНрд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдПрдХ рдорд╛рдирдХ рд▓реЙрдЧрд┐рди-рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝реА рдпрд╛ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдб рд╣реЛред рдпрд╣ рдЖрдкрдХреЗ рдкрд╣рдЪрд╛рди рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, Microsoft рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рджреЛ рдореБрдЦреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВ: ADFS (рдПрдХреНрдЯрд┐рд╡ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдлреЗрдбрд░реЗрд╢рди рд╕рд░реНрд╡рд┐рд╕реЗрдЬ) рдФрд░ рдПрдЬрд╝реНрдпреЛрд░ рдПрд╕реАрдПрд╕ред рдпрджрд┐ рди рддреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдиреЗ рдЖрдкрдХреЛ рд╕реВрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕реЗрд╡рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд IdentityServer рд╕рд░реНрд╡рд░ рднреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдк рдЕрдкрдирд╛ рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреБрдЫ рддрдереНрдп:
рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, WIF рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
1. рдбрдмреНрд▓реНрдпреВрдПрд╕-рдлреЗрдбрд░реЗрд╢рди
2. рдбрдмреНрд▓реНрдпреВрдПрд╕-рдЯреНрд░рд╕реНрдЯ
3. WS- рд╕реБрд░рдХреНрд╖рд╛
4. WS-SecurityPolicy
5. рдбрдмреНрд▓реНрдпреВрдПрд╕-рдПрдбреНрд░реЗрд╕рд┐рдВрдЧ
SAML-P рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдкреЛрд░реНрдЯ CTP рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИред рдЖрд░рдЯреАрдПрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рддрдХ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред OAuth2 рдПрдХреНрд╕рдЯреЗрдВрд╢рди рднреА рд╣реИрдВред
SAML1.1 рдФрд░ SAML2 рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдорд╛рдирдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рд╡рд┐рдХрд╕рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ SWT рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ JWT (Json Web Token) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдпрд╣ System.Security рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдерд╛ред рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдкрдж рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛
рд╡реИрд╕реЗ, .Net рдореЗрдВ 4.5 рджрд╛рд╡реЗ рдЖрдзрд╛рд░рд┐рдд рдкрд╣рдЪрд╛рди рдФрд░ WIF рдкрд░реНрд╡рдд рдХреЗ рд░рд╛рдЬрд╛ рдмрди рдЬрд╛рддреЗ рд╣реИрдВред рд╕рднреА рдкреНрд░рдХрд╛рд░ * рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЛ рдХреНрд▓реЗрдореНрд╕рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛, рдХреЗрд░реНрдмрд░реЛрд╕ рдЯреЛрдХрди рдХреЗ рдЕрдВрджрд░ рдмрдпрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрдЧрд╛ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордп рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
1.
рдПрдордПрд╕рдбреАрдПрди рдкрд░
msdn.microsoft.com/en-us/security/aa570351.aspx - рдкреЗрдЬред
2.
Claid.codeplex.com - рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдФрд░ рдПрдХ рдореБрдлреНрдд рдкреБрд╕реНрддрдХред
3. рдХрдо рд╕реЗ
рдХрдо ред
Com - рдбреЛрдорд┐рдирд┐рдХ
рдмреИрдХрд░ рдмреНрд▓реЙрдЧред
4. github.com/thinktecture/Thinktecture.IdentityServer - рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд╣рдЪрд╛рди рд╕рд░реНрд╡рд░ред
рдкреБрдирд╢реНрдЪред рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП
XaocCPS рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред