1

指定した Windows グループのみがアクセスできる WCF サービスを作成しようとしています。これは、サーバーの web.config およびクライアント構成でどのように構成できますか?

注: コードではなく、サーバーの web.config でアクセスを許可されている Windows グループを制御できるようにしたいと考えています。また、SSLはまったく必要ありません。

私はグーグルで検索しましたが、私が見つけることができる最良の例はすべてこのようなものです...

WCF サービス、Windows 認証

ただし、特定のグループのみにアクセスを制限する方法については説明していません。

4

2 に答える 2

2

これがイントラネット アプリケーションの場合は、netTcpBinding を使用できます。

<services>
   <service name="YourService"
      behaviorConfiguration="YourServiceBehavior">
      <endpoint 
         binding="netTcpBinding"
         bindingConfiguration="SecureTransportWindows"
         contract="YourContract" />
   </service>
</services>

<bindings>
   <binding name="SecureTransportWindows">
      <security mode="Transport">
          <transport clientCredentialType="Windows" />
      </security>
   </binding>
</bindings>

<behaviors>
   <serviceBehaviors>
      <behavior name="YourServiceBehavior">          
          <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
      </behavior>
   </serviceBehaviors>
</behaviours>

そして、サービス コードでは、windows の役割を要求できます。

class YourService : YourContract
{
    [PrincipalPermission(SecurityAction.Demand, Role="MYDOMAIN\Administrators")]
    public string SecuredOperation(string name)
    {
       return "secured operation";
    }
}

構成で設定する必要がある場合は、カスタム承認を実装する必要があります。

<behavior name="YourServiceBehavior">          
   <serviceAuthorization principalPermissionMode="Custom">            
      <authorizationPolicies>
         <add policyType="YourCustomAuthorizationPolicy"/>
      </authorizationPolicies>          
   </serviceAuthorization>
</behavior>

コードでは IAuthorizationPolicy インターフェイスを実装します。

public class YourCustomAuthorizationPolicy : IAuthorizationPolicy
{
   //you need to check msdn 
}
于 2012-05-15T07:23:46.117 に答える
1

これが私たちが思いついた解決策です。コードの変更 (AspNetCompatibilityRequirements 属性の追加) が必要ですが、ハードコーディングではなく、web.config ファイルでグループ/ロールの構成を実現できるようになりました。

これにはいくつかの手順があります...

1) aspNetCompatibilityEnabled属性を serviceHostingEnvironment 要素に追加し、true に設定します。例:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

これにより、WCF サービスは ASP.NET 互換モードで実行され、ASP.NET HTTP 要求のライフサイクルに完全に参加するようになります。詳細については、この MSDN の記事を参照してください。

2) WCF コードで、上記のリンクおよびこの MSDN 記事で指定されているように、サービス クラスにAspNetCompatibilityRequirements属性を追加します...

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>

3) これで、通常の ASP承認要素を追加して、指定したグループ/ユーザーへのアクセスを制限できます (上記の (1) と (2) の設定がない場合、これは WCF によって無視されます)...

<system.web>
    <authorization>
        <allow roles="MYDOMAIN\WCFAuthenticatedUsers" /> <-- allows access to users in this group
        <deny users="*" /> <-- denies access to all other users
    </authorization>
</system.web>
于 2012-05-24T00:41:58.017 に答える