рд╢реБрдн рджреЛрдкрд╣рд░ рдЦреЗрд▓реЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛, рдореИрдВ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рднреМрддрд┐рдХ рд╕рд╛рдзрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдкрд░ рдХрднреА рднреА рдХрд┐рд╕реА рдЖрдВрдХрдбрд╝реЗ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдмреЗрд╢рдХ, рд╣рдо рдХреЗрд╡рд▓ рд╡рд┐рд╖рдпрдЧрдд рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рдЕрднреА рднреА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд░ рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд▓реЗрдЦ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдЬреВрд╕реА рдХрд░рдХреЗ рд╕рдВрдЪрд╛рд░ рдЧреБрдгрд╛рдВрдХ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛, рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рддреИрдпрд╛рд░ рд╣реИ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдврдХрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрд╕реЗ рдлрд╛рдпрджрд╛ рд╣реЛрдЧрд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЪрд╛рд░ рд▓реЛрдЧ рдереЗ, рдПрдХ рд╕рд░реНрд╡рд░ рднрд╛рдЧ, рдХреБрдЫ рдирдХрджреА рдФрд░ рдПрдХ рд╕рд╛рд░ рдпреЛрдЬрдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред рд╡рд┐рдВрдбреЛрдЬ 8 рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╣рдордореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдХреЛрдИ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рд╛рд╣рд┐рддреНрдп рдкрдврд╝рд╛: рд╡рд┐рдВрдбреЛрдЬ 8, рд╕реА #, .рдиреЗрдЯред рджреЛ рджрд┐рди рдмрд╛рдж, рд╣рдо рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдереЗ, рдореЗрдЯреНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, .NET рдкреНрд░рднрд╛рд╡рд┐рдд рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрднрд╡ред рдлрд┐рд░ рджреЛрдиреЛрдВ рдиреЗ рдордВрдЪ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд╕рд╣реА рдЬрд╡рд╛рдм рджрд┐рдПред рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ, рдкрд╣рд▓рд╛ рдХрд╛рдо рдЕрдиреБрд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдВрддрд┐рдо рд╡реНрдпрдХреНрддрд┐ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд▓рдЧрднрдЧ 13-15 рджрд┐рдиреЛрдВ рддрдХ рдЪрд▓рд╛, рдЗрд╕ рджреМрд░рд╛рди рдЦреЗрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдорд╕реМрджрд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреЗрдЪ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдбрд┐рдЬрд╛рдЗрдирд░ рдиреЗ рдЦреБрдж рдХреЛ рдЪреБрдирд╛ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдФрд░ рдХрд┐рддрдиреЗ рд╕рдордп рддрдХ рд╣рдореЗрдВ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдЧреЗрдо рдерд╛ рдЬреЛ HTML рдФрд░ JS рдХреЛ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рдерд╛ред рд╕реНрдХреЗрдЪ рдХреА рд▓рд╛рдЧрдд 1000 рд╕реЗ 2000 рд░реВрдмрд▓ рддрдХ рдереА, рдХреБрд▓ 4 рд╕реНрдХреЗрдЪ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рд╣рдордиреЗ рдПрдХ рд▓реЗрдЖрдЙрдЯ рдЪреБрдирд╛, рд╕рдм рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдорд╣реАрдиреЗ рдХрд╛ рд╕рдордп рдорд┐рд▓рд╛ рдФрд░ рдкреВрд░реЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 40,000 рд░реВрдмрд▓ рдХреА рд▓рд╛рдЧрддред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ 100,000 рд░реВрдмрд▓ рд╕реЗ рдХреАрдорддреЛрдВ рд╡рд╛рд▓реЗ рдЖрд╡реЗрджрдХ рдереЗ, рдЬреЛ рд╣рдореЗрдВ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдХрд▓рд┐рдд рдЯреАрдХреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдбрд┐рдЬрд╛рдЗрдирд░ рдиреЗ рддрддреНрд╡реЛрдВ рдХреЛ рднреЗрдЬрд╛, рдФрд░ рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдлрд┐рдЯ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ XAML рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдбрд┐рдЬрд╛рдЗрдирд░ рдиреЗ рдмреНрд▓реЗрдВрдб рдХреЛ рдЫреВрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред

рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдореЗрдВ WCHttpBinding рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП WCF рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред Windows 2008 R2 рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ Windows рд╕реЗрд╡рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реЗрд╡рд╛рдПрдБ рддреИрдирд╛рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЪреВрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд╣рд▓реЗ HTML рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ MVC .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕реЗрд╡рд╛ рдиреЗ рдЗрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдорд╛рдирд╛ред рдпрд╣рд╛рдВ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдФрд░ рдЬрдЯрд┐рд▓ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрдЯреНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реАрдзреЗ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдФрд░ рдмреЗрд╕рд┐рдХрд╣реЗрдЯрдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдорд╢реАрдиреЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛, рд╕рд╛рде рд╣реА рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдирд┐рдХрд▓рд╛:
- рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ;
- Cmd рдЪрд▓рд╛рдПрдВ рдФрд░ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ: netsh http рд╢реЛ sslcert, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рд╣реА рдкрддреЗ рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд╣рдореЗрдВ 8734 рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд░рд┐рдХреЙрд░реНрдб: 0.0.0.0:8734;
- рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реЗрдВ: netsh http sslcert i900 = 0.0.0.0: 8734 рдкреНрд░рдорд╛рдг рдкрддреНрд░ = рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореВрд▓реНрдп appid = {GUID} рдЬреЛрдбрд╝реЗрдВред рдЯреИрдЧ рд╣реИрд╢ рдорд╛рди "рд░рдЪрдирд╛" рдЯреИрдм рдкрд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ "рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ" рдлрд╝реАрд▓реНрдб рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд┐рдирд╛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рджреЛрд╣рд░рд╛рдХрд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ UserNamePasswordValidator рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдХреЗ рдФрд░ Windows Live ID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдореА рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ app.config рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
<behaviors> <serviceBehaviors> <behavior name="Security"> <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Thisislogic.XGame.Service.Common.SecurityManager, Thisislogic.XGame.Service.Common" /> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors>
рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд▓рд╛рдЗрд╡ рдЖрдИрдбреА рд╕реЗрд╡рд╛ рдХреА рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдордЭрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдпрд╛ рдирд╣реАрдВред
public class SecurityValidator : UserNamePasswordValidator { private const string LiveSecretClientKey = "My_Secret_Key"; public override void Validate(string userName, string password) { try { if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password)) { throw new Exception("User or Password not set"); } var d = new Dictionary<int, string>(); d.Add(0, LiveSecretClientKey); var jwt = new JsonWebToken(password, d); var jwtUserName = jwt.Claims.UserId; if (jwtUserName != userName) { throw new Exception("Manipulated Username"); } } catch (Exception e) { var fe = new FaultException("Unknown Username or Incorrect Password \n" + e.ToString()); throw fe; } } }
рдмрд╛рдж рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рд▓рд╛рдЗрд╡ рдЖрдИрдбреА рдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ред рдиреАрдЪреЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
private string GetHardwareId() { var token = HardwareIdentification.GetPackageSpecificToken(null); var hardwareId = token.Id; var dataReader = DataReader.FromBuffer(hardwareId); var bytes = new byte[hardwareId.Length]; dataReader.ReadBytes(bytes); return BitConverter.ToString(bytes); }
рдЬрдм рддрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рд╕рд╣рдордд рд╣реЛ рдЧрдП, рддрдм рддрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдпреЛрдЬрдирд╛, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЕрдВрдд, рдХрд╛рдо рдХрд╛ рдЕрдкрдШрдЯрди рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдордп рд╕реАрдорд╛рдПрдВ рдкрдХреА рд╣реБрдИ рдереАрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рдмрд╛рдж рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЯреАрдПрдлрдПрд╕ 2010 рдореЗрдВ рдПрдордПрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рд╡рд░реНрдХ рдЖрдЗрдЯрдо рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереАред рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЯреАрдПрдлрдПрд╕ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЯреАрдПрдлрдПрд╕ рд╕реЗ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЛрдб, рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдЯреАрдПрдлрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреБрдЫ рдЪрд░реНрдЪрд╛рдПрдВ рд╕реНрдХрд╛рдЗрдк рдкрд░ рд╣реБрдИрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХреА рдЧрдИрдВред рдХреЛрдб рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рд╕рдорд╛рди рд╕рдордЭ рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирдП рдПрдорд╡реАрд╡реАрдПрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдлреИрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдпрд╣рд╛рдВ рддрд░рд╣-рддрд░рд╣ рдХреЗ рдореИрдЬрд┐рдХ рдкреНрд▓рдЧрдЗрди рдиреЗ рд╣рдорд╛рд░реА рдмрд╣реБрдд рдорджрдж рдХреА, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ INOTifyPropertyChanged рдХреЗ рд╕рд╛рде рдЯрди рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред
[MagicAttribute] public abstract class PropertyChangedBase : INotifyPropertyChanged { protected virtual void RaisePropertyChanged(string propName) { var e = PropertyChanged; if (e != null) { SmartDispatcher.BeginInvoke(() => e(this, new PropertyChangedEventArgs(propName))); } } [MethodImpl(MethodImplOptions.NoInlining)] protected static void Raise() { } public event PropertyChangedEventHandler PropertyChanged; }
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рд╕реЗ рдиреАрдЪреЗ рдЖрдпрд╛ рд╣реИ рдХрд┐ рдЧреЗрдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╣реЛрддреА рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде, рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рднреЗрдЬрдХрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдШрдЯрдирд╛рдУрдВ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ, рдЬрдмрдХрд┐ рд╕рд░реНрд╡рд░ рдХрднреА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдмреЗрд╕рд┐рдХрд╣реЗрдЯрдкрд╛рдЗрдмрд┐рдВрдЧ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдбреБрдкреНрд▓реЗрдХреНрд╕ рдХреЛ рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХреНрд╕рдПрдПрдордПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдФрд░ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореБрдЦреНрдп рдЕрдиреБрднрд╡ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдФрд░ рдПрдПрд╕рдкреА рдПрдорд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдерд╛ред рдореБрдЦреНрдп рд╕рдордп, рд▓рдЧрднрдЧ 2 рдорд╣реАрдиреЗ, рдХреЛрдб рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЛрдб рд▓реЗрдЦрди рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдереЗ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рд╕рддреНрдпрд╛рдкрди, рдПрд╕рдХреНрдпреВрдПрдХреНрд╕-рд╡реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ
рдЧреЗрдо рдХреЛ
рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рддрд╛рд▓рд┐рдХрд╛:
рдЧрддрд┐рд╡рд┐рдзрд┐ | рд╕рдордп | рдкреИрд╕рд╛ |
---|
рдЯреНрд░реЗрдирд┐рдВрдЧ | 7 рджрд┐рди | 10000 |
рдкрд░рд┐рд╕рд░ рдФрд░ рддрдХрдиреАрдХреА рд▓рд╛рдЧрддреЛрдВ рдХрд╛ рдХрд┐рд░рд╛рдпрд╛ | 3 рдорд╣реАрдиреЗ | 35000 |
рдбрд┐рдЬрд╝рд╛рдЗрди | 3 рдорд╣реАрдиреЗ | 40000 |
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ | 15 рджрд┐рди | 6500 |
рд╡реЗрддрди | 2 рдорд╣реАрдиреЗ | 50000 |
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ | | 141,500 |
---|
рдХреБрд▓ рдЦрд░реНрдЪ рд▓рдЧрднрдЧ 141,500 рд░реВрдмрд▓ рдФрд░ 3 рдорд╣реАрдиреЗ рдХрд╛ рдХрд╛рдо рд╣реИред