Microsoft ·¢ÐÐÁË Web Services Enhancements (WSE) 1.0 °æ,ÒÔÔÚÖ§³ÖµÄ²úÆ·ÖÐÆôÓð²È«¡¢Â·Óɺ͸½¼þ£¬Í¬Ê±Ëü»¹Ö§³Ö¸ß¼¶Web ·þÎñ¡£Web Services Enhancements 2.0ÒÑ´Ó¼òµ¥Ö§³Ö»ù±¾ÐÒé·¢Õ¹µ½Ö§³ÖºËÐŦÄÜÓë²Ù×÷ϵͳµÄ¼¯³É£¬²¢ÔöÇ¿Á˲ßÂÔ¡¢ÐÅÈκÍÉÏÏÂÎÄÁîÅÆ¹¦ÄÜ¡£
WSE Ò²ÊÇ¶Ô .NET Framework Ö§³ÖµÄÀ©Õ¹£¬ËüÓÃÓÚ´´½¨ºÍʹÓà Web ·þÎñ£¬¶ø WSE 2.0 ²ÉÓÃеıà³Ìģʽ¡£¹ýÈ¥£¬Web ·þÎñÖ§³ÖÒ»Ö±ÒÀÀµ Internet Information Server (IIS) ×÷ΪÆä HTTP ·þÎñÆ÷Ö÷»ú£»ÏÖÔÚ£¬WSE 2.0 Ö§³Öͨ¹ý TCP/IP »òÔÚ½ø³ÌÄÚÀ´·¢ËÍÏûÏ¢¡£ÕâÑù£¬Äú¿ÉÒÔͨ¹ý¶ÔµÈ¡¢µ¥Ïò¡¢Òì²½µÈ·½Ê½½«ÏûÏ¢´Ó·þÎñÆ÷·¢Ë͵½¿Í»§¶Ë¡£
ÏÂÃæ£¬ÎÒÃǽ«¼òÒª½éÉÜ WSE 2.0 µÄ¼¸¸öÖ÷Òª¹¦ÄÜ£¬²¢¼ÙÉèÄúÒÑÊìϤ WSE 1.0¡£
Rock Paper Scissors£ºÒ»ÖÖ°²È«µÄ¡¢·Ö²¼Ê½ÏûÏ¢´¦ÀíʾÀýÓ¦ÓóÌÐò
ΪÁËչʾ WSE 2.0 µÄ¸÷¸ö·½Ã棬ÎÒÏë´´½¨Ò»¸öÓ¦ÓóÌÐòÒÔչʾһЩа²È«¹¦ÄܺÍÏûÏ¢´¦Àí¹¦ÄÜ¡£¾ßÌåÀ´Ëµ£¬ÎÒϲ»¶Ê¹Óà TCP ÏûÏ¢´¦ÀíÖ§³ÖÀ´ÏÔʾ¶ÔµÈͨÐÅ£¬²¢Ê¹ËüÔÚWindows °²È«ÐÔÁìÓò¹¤×÷¡£ÎÒÏëµ½µÄÊÇÒ»¸ö¼òµ¥µÄ·Ö²¼Ê½°æ±¾µÄ¾É Rock Paper Scissors ÓÎÏ·£¬ÏÖÔÚ¿ÉÒÔÓà WSE 2.0 ½øÐа²È«·Ö·¢¡£
Rock Paper Scissors ÊÇÒ»¸öÁ½È˶ùͯÓÎÏ·£¬´«Í³ÉϰüÀ¨ÈÃÿ¸öº¢×ÓÅÄÊÖÈý´Î£¬ÔÚµÚÈý´ÎÅÄÊÖʱ³öʾʯͷ¡¢¼ôµ¶»ò²¼µÄÐÎ×´¡£¸ù¾ÝϱíÖÐËùʾÀíÓɾö¶¨Ê¤Õߣº
ʯͷ ²¼ ¼ôµ¶ ʯͷ ƽ¾Ö ²¼¹üʯͷ¡£²¼·½Ó®£¡ ʯͷÔÒ»µ¼ôµ¶¡£Ê¯Í··½Ó®£¡ ²¼ ²¼¹üʯͷ¡£²¼·½Ó®£¡ ƽ¾Ö ¼ôµ¶¼ô¿ª²¼¡£¼ôµ¶·½Ó®£¡ ¼ôµ¶ ʯͷÔÒ»µ¼ôµ¶¡£Ê¯Í··½Ó®£¡ ¼ôµ¶¼ô¿ª²¼¡£¼ôµ¶·½Ó®£¡ ƽ¾Ö
¸ÃÓÎϷͨ³£ÓÃÓÚÈ·¶¨ÓÉËÏÈÑ¡Ôñ²Î¼ÓɳµØ°ôÇòÈüµÄÑ¡ÊÖ¡¢Ë³Ô×îºóµÄ±ùä¿ÁÜ£¬ÉõÖÁÓÉË»÷´ò¶Ô·½µÄÊÖ±Û¡£
ÎÒÃǽ« Rock Paper Scissors °á³öɳµØ£¬Ö±½ÓÓ¦ÓÃÔÚ¾ßÓÐ WSE 2.0 µÄ°²È«¡¢Ð×÷¡¢ÍŽáµÄÆóÒµ¼¼ÊõÖС£¸ÃÓÎÏ·µÄÏûÏ¢´¦Àí½á¹¹ÈçÏÂÃæµÄͼ 1 Ëùʾ¡£
ͼ 1£ºRock Paper Scissors ÏûÏ¢´¦ÀíºÍ°²È«Ä£ÐÍ
Rock Paper Scissors ÓÐÁ½¸öÖ÷Òª×é¼þ£ºÒ»¸öÊÇÃûΪ RPSService µÄ ASP.NET Web ·þÎñ£¬ÁíÒ»¸öÊÇÓɶà¸öÓû§ÔËÐеĶԵÈÓ¦ÓóÌÐò¡£RPSService µÄ×÷ÓÃÊÇÈÃÓû§×¢²áÍæÓÎÏ·»òѰÕÒ¶ÔÊÖÀ´ÍæÓÎÏ·¡£¶ÔµÈÓ¦ÓóÌÐòÏÈÊÇÓë RPSService ͨÐÅÒÔÕÒµ½ÒªÓë֮ͨÐŵĶԷ½£¬È»ºóÔÚÈ·¶¨¶ÔÊÖºóÖ±½ÓÓëÆä¶Ô·½½øÍ¨ÐÅ¡£
¶ÔµÈ£º¶ÔÓÚÏûÏ¢´¦Àí£¬WSE 2.0 ´Ó»ùÓÚ´«Í³ HTTP ÇëÇó/ÏìÓ¦£¨¼´ RPC »·¾³£©×ª»»Îª²ÉÓÿÉÄÜͬʱ¾ßÓжԵÈÏûÏ¢´¦Àí¡¢Òì²½ÏûÏ¢´¦ÀíºÍÏûÏ¢¶ÓÁеĻ·¾³¡£
Kerberos£ºÕû¸öÓ¦ÓóÌÐòÊÇͨ¹ýʹÓü¯³ÉµÄ Windows Kerberos Ö§³Ö´´½¨µÄ¡£Ê¹Óà WSE 2.0£¬Äú¿ÉÒÔÓÃÒ»ÖÖ°²È«µÄ·½Ê½Á¬½ÓÍøÂç¡£ÎÒÃǽ«½øÐÐÑéÖ¤¡¢Êý×ÖÇ©ÃûºÍ¼ÓÃÜÏûÏ¢ÒÔÈ·±£¾ßÓÐ×î¸ßµÄ°²È«ÐÔ£¬ÇÒÕ⽫ÍêÈ«»ùÓÚ Windows Óû§ÕÊ»§¡£
±ã½Ý¹ÜÀí£º²»Óñàд´úÂëÀ´¿ØÖÆ·ÃÎÊ£¬ÎÒÃDZã¿ÉÒÔͨ¹ý²ßÂÔÅäÖÃÎļþÀ´ÅäÖÃÏûÏ¢µÄ°²È«ÐÔ¡£Í¨¹ý²ßÂÔÎļþ£¬¿ÉÒÔ¿ØÖÆÒªÊµÏֵݲȫÖÖÀà¡¢Òª¶ÔÏûÏ¢µÄÄIJ¿·Ö½øÐÐÊý×ÖÇ©Ãû»ò¼ÓÃܼ°ÆäʵÏÖ·½Ê½£¬»¹¿É»ùÓÚÏûϢʱÏÞÐÔ¿ØÖƽÓÊÜÌõ¼þ¡£Ä¿Ç°£¬¿ÉÒÔ¿ØÖư²È«ÐÔµÄÏàÓ¦ÈËԱΪ£ºÄúµÄ¹ÜÀíÔ±¡£
Rock Paper Scissors£º¸ÃÓ¦ÓóÌÐòµÄÖØÒª×÷Óò»ÔÚÓÚÓ¦ÓóÌÐò±¾Éí£¬¶øÊÇËüÓë±¾ÀýÖв»Í¬ÊµÌåͨÐÅʱʹÓð²È«ÏûÏ¢¡¢²ßÂÔºÍѰַµÄ·½Ê½¡£Äú²Â²»µ½£¬ÎÒÕýÏëÏóÎÒµÄÀϰå˵£º¡°ÎªÁ˾ö¶¨Ö°Ô±½ñÄêµÄ½±½ð£¬ÎÒÏëÈÃÄãÃÇÿÈËÔËÐÐÒ»¸öСµÄÓ¦ÓóÌÐò RockPaperScissors.exe...¡±
Óë Windows °²È«ÐÔ¼¯³ÉµÄ Kerberos ÁîÅÆÖ§³Ö
ÎÒÃÇÒªÌÖÂÛµÄ WSE 2.0 µÄµÚÒ»²¿·ÖÊÇÖ§³Ö Kerberos °²È«ÁîÅÆ¡£WSE 1.0 Ö§³ÖÓû§ÃûÁîÅÆºÍ X.509 °²È«ÁîÅÆ¡£¿ÉÒÔ½«ÕâЩÁîÅÆÌí¼Óµ½°²È«ÁîÅÆµÄÏûÏ¢¼¯ºÏ£¬²¢ÓÃÓÚ´´½¨Êý×ÖÇ©Ãû»òÖ´ÐмÓÃÜ¡£¶ÔÓÚ WSE 2.0 À´Ëµ£¬µ±ÔÚ Windows Server 2003 »ò´øÓÐ Service Pack 1 µÄ Windows XP ÉÏÔËÐÐʱ£¬ÔòÒÑÌí¼ÓÁË Kerberos ÁîÅÆÖ§³Ö¡£¸üÖØÒªµÄÊÇ£¬Kerberos ÁîÅÆÖ§³ÖÄܹ»Ó뼯³ÉµÄ Windows °²È«ÐÔÒ»ÆðʹÓã¬ÕâÑù£¬²»ÔÙÐèÒª½«Óû§ÃûÓ³Éä³É Windows Óû§£¬Ò²²»ÓÃÁíÍâÉèÖÃÓû§Êý¾Ý¿â£¬¿ÉÒÔ»ùÓÚ Windows Óû§¿ØÖÆ¶Ô Web ·þÎñµÄ·ÃÎÊ¡£
ÔÚΪ RPSService Ìí¼Ó´úÂë֮ǰ£¬ÎÒÒª×öµÄµÚÒ»¼þÊÂÊÇÔÚ×Ô¼ºµÄÏîÄ¿ÖÐÌí¼Ó¶Ô Microsoft.Web.Services ³ÌÐò¿âµÄÒýÓá£Èç¹ûÄúµÄ¼ÆËã»úÉϰ²×°µÄÊÇ WSE 1.0£¬ÄÇôÌí¼ÓÒýÓÃʱעÒâÑ¡Ôñ 2.0 °æµÄ³ÌÐò¿âºÜÖØÒª¡£ÐÒÔ˵ÄÊÇ£¬³ÌÐò¼¯µÄ°æ±¾ºÅ¾ÍÁÐÔÚ³ÌÐò¼¯Ãû³ÆÖ®ºó£¬Òò´Ë¿ÉÒÔÇáËɵØÑ¡ÔñÕýÈ·µÄ³ÌÐò¼¯¡£Í¼ 2 ÏÔʾµÄÊÇÑ¡¶¨ÁË WSE 2.0 ³ÌÐò¿âµÄ Add Reference£¨Ìí¼ÓÒýÓã©¶Ô»°¿ò¡£Çë×¢Ò⣬1.0 °æ±¾µÄ³ÌÐò¿â¾ÍÔÚÑ¡¶¨µÄ³ÌÐò¿â֮ǰ¡£
ͼ 2£º½«ÒýÓÃÌí¼Óµ½ WSE 2.0 ³ÌÐò¼¯
ÏÂÃæµÄ´úÂëÑÝʾÈçºÎͨ¹ý±à³ÌµÄ·½Ê½½« Kerberos ÁîÅÆÌí¼Óµ½ÁîÅÆÏûÏ¢¼¯ºÏ¡£ËüÊÇÒ»·½Ë½ÏÂÏòÁíÒ»·½·¢ËÍÆä¶¯×÷ʱËùʹÓõĴúÂë¡£¸Ã´úÂëʹÓà WSE 2.0 µÄÒì²½ TCP ÏûÏ¢¹¦ÄÜ£¨Ëæºó½«Ïêϸ˵Ã÷£©£¬µ«ÓÃÓÚÌí¼ÓÁîÅÆºÍ¼ÓÃܵĴúÂëÀàËÆÓÚ WSE 1.0 ÖÐÓÃÓÚÆäËûÀàÐÍÁîÅÆµÄ´úÂë¡£
using Microsoft.Web.Services.Security.Kerberos;
a€|
KerberosToken peerToken;
a€|
peerToken = new KerberosToken("host/" + OpponentUri.Host);
a€|
envelope.Context.Security.Tokens.Add(peerToken);
envelope.Context.Security.Elements.Add(new EncryptedData(peerToken));
Çë×¢Ò⣬ÁîÅÆÊÇͨ¹ý´«µÝÁ¬½ÓÖ÷»úµÄÃû³Æ´´½¨µÄ¡£ÓÃÓÚ´´½¨¸ÃÁîÅÆµÄ Kerberos ±êÇ©ÔÊÐíµ±Ç°Óû§ÓëָʾµÄÖ÷»ú½øÐÐͨÐÅ¡£¾ßÌåÀ´Ëµ£¬¸ÃÁîÅÆ½«ÓÃÓÚ¼ÓÃÜÒª·¢Ë͵ÄÏûÏ¢£¬ÒÔ±ãÖ»ÓиÃÔ¶³ÌÖ÷»ú²Å¿ÉÒÔ¶ÁÈ¡ÕâЩÏûÏ¢¡£
ÓëÆäËûÀàÐÍÁîÅÆ²»Í¬£¬Kerberos ÁîÅÆÊ¹Óõ±Ç°µÄ Windows Óû§°²È«ÉÏÏÂÎÄ´´½¨¸ÃÁîÅÆ¡£Èç¹ûÄú²éѯÒÑ´´½¨µÄÁîÅÆ£¬Äú½«»áÕÒµ½Ò»¸ö Principal ³ÉÔ±ÊôÐÔ£¬Ëüָʾ´´½¨¸ÃÁîÅÆµÄÓû§¡£ÎÒÃÇ´Ó½ÓÊÕÏûÏ¢£¨´øÓÐ Kerberos ÁîÅÆ£©µÄ´úÂëµÄÖ÷ÌåÖлñÈ¡Óû§Ãû¡£ÏÂÃæµÄ opponent ±äÁ¿ÊÇÒ»¸ö KerberosToken ¶ÔÏ󣬸öÔÏóÊÇ´Ó´«ÈëÏûÏ¢µÄ Tokens ¼¯ºÏÖлñµÃµÄ¡£¿ÉÒÔÏñÏÂÃæ»ñÈ¡Ãû³ÆÄÇÑùÀ´»ñÈ¡¹ØÓÚÁîÅÆ´´½¨ÕßµÄÐÅÏ¢£¬µ«Ò²¿ÉÒÔµ÷Óà IsInRole() ·½·¨À´Í¨¹ý±à³ÌµÄ·½Ê½È·¶¨ Active Directory ×é³ÉÔ±¡£
this.opposingNameLabel.Text
= "Playing: " + opponent.Principal.Identity.Name;
×¢Ò⣺Èç¹ûÔÚ Windows XP ÉÏÔËÐÐ Web ·þÎñ£¬ÔòʹÓà Kerberos ÁîÅÆÊÔͼÁ¬½Óµ½ Web ·þÎñʱ£¬Äú¿ÉÄÜ»áÓöµ½ÒÔÏ´íÎó£º
Microsoft.Web.Services.Security.SecurityFault: An invalid security token
was provided ---£¾ System.Security.SecurityException: Unable to validate
incoming Kerberos ST. LsaLogonUser failed with the following message: A
required privilege is not held by the client. Substatus is 0.
³öÏָôíÎóÊÇÓÉÓÚµ÷ÓÃÃûΪ LogonUser µÄ°²È« API ʱ£¬ASPNET ÕÊ»§ÎÞ·¨ÑéÖ¤ Kerberos ÁîÅÆ¡£µ÷Óà LogonUser API µÄÓû§ÕʺÅÒªÇó¾ßÓС°×÷Ϊ²Ù×÷ϵͳµÄÒ»²¿·ÖÀ´²Ù×÷¡±ÌØÈ¨¡£ÔÚĬÈÏÇé¿öÏ£¬ASPNET ÕÊ»§£¨¼´ÔËÐÐ ASP.NET ´úÂëµÄÕÊ»§£©²»¾ßÓиÃÌØÈ¨¡£½¨ÒéÄúÔÚºÏÊʵķþÎñÆ÷ƽ̨Èç Windows Server 2003 ÉÏÔËÐÐÒÑÉèÖà Kerberos °²È«µÄ Web ·þÎñ¡£ÔÚ Windows Server 2003 ÉÏ£¬µ÷Óà LogonUser ʱ²»ÐèÒª¡°×÷Ϊ²Ù×÷ϵͳµÄÒ»²¿·ÖÀ´²Ù×÷¡±ÌØÈ¨¡£ÔÚ Windows XP ÉÏ£¬¿ÉÒÔʹÓà Local Security Policy ¹ÜÀíÓ¦ÓóÌÐòÀ´ÅäÖÃÓµÓС°×÷Ϊ²Ù×÷ϵͳµÄÒ»²¿·ÖÀ´²Ù×÷¡±ÌØÈ¨µÄÕÊ»§£¬°üÀ¨ ASPNET ÕÊ»§£¬µ«Ó¦¸Ã×¢ÒâÕâ»áÔì³É ASP.NET Ó¦ÓóÌÐòµÄ°²È«ÐÔ²»¹»ÑÏÃÜ¡£
°²È«²ßÂÔ
ËäÈ»ÒÔÉÏÌÖÂ۵ĴúÂëÓë WSE 1.0 ÖеĴúÂë·Ç³£ÏàËÆ£¬µ«Ëü¾ßÓÐÒ»¸öÓŵ㣺½« Principal ¶ÔÏóÓëÒ»¸öÁîÅÆ¹ØÁª£¬¿ÉÒÔÓÃÀ´²éÕÒij¸ö¾ßÌ尲ȫÁîÅÆµÄÌØ¶¨ÊôÐÔ¡£ÕâÖÖ·½·¨´æÔÚµÄÎÊÌâÔÚÓÚÈÔÒª±àд´úÂëÀ´È·¶¨Ó¦ÊôÓÚ¹ÜÀíÈÎÎñµÄ·ÃÎʹ¦ÄÜ¡£Îª´Ë£¬WSE 2.0 ÌṩÁË´´½¨²ßÂÔÎļþÖ§³Ö¡£
±¾ÄÚÈݹ²
3Ò³,µ±Ç°ÔÚµÚ
1Ò³
1 2 3