0

私は wcf 4.0 service を持っています。IIS Express でローカルに実行しており、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");
    }

}

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

4

1 に答える 1

0

CreateNewUserx は、ロールではなく、AzMan の操作またはタスクであると推測しています。 AuthorizationStoreRoleProviderAzMan ロールのみを認識し、PrincipalPermission は IPrincipal によって公開されたロールのみをチェックします。ただし、操作ベースの承認メカニズムの主なポイントは、ロールをユーザーが構成できるようにし、アプリケーションが操作のみを考慮できるようにすることであるため、これは AzMan を使用する少し逆の方法です。

操作権限のみを要求することを優先して、ロールの要求を破棄することをお勧めします。このようなアプローチでは、AzMan の操作を認識するために、アクセス許可 (および属性) またはプリンシパルの実装、あるいはその両方を変更する必要があります。

于 2011-12-08T17:43:13.267 に答える