2011-12-08 15 views
0

私はwcf 4.0サービスを持っています。私はIIS Expressでローカルに実行しています。セキュリティを管理するためにazmanを使用しています。宣言構文を使用してサービスを保護し、クラスライブラリのクラスインスタンス化を防ぐことができます。しかし、私がクラス内のメソッドを飾るとき、それは効果がありません。宣言型セキュリティとazmanを使用してクラスのメソッドを保護

[PrincipalPermission(SecurityAction.Demand, Role = "AdminRole")] //THIS WORKS 
public class MaintainUser 
{ 
    [PrincipalPermission(SecurityAction.Demand, Role = "CreateNewUserx")] //THIS DOES NOT WORK 
    public void CreateNewUser() 
    { 
     if (ViterraSecurity.VerifyAccess.HasOperation("CreateNewUserx", ViterraSecurity.VerifyAccess.BasisOperations.CreatUser)) 
     { 
      return; 
     } 

     throw new AccessViolationException("CreateNewUser"); 
    } 

} 

メソッドのセキュリティチェックを有効にすることはできますか?

答えて

0

私は、CreateNewUserxが役割ではなくAzManの操作またはタスクであると推測しています。 AuthorizationStoreRoleProviderはAzManロールのみを認識し、PrincipalPermissionはIPrincipalによって公開されるロールのみをチェックします。しかし、これは、操作ベースの認証メカニズムの主なポイントは、ロールをユーザーが設定できるようにし、アプリケーションが操作を心配するだけで済むようにするため、AzManを使用する逆の方法です。

操作権限のみを要求するという役割の要求を廃止することをお勧めします。このようなアプローチでは、AzManの操作に注意するために、アクセス許可(および属性)または主体の実装、またはその両方を変更する必要があります。

+0

(非常に)遅い応答に申し訳ありません、私はそれを以前見たことがありました!これは、私が間違ってやっていることとその理由をよく説明しています。 – PatFromCanada

関連する問題