ÔöÇ¿Web·þÎñ2.0±à³Ì

¿ª·¢ÕßÔÚÏß Builder.com.cn ¸üÐÂʱ¼ä:2007-11-17×÷ÕߣºØýÃû À´Ô´:Microsoft

Óë 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 Ó¦ÓóÌÐòµÄ°²È«ÐÔ²»¹»ÑÏÃÜ¡£

Óû§ÆÀÂÛ

  • Óû§Ãû
  • ÆÀÂÛÄÚÈÝ