<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [WCF權(quán)限控制]基于Windows用戶組的授權(quán)方式[上篇]

      Windows用戶組安全主體權(quán)限模式,顧名思義,就是將利用Windows安全系統(tǒng)將對(duì)應(yīng)的Windows帳號(hào)所在的用戶組作為該用戶權(quán)限集的授權(quán)方式。認(rèn)證和授權(quán)密不可分,但是對(duì)于認(rèn)證和授權(quán)在WCF安全體系中的實(shí)現(xiàn)來說,它們則是相對(duì)獨(dú)立的。認(rèn)證屬于安全傳輸?shù)姆懂牐窃谛诺缹訉?shí)現(xiàn)的,而授權(quán)則是在服務(wù)模型層實(shí)現(xiàn)的。但是對(duì)于基于Windows用戶組的授權(quán)來說,最終體現(xiàn)出來的授權(quán)行為卻和采用何種認(rèn)證具有密切的關(guān)系。

      一、Windows用戶組授權(quán)與認(rèn)證的關(guān)系

      無論是對(duì)于基于Windows用戶組還是基于ASP.NET Roles提供程序的授權(quán),最終都體現(xiàn)在創(chuàng)建相應(yīng)的安全主體,并將其附加到當(dāng)前線程上。對(duì)于Windows用戶組模式來說,有一點(diǎn)是肯定的:不論采用何種客戶端憑證類型以及認(rèn)證模式,最終建立的安全主體都是一個(gè)WindowsPrincipal,并且這個(gè)WindowsPrincipal對(duì)應(yīng)的安全身份是一個(gè)WindowsIdentity。但是該WindowsPrincipal的Identity能否正確地反映被認(rèn)證后的用戶,以及其本身能夠正確反映該認(rèn)證用戶的權(quán)限,就和認(rèn)證有密切的關(guān)系。

      具體來說,當(dāng)你選擇了Windows用戶組安全主體權(quán)限模式,只有在采用Windows認(rèn)證的情況下最終生成的安全主體才能正確地反映被認(rèn)證的用戶。這里的Windows認(rèn)證包括如下三種情況:

      • 客戶端憑證為Windows憑證;
      • 客戶端憑證為用戶名/密碼憑證,并采用Windows認(rèn)證模式;
      • 客戶端憑證為X.509證書憑證,并允許與Windows帳號(hào)進(jìn)行映射。

      在其他情況下,最終被創(chuàng)建的是一個(gè)“空”的WindowsPrincipal。這個(gè)空的WindowsPrincipal不僅僅體現(xiàn)在具有一個(gè)“空”的權(quán)限集,而且其內(nèi)部的WindowsIdentity也為“空”。該WindowsIdentity具有如下面列表所示的屬性。

      • Name:空字符串
      • AuthenticationType: 空字符串
      • IsAuthenticated:False
      • Groups:Null
      • IsAnonymous:True
      • IsGuest:False
      • IsSystem:False

      在非Windows認(rèn)證的情況下,即使存在著一個(gè)與認(rèn)證用戶一致的Windows帳號(hào),WCF授權(quán)系統(tǒng)都不會(huì)基于該Windows帳號(hào)來創(chuàng)建最終的WindowsPrincipal。舉個(gè)例子,假設(shè)服務(wù)寄宿端所在的域中具有一個(gè)用戶叫做“張三”,并且存在于當(dāng)前機(jī)器的管理員(Administrators)用戶組中。現(xiàn)在我們對(duì)某個(gè)服務(wù)操作進(jìn)行授權(quán),要求必須在具有管理員權(quán)限才能被調(diào)用。在進(jìn)行服務(wù)寄宿的時(shí)候,終結(jié)點(diǎn)的綁定采用用戶名/密碼作為客戶端憑證,并選擇Membership認(rèn)證模式。在認(rèn)證成功的情況下,被授權(quán)的服務(wù)操作也是不能被正常調(diào)用的。

      通過前面一篇文章的介紹,我們知道了WCF采用怎樣的授權(quán)的方式通過ServiceAuthorizationBehavior這一服務(wù)行為來控制。所以針對(duì)授權(quán)的編程主要就體現(xiàn)在對(duì)該服務(wù)行為的設(shè)置。對(duì)于Windows用戶組授權(quán)來說,我們只需要將ServiceAuthorizationBehavior的PrincipalPermissionMode屬性設(shè)置成PrincipalPermissionMode.UseWindowsGroups即可。

      二、ServiceAuthorizationBehavior服務(wù)行為的設(shè)置

      既然ServiceAuthorizationBehavior是一個(gè)服務(wù)行為,我們只需要通過編程或者配置的方式將該服務(wù)行為添加到當(dāng)前服務(wù)的行為列表中就可以了。你可以按照下面的編程方式讓寄宿的服務(wù)采用基于Windows用戶組授權(quán)模式。

         1: using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
         2: {
         3:     ServiceAuthorizationBehavior behavior = host.Description.Behaviors.Find<ServiceAuthorizationBehavior>();
         4:     if (null == behavior)
         5:     {
         6:         behavior = new ServiceAuthorizationBehavior();
         7:         host.Description.Behaviors.Add(behavior);
         8:     }
         9:     behavior.PrincipalPermissionMode = PrincipalPermissionMode.UseWindowsGroups;
        10:     host.Open();
        11:     //...
        12: }

      此外在ServiceHost你也可以通過ServiceHost的只讀屬性Authorization得到這個(gè)ServiceAuthorizationBehavior對(duì)象。如下面的代碼片斷所示,該屬性實(shí)際上是定義在ServiceHost的基類ServiceHostBase中。

         1: public abstract class ServiceHostBase
         2: {
         3:     //其他成員
         4:     public ServiceAuthorizationBehavior Authorization { get; }
         5: }

      在讀取該屬性的時(shí)候,如果當(dāng)前服務(wù)描述中的服務(wù)行為列表中找不到ServiceAuthorizationBehavior,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)ServiceAuthorizationBehavior對(duì)象并添加到服務(wù)行為列表中。所以對(duì)于上面的這段服務(wù)寄宿代碼實(shí)際和下面是完全等效的。

         1: using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
         2: {    
         3:     host.Authorization.PrincipalPermissionMode = PrincipalPermissionMode.UseWindowsGroups;
         4:     host.Open();
         5:     //...
         6: }

      我們依然推薦采用配置的方式進(jìn)行授權(quán)模式的設(shè)置。而下面一段配置和上面的代碼在作用上是等效的。

         1: <configuration>
         2:   <system.serviceModel>    
         3:     <services>
         4:       <service name="Artech.WcfServices.Services.CalculatorService" behaviorConfiguration="UseWindowsGroupsAuthorization">
         5:         <endpoint address="http://127.0.0.1/calculatorservice" binding="ws2007HttpBinding" contract="Artech.WcfServices.Contracts.ICalculator"/>
         6:       </service>
         7:     </services>
         8:     <behaviors>
         9:       <serviceBehaviors>
        10:         <behavior  name="UseWindowsGroupsAuthorization">
        11:           <serviceAuthorization principalPermissionMode="UseWindowsGroups"/>
        12:         </behavior>
        13:       </serviceBehaviors>
        14:     </behaviors>
        15:   </system.serviceModel>
        16: </configuration>

      為了讓讀者對(duì)基于Windows用戶組的授權(quán)具有深刻的認(rèn)識(shí),在《下篇》中我們通過一個(gè)簡單的事例來講解在真正的應(yīng)用中該授權(quán)模式如何使用。

      [WCF權(quán)限控制]基于Windows用戶組的授權(quán)方式[上篇]
      [WCF權(quán)限控制]基于Windows用戶組的授權(quán)方式[下篇]

      posted @ 2011-07-02 11:35  Artech  閱讀(7409)  評(píng)論(6)    收藏  舉報(bào)
      主站蜘蛛池模板: gogogo高清在线播放免费| 四虎影视永久在线精品 | 韩国免费a级毛片久久| 妇女自拍偷自拍亚洲精品| 中文字幕精品亚洲二区| 一个人看的www视频免费观看| 亚洲AV无码国产在丝袜APP| 国产在线午夜不卡精品影院| 国产偷人妻精品一区二区在线| 艳妇乳肉豪妇荡乳在线观看| 少妇人妻偷人精品系列| 国产三级国产精品久久成人| 国产亚洲精品成人aa片新蒲金| 欧美性白人极品hd| 精品福利一区二区三区免费视频| 四虎精品视频永久免费| 日韩人妻无码中文字幕视频| 亚洲高清偷拍一区二区三区| 亚洲的天堂在线中文字幕| www亚洲精品| 欧美18videosex性欧美tube1080 | 一二三四中文字幕日韩乱码| 国产成人精品a视频| 国产在线精品中文字幕| 性无码一区二区三区在线观看 | 激情五月开心综合亚洲| 林芝县| 日本一级午夜福利免费区 | 久久青草国产精品一区| 国内自拍偷拍福利视频看看| 亚洲精品成人A在线观看| 欧美一区二区三区欧美日韩亚洲 | 免费黄色大全一区二区三区| 色综合天天综合天天综 | 一本大道久久a久久综合| 亚洲 一区二区 在线| 国产成人亚洲日韩欧美| 久久精品国产只有精品96| 内射一区二区三区四区| 亚洲欧洲日产国码久在线| 在线欧美中文字幕农村电影|