
Rootoken WEB рд╕рдорд╛рдзрд╛рди GOST R 34-10.2001 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд░реБрдЯреЛрдХрди рд╡реЗрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг Asp.net рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╕рдм рдХреБрдЫ рдмрдирд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИред
рд░реВрдЯреЛрдХрди рд╡реЗрдм рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ:
- USB рдЯреЛрдХрди рд░реВрдЯреЛрдХреИрди WEB (рдХреЛрдИ рдбреНрд░рд╛рдЗрд╡рд░ рд╕рдВрд╕реНрдерд╛рдкрди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ)
- рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдорд▓реНрдЯреА-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧ-рдЗрди
- рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
- рд╕рд░реНрд╡рд░ рдШрдЯрдХ
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧрдЗрди
рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдпрд╣ рд╕рд░реНрд╡рд░ рдШрдЯрдХ, рдХреНрд▓рд╛рдЗрдВрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдФрд░ рдпрд╣ рд╕рдм рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЗрдВ рд╡рд┐рд╖рдп рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рди, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рд╢рд╛рдорд┐рд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдФрд░ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдХреБрдХреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЧреНрд░рд╛рд╣рдХ рдкрд░ рдЙрддреНрдкрдиреНрди рдИрдбреАрдПрд╕ рд╣реЛрдЧрд╛ред рд╣рдо рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред рд╕рдлрд▓ рд╕рддреНрдпрд╛рдкрди рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╕рдлрд▓ рдорд╛рдирддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реИрдВрдбрд╢реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рддреИрдпрд╛рд░ рдХрд░рдирд╛редрд╕рд░реНрд╡рд░ рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдореБрдЦреНрдп рдЬреЛрдбрд╝реА рд╣реЛрдЧреА, рдЙрд╕рдХреЗ рд░реВрдЯреЛрдХрди рд╡реЗрдм рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ, рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкрдмреНрд▓рд┐рдХ рдХреА рдФрд░ рд░реВрдЯреЛрдХреЗрди рд╡реЗрдм рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдЧрд╛ред рдирд┐рдЬреА рдХреБрдВрдЬреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред
рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ {рд▓реЙрдЧрд┐рди} #% # {рд╕рд╛рдЗрдЯреЗрдВ} {рдкреЛрд░реНрдЯ}ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, yandex@gmail.com #% # dotnet.rutokenweb.ru:80ред рдЯреЛрдХрди рдкрд░ рд▓реЙрдЧрд┐рди рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд░реНрд╡рд░ рдкрд░, рд╣рдо рдЯреЛрдХрди рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдФрд░ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореМрдЬреВрджрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдмрд╛рдВрдзрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреМрди рдкрд╣реБрдВрдЪ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ред
рддреИрдпрд╛рд░реА рдХрд╛ рдЪрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рдорд╛рдгреАрдХрд░рдгред- рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рд╕рд░реНрд╡рд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ; рд╣реИрд╢ рдбреЗрдЯрд╛, рд╕рддреНрд░реЛрдВ рдореЗрдВ рдпрд╛рдж рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ s1 рдХрд╣рддреЗ рд╣реИрдВред
- рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЕрдкрдирд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ (s2) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдпреЛрдЧ рдХрд╛ рдПрдХ рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╣реИрд╢ (рд╣рдо рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ) рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдХреЛ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдиреЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдерд╛ (s2) рдФрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдпреЛрдЧ рдХрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ред
- рд╕рд░реНрд╡рд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ (s2) рдФрд░ EDS рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реА рддрд░рд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ (s2) рдФрд░ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХрд╛ рдпреЛрдЧ (s1) рдХрд╛ рдПрдХ рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
- рдирддреАрдЬрддрди, рд╕рд░реНрд╡рд░ рдореЗрдВ рдбреЗрдЯрд╛ (рд╣реИрд╢ s1 + s2) рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╣реА рд╣реИред
C # рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Rootoken WEB рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ 3 рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдирдореЗрдВ рд╕реЗ 2 рдлреЙрд░реНрдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдЕрдиреНрдп рд╡рд┐рдВрдбреЛрдЬ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдлрд╛рдЙрдВрдбреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрд╕рдЯреАрдПрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рддреАрди рд╕рд╛рдЗрдЯреЗрдВ WebForms рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реИрдВред
рдЪрд▓реЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ
рд╡реЗрдмрдХрдВрдЯреНрд░реЛрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреЛ рдирд┐рдпрдВрддреНрд░рдгред рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рджреВрд╕рд░рд╛ рд░реВрдЯреЛрдХрд┐рди рд╡реЗрдм рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВред
рд╕рднреА рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдПрдХ рдкреВрд░реНрдг рдкреЛрд╕реНрдЯрдмреИрдХ рдХреЗ рдмрд┐рдирд╛, рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреЗрдЬ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдмрдбрд╝реЗ, рдФрд░ httpHandler ajax рдЕрдиреБрд░реЛрдзреЛрдВ
рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ
рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛ред рд╡рд╣ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
рдФрд░, рдЕрдВрдд рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рд╣реИрдВрдбрд▓рд░ рдмрд╛рдХреА рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛ рдЬреЛ
ITokenProcessor рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рддреИрдпрд╛рд░реА, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдирд┐рдЬреА рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд░реБрддреЛрдХреЗрди рдкрд░ рдПрдХ WEB рдХрдВрдЯреЗрдирд░ рдХреЗ рдЧрдарди рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдФрд░ рдЖрдИрдбреА рдХреЗ рдЯреЛрдХрди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдбреЗрдЯрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдСрдкрд░реЗрд╢рди рдкреНрд░рдорд╛рдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрд▓рдн рдирд╛рдо рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдг рдЗрд╕рд╕реЗ рдирд┐рдкрдЯреЗрдЧрд╛, рдФрд░ рд▓реЙрдЧрд┐рди рдирд╛рдо рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдирд┐рдкрдЯреЗрдЧрд╛ред
HttpHandler рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдорд╛рд░реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд╛рд░реНрдп:
1. Rutoken рд╡реЗрдм рдХреЗ рд╕рд╛рде ajax рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдз рдкреНрд░рдХреНрд░рд┐рдпрд╛редрд╣реИрдВрдбрд▓рд░ рдХреЗрд╡рд▓ рдЬреНрдЮрд╛рдд рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЬреНрдЮрд╛рдд рд╣реЗрдбрд░ ('X-Requested-With', 'XhrRutoken') рдХреЗ рд╕рд╛рде рд╣реЛрдЧреАред
рдЖрдЗрдП рдПрдХ рдЕрдиреБрд░реЛрдз (CMessageRequest) рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ (CMessageRespest) рдмрдирд╛рдПрдВред рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░, рд╣рдо рдЕрдиреБрд░реЛрдз рдХреЛ рдкрд╛рд░реНрд╕рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рджрд╕реНрдп рдХреЛ рд╕реМрдВрдкрддреЗ рд╣реИрдВред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╣реЛрддреА рд╣реИред
_mRequest = new CMessageRequest(context);
рдЕрдиреБрд░реЛрдз рдореЗрдВ, рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рджреНрд╡рд╛рд░рд╛ рдкрд╛рддреЗ рд╣реИрдВред
GetType().InvokeMember(_mRequest.act, BindingFlags.InvokeMethod, null, this, new object[] {});
рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬреМрди рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2. рдкреЗрдЬ рдкрд░ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрдВредрдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рдкреГрд╖реНрда рдкрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ -
<script src=" /RutokenWebSTS/rutokenweb/ajax.rtw?getRutokenJavaLocal=1" type="text/javascript"></script>
рдорд╛рд░реНрдХрдЕрдк рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИ (рдиреАрдЪреЗ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред GetRutokenJavaLocal = 1 рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдВрдмреЗрдбреЗрдб рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝рдиреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдерд╛ред рд▓реЗрдХрд┐рди рддрдм рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╡реНрд╣рд╛рдЗрдЯ рдЕрд░рдм рд╕реЗ рдЖрдпрд╛ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реНрд╡рд░реНрдг, рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
private void SendLocalizeScript() { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream( "RutokenWebPlugin.javascript.tokenadmin.js")) { if (stream != null) { var reader = new StreamReader(stream); HttpContext.Current.Response.Write(Utils.LocalizeScript(reader.ReadToEnd())); } } }
LocalizeScript рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЬрд┐рд╕ рд▓рд╛рдЗрди рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рд╡рд╣ рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ, ROCokenLocalText.resx рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рд╕рднреА LOCALIZE рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ (рд░рд┐рд╕реЛрд░реНрд╕_рдХреА) рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
private static Regex REGEX = new Regex(@"LOCALIZE\(([^\))]*)\)", RegexOptions.Singleline | RegexOptions.Compiled); тАж public static string LocalizeScript(string text) { var matches = REGEX.Matches(text); foreach (Match match in matches) { string strResourceStringID = match.Groups[1].Value; string str = (string)HttpContext.GetGlobalResourceObject("RutokenLocalText", strResourceStringID) ?? strResourceStringID; text = str != strResourceStringID ? text.Replace(match.Value, MakeValidString(str)) : text.Replace(match.Value, string.Format("'LOCALIZE.{0}'", str)); } return text; }
рд╕рдВрд╕рд╛рдзрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд╣реИрдВред
ITokenController
рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рд╣реИрдВрдбрд▓рд░ ITokenController рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдЗрдЯ / рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВрдЧреЗред рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╡рд┐рд╕реНрддреГрдд рд╣реИрдВред рд╡реЗ рд╕рд╛рдЗрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ / рд╕рд╣реЗрдЬрдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЖрджрд┐ред
рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
class CustomTokenProcessor : ITokenProcessor ...
рд╡рд┐рдзрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рддреНрд░ рдореЗрдВ рд╡рд╕реНрддреБ рдбрд╛рд▓рддрд╛ рд╣реИ
public void SetRequired(ITokenProcessor processor, string successurl) { var session = HttpContext.Current.Session; if (session != null) { if (session["TokenProcessor"] == null) { session["TokenProcessor"] = processor; } session["SuccessUrl"] = successurl; } }
рдФрд░ рд╡рд╕реНрддреБ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИред
рд╣реИрдВрдбрд▓рд░ рдЙрд╕ рдШрдЯрдирд╛ OnSuccessAuth рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдЯрдирд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдирд╣реАрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рд╕рддреНрд░ рдХреЛ рдЙрд╕ рддрд░реАрдХреЗ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХреЗрдВ рдЬреЛ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
if ((OnSuccessAuth = (EventHandler) _mContext.Session["OnSuccessAuth"]) != null) { OnSuccessAuth(_mContext.Session, new EventArgs()); _mContext.Session["OnSuccessAuth"] = null; }
рдФрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕рддреНрд░ рдорд┐рд▓рддрд╛ рд╣реИ
private void tokenlogin_OnSuccessAuth(object sender, EventArgs e) { HttpSessionState session = (HttpSessionState) sender; if (session != null) {
рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рджреЛрдиреЛрдВ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рдЬрдирдХ рдмрдирд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
1. рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛рдРрд╕рд╛ рдХрд░рдирд╛
[TemplateContainer(typeof (AdministrationData)), TemplateInstance(TemplateInstance.Single)] public virtual ITemplate Template { get; set; }
2. рд░реБрддреЛрдХреЗрди рд╡реЗрдм рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝рдирд╛рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рд╡рд╕реНрддреБ рдкрд░ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧ-рдЗрди рдлреЛрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рдпрд╣ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
<object id="cryptoPlugin" type="application/x-rutoken" width="0" height="0"></object>
рдЗрд╕рдХреЗ рд▓рд┐рдП onLoad рдирд┐рдпрдВрддреНрд░рдг рдХрд░рддреЗ рд╣реИрдВ
private void EnsureRutokenPlugin() { var rtObject = new HtmlGenericControl("object") {ClientIDMode = ClientIDMode.Static, ID = JStokenObjectID}; rtObject.Attributes.Add("type", "application/x-rutoken"); rtObject.Attributes.Add("width", "0"); rtObject.Attributes.Add("height", "0"); var rtParam = new HtmlGenericControl("param") {TagName = "onload"}; rtParam.Attributes.Add("value", "pluginit"); rtObject.Controls.Add(rtParam);
рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд╕рд╛рде рдЫрд┐рдкреЗ рд╣реБрдП рддрддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдХреЛрдИ рдирд╣реАрдВ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдФрд░ рдлрд┐рд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдФрд░ рд╣рдо рдЗрд╕реЗ PlaceHolder рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдорд╛рд╕реНрдЯрд░рдкреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░, рдФрд░ рдлреЙрд░реНрдо рдЯреИрдЧ рдХреЗ рддреБрд░рдВрдд рдмрд╛рджред
<form id="form1" runat="server"> <asp:PlaceHolder ID="tokenPlaceHolder" runat="server"></asp:PlaceHolder>
рдпрд╣ рдЫрд┐рдкреЗ рд╣реБрдП рдкреГрд╖реНрда рддрддреНрд╡ рдореЗрдВ рдЯреЛрдХрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдирдЬрд╛рдиреЗ рд╣рд┐рдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдЕрдм рд╣рдо рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗ - рд╡рд╛рд░рд┐рд╕ред рдПрдХ рдЯреЛрдХрди рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдПред рдирд┐рдпрдВрддреНрд░рдг рдЕрд╕реНрдерд╛рдпреА рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреГрд╖реНрда рдкрд░ рдорд╛рд░реНрдХрдЕрдк рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдХреБрдЫ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдорд╛рд░реНрдХрдЕрдк рддрддреНрд╡ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрдЯрди, рд▓реЗрдмрд▓, рдЖрджрд┐ред рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЛрдб рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА рд╣реИред
рджреЛрдиреЛрдВ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдореЗрдВ, CreateChildControls рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ:
protected override void CreateChildControls() { if (Template != null)
рдЖрдЧреЗ рдХреА рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рдореЗрдВ рдмрдЯрди, рдЯреЗрдмрд▓ рдЖрджрд┐ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдЯрди:
var rtwConnect = (Button)administrationData.FindControl("rtwConnect");
рдФрд░ рдкреГрд╖реНрда рдкрд░ рдЪрд░ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рдЗрди рдкреНрд░рдореБрдЦ рд╡рд╕реНрддреБрдУрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░ $ gdctctls рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ
IdToJavaScript(rtwConnect, JScontrolVar, "rtwConnect", Page); public static void IdToJavaScript(Control ctrl, string jsvar, string field, Page page) { page.ClientScript.RegisterStartupScript(typeof (Control), field, jsvar + "." + field + " = rtwGID('" + ctrl.ClientID + "'); ", true); }
рдХреБрд▓ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрди рдорд╛рд░реНрдХрдЕрдк рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХ рдорд╛рд░реНрдХрдЕрдк рдФрд░ рд▓рд┐рдВрдХ $ grd_ctrls рдХреЗ рдЧреБрдг рд╣реЛрдВрдЧреЗред
рдирд┐рдпрдВрддреНрд░рдг рдкреИрдЯрд░реНрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдкреНрд░рд╢рд╛рд╕рди
рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк рдмрд▓реНрдХрд┐ рдмреЛрдЭрд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рд╡рд╣реАрдВ рд╣реИред
<token:Administration ID="backoffice" runat="server" Port="12345"> <template> <label> :</label> <asp:GridView runat="server" ID="rtwEnable" CssClass="OrdersGr" AutoGenerateColumns="False" GridLines="None" ShowHeaderWhenEmpty="False"> <EmptyDataTemplate> </EmptyDataTemplate> <Columns> <asp:TemplateField HeaderText="Token Id"> <ItemTemplate> <%# ((uint)Container.DataItem) %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Label ID="rtwEnabledToken" runat="server"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText=""> <ItemTemplate> <asp:Button runat="server" ID="rtwEnableSwitch" OnClientClick="return false;"/> <asp:Button ID="rtwRemove" runat="server" Text=" " OnClientClick="return false;" ClientIDMode="Predictable"/> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <br /> <label> Web:</label> <asp:Button ID="rtwConnect" runat="server" Text=" "/> <br /> <asp:Image ID="rtwAjaxImg" runat="server" ImageUrl="~/ajax_loader.gif" /> <br /> <asp:Label ID="rtwErrorMessage" runat="server" CssClass="errLabel" /> <asp:Label ID="rtwMessage" runat="server" CssClass="status ok" /> </template> </token:Administration>
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ, рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдПрдХ рдЯреЗрдмрд▓, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрдЯрди, рдПрдХрддрд╛ рдФрд░ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЯреЛрдХрди, рд╕рд╛рде рд╣реА рджреЛ рд╕реНрдкреИрди - рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдПред
рдЯреЛрдХрди рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ ITokenController GetUserTokens рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд▓реЙрдЧрд┐рди, рдпрд╛рдж рд░рдЦреЗрдВ
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпрд╛ рдкрд╣реБрдВрдЪ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдгред
рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рд╕рдВрднрд╡ рд╣реИ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рди рдФрд░ рд░рд┐рдХрд╡рд░реА рдХреЛрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд░реВрдЯреЛрдХреЗрди рд╡реЗрдм рдХрд╛рд░реНрдб (рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдЖрдкреВрд░реНрддрд┐) рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд▓реЙрдЧрд┐рди рдорд╛рд░реНрдХрдЕрдк рдЙрджрд╛рд╣рд░рдг:
<aktivlogin:Login ID="tokenlogin" runat="server" LoginType="Login"> <Template> <asp:Literal ID="rtwUsers" runat="server" /> <asp:Label ID="rtwErrorMessage" runat="server" CssClass="rutoken error" style="display: block; color: #c00;" /> <asp:Label ID="rtwMessage" runat="server" CssClass="rutoken message" style="display: block; color: green;" /> <asp:Button ID="rtwLogin" runat="server" OnClientClick="return false;" Text="" style="margin-top:12px;" /> <asp:Image ID="rtwAjaxImg" runat="server" ImageUrl="~/ajax_loader.gif" /> </Template> </aktivlogin:Login>
рд╢рд╛рдмреНрджрд┐рдХ рдХреА рддрд░рд╣ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЪрдпрди рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╣реЛрдЧрд╛ред DropDownList рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЯреЛрдХрди рдкрд░ рд▓реЙрдЧрд┐рди рдХреА рд╕реВрдЪреА рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рдкреЛрд╕реНрдЯрдмреИрдХ рд╣реИ, рддреЛ рдкреГрд╖реНрда рдХрд╛ EventValidation рд╢рдкрде рд▓реЗрдЧрд╛ред рдЗрд╕реЗ рдмрдВрдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрд╡рдпрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
rtwUsers.Text = "<select id=\"rtwUsers\"></select>";
рдкрд╣реБрдБрдЪ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
<aktivlogin:Login ID="tokenlogin" runat="server" LoginType="Remember"> <Template> : <asp:TextBox ID="rtwRepairUser" runat="server" /><br /> : <asp:TextBox ID="rtwRepair" runat="server" /><br /> <asp:Label ID="rtwErrorMessage" runat="server" style="display: block; color: #c00;" /> <asp:Label ID="rtwMessage" runat="server" style="display: block; color: green;" /> <asp:Button ID="rtwRepairBtn" runat="server" OnClientClick="return false;" Text="" style="margin-top:12px;" /> <asp:Image ID="rtwAjaxImg" runat="server" ImageUrl="/ajax_loader.gif" /> </Template> </aktivlogin:Login>
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ LoginType = рд▓реЙрдЧрд┐рди рдпрд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдХреЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдореБрдЦреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ tokenadmin.js рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕реЗ рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рддрддреНрд╡реЛрдВ, рдкреНрд▓рдЧрдЗрди рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ $ gd_ctrls рдХреЗ рдЧреБрдгреЛрдВ рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреЛрдб рдореЗрдВ рдмрд╛рдБрдзрддреЗ рд╣реИрдВ, рдкреГрд╖реНрда рдкрд░ рдЪрд░ рдХреЛ рд░рдЦрддреЗ рд╣реБрдП рдкреГрд╖реНрда рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред ClientScript.RegisterStartupScriptред рдкреНрд▓рдЧрдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ $ grd_ctrls.token рд╣реИред
Tokenadmin.js рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдХреА рдЬрд╛рдБрдЪ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд▓рдЧ рдЗрди рдЙрдкрд▓рдмреНрдз рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЯреЛрдХрди (рдЕрдЧрд░ рдпрд╣ рд▓реЙрдЧрд┐рди рд╣реИ) рдкрд░ред рдлрд┐рд░ рд╣рдо рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рдЯреЛрдХрди рдкрд░ рд╕рднреА рд▓реЙрдЧрд┐рди рдкрдврд╝рддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝ рджреЗрддреА рд╣реИ (rtwUsers)ред
var containerCount = g.token.rtwGetNumberOfContainers(); for (i = 0; i < containerCount; i++) { var contName = g.token.rtwGetContainerName(i); g.rtwUsers.options[i] = new Option(contName.replace("#%#", " - "), contName); }
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рдВрдЫрд┐рдд рд▓реЙрдЧрд┐рди рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ "рд▓реЙрдЧрд┐рди" рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реИред
рд╣рдо рд░реЗрдВрдб рдХрдорд╛рдВрдб рдФрд░ рдЯреЛрдХрди рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЬрд╕реНрд╕рди рдорд┐рд▓рддрд╛ рд╣реИ
{"рдкрд╛рда": "94156e9a6642d42a47fc94c6c4b1b8c000dab4bfd24f321f597659e4d3a5a4e994", "рдЯрд╛рдЗрдк рдХрд░реЗрдВ": "рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ"}
рдпрд╣ рдПрдХ рд╕рд░реНрд╡рд░-рдЬрдирд┐рдд рдЕрдиреБрдХреНрд░рдо рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдЕрдкрдирд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рдиреЗ рднреЗрдЬрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╣реИрд╢ рдФрд░ рд╕рдВрдХреЗрддреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдирдХреЛрдб рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдкрд┐рди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ рдФрд░ рдкрд┐рди рд╕рд╣реА рд╣реИ, рддреЛ рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдореЗрдЯрддрд╛ рд╣реИ рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╣реА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЙрддреНрддрд░ рдорд┐рд▓рддрд╛ рд╣реИ:
{"рдкрд╛рда": "рд╕рддреНрдп", "рдкреНрд░рдХрд╛рд░": "рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ", "url": "\ / RutokenWebSTS \ / Admin \ /"}
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреБрдХреА рдХреЛ рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдпреВрдЖрд░рдПрд▓ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рд╕рддреНрдпрд╛рдкрди
рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ dll рдореЗрдВ рд╕рднреА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЛ рдирд┐рдХрд╛рд▓ рд▓рд┐рдпрд╛ред рддреАрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдмрд╛рд╣рд░ рджрд┐рдЦрддреА рд╣реИрдВ:
- рд░реИрдВрдбрдо рд╣реИрд╢ рдЬреЗрдирд░реЗрд╢рди
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрд╢ рдЧрдгрдирд╛
- рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди
рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕ рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢ред
(.net 4.0, iis 7.5 рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛)
1. RutokenWebPlugin.dll рдФрд░ Rutoken.dll рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
2. HTTPHandler рдХреЛ Web.config рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
<system.webServer> <handlers> <add name="AjaxHandler" path="/RutokenWebSTS/rutokenweb/ajax.rtw" verb="*" type="RutokenWebPlugin.TokenAjaxHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" /> </handlers> </system.webServer>
рдкрде '/rutokenweb/ajax.rtw' рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╕рд╛рдЗрдЯ / рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрде рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
<location path="rutokenweb"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
3. рд╣рдо ITokenProcessor рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ
public class CustomTokenProcessor : ITokenProcessor { тАж..
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖рдг, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд░реЛрдд рдореЗрдВ рд╣реИ
4. рдЯреЛрдХрди рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝реЗрдВ (рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддрд╛)
<%@ Register TagPrefix="token" Namespace="RutokenWebPlugin" Assembly="RutokenWebPlugin" %>
рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ (рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдЦ рдореЗрдВ рдерд╛)
<token:Administration ID="backoffice" runat="server" Port="12345" > <Template> тАж..
рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди 80 рдкреЛрд░реНрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдо рдкреЛрд░реНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
5. рдкреНрд░рд╢рд╛рд╕рди рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдХреЛрдбрдмреЗрд╣рд┐рдВрдб рдореЗрдВ, рдПрдХ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ ITokenProcessor рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ
protected override void OnInit(EventArgs e) { base.OnInit(e);
6. рд▓реЙрдЧрд┐рди рдкреЗрдЬ рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝реЗрдВ
<%@ Register TagPrefix="aktivlogin" Namespace="RutokenWebPlugin" Assembly="RutokenWebPlugin" %>
рдФрд░ рдЗрд╕рдХрд╛ рдЦрд╛рдХрд╛
<aktivlogin:Login ID="tokenlogin" runat="server" SuccessUrl="http://localhost/Secured/" LoginType="Login"> <Template> тАжтАж.
8. рд▓реЙрдЧрд┐рди рдХреЗ рд╕рд╛рде рдХреЛрдбрдмрд╛рдЗрдВрдб рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ ITokenProcessor рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
protected override void OnInit(EventArgs e) { base.OnInit(e);
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЯреЛрдХрди рдЯреЛрдХрди рд▓реЙрдЧрд┐рди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ рдЖрдкрдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯреЛрдХрди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛ - рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдХрд╛ рд▓рд┐рдВрдХ, рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╛ рдЖрдк рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЗрдЯ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реНрд░реЛрдд
рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ
рд╣реИрдВ