質問

だからここに私の現在のコードがあります:

List<string> rowGroups = GetFileGroups((int)row.Cells["document_security_type"].Value);
bool found = false;
System.Security.Principal.WindowsPrincipal p = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent());

foreach (string group in rowGroups)
{
  if (p.IsInRole(group))
  {
    found = true;
    break;
  }
}

これは数か月前に誰かによって行われましたが、なぜ機能しないのかを把握するのが困難です。同社は最近、あるドメイン名から別のドメイン名に移行しました。そのため、p.IsInRole(<!> quot; String <!> quot;)関数がどのドメインコントローラーを使用するのか興味がありました。コンピューターが使用しているものは何でもデフォルトのDCを使用すると想定しています。

奇妙なことは、これが実行されているオフィスのコンピューターが2つの別々のドメインにある可能性があることです。 List<string>オブジェクトでは、両方のドメインを使用できます。そのため、<!> quot; domainA \ groupA <!> quot;、<!> quot; domainA \ userB <!> quot;、domainB \ groupC <!> quot ;、および/または<!>などのアイテムを含めることができます。 quot; domainB \ userD <!> quot;。

したがって、私の主な問題は、IsInRole関数が決してtrueを返さないことです。私はそれが必要であることを知っていますが、domainA \ Domainユーザーでテストしても、falseが返されます。

アイデアはありますか?コードの変更は可能ですが、望ましくありません。私はそれをコンパイルすることもできます...

役に立ちましたか?

解決 2

まあ、問題を解決するには、グループ名の代わりにグループの各ユーザーを具体的に追加する必要がありました...

他にアイデアはありますか

他のヒント

指摘しなければならないのは、実際に文字列内で '\'文字を正しくエスケープしているということですか? <!> quot; domainA \\ groupA <!> quot;?

のように

役割ベースのセキュリティのために、Active DirectoryでOutlook電子メールリストを使用しようとすると問題が発生しました。これらはActive Directoryに表示され、実際のセキュリティグループ(ACLで参照できるグループなど)と区別するのは困難です。使用しているグループがセキュリティグループであることを管理者に確認してもらいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top