1

特定のユーザーが特定のサービス アプリケーションに対するアクセス許可を持っているかどうかを確認しようとしていますが、うまくいきません。これまでのところ、現在のユーザーが次のようなコードでアクセス許可を持っているかどうかを確認できました。

SPCentralAdministrationSecurity security = serviceApp.GetAdministrationAccessControl();
var acl = security.ToAcl();
bool hasAccess = acl.DoesUserHavePermissions(SPCentralAdminRights.FullControl);

ただし、私が言ったように、必ずしも現在のユーザーではなく、特定のユーザーの許可を確認する必要があります。これを達成する方法を知っている人はいますか?

編集:

acl が実際にはリストであることをどういうわけか認識していませんでした。私はそれをループして、サービス アプリケーションの管理者を見つけました。しかし、どのアカウントがサービス アプリを呼び出すためのアクセス権を持っているかを確認するには、[アクセス許可] の下にリストされているアカウントを見つける必要があります。どんな助けでも大歓迎です。

4

1 に答える 1

0

さらに調査した結果、答えが見つかりました!詳細なコードは次のとおりです。

foreach (SPService service in SPFarm.Local.Services)
{
    if (service.Name.Equals("ServiceName"))
    {
        foreach (SPServiceApplication serviceApp in service.Applications)
        {
            //This gets the service app administrators
            SPCentralAdministrationSecurity serviceAppSecurity = serviceApp.GetAdministrationAccessControl();
            SPAcl<SPCentralAdministrationRights> adminAcl = serviceAppSecurity.ToAcl();

            foreach (SPAce<SPCentralAdministrationRights> rights in adminAcl)
            {
                //Handle users
            }

            //This gets the users that can invoke the service app
            SPIisWebServiceApplication webServiceApp = (SPIisWebServiceApplication) app;
            SPIisWebServiceApplicationSecurity webServiceAppSecurity = webServiceApp.GetAccessControl();
            SPAcl<SPIisWebServiceApplicationRights> invokerAcl = webServiceAppSecurity.ToAcl();

            foreach (SPAce<SPIisWebServiceApplicationRights> rights in invokerAcl)
            {
                //Handle users
            }
        }
    }
}
于 2012-10-03T14:37:22.417 に答える