6

Windowsアカウントを使用してWCFサービスを保護しようとしています。このサービスは、さまざまな言語の多くのシステムで実行する必要があります。言語に依存しないロール名を持つPrincipalPermissionを設定するにはどうすればよいですか?

私はこのような醜い回避策を見つけました。

[PrincipalPermission(SecurityAction.Demand, Role = "Builtin\\Administrators")] // English
[PrincipalPermission(SecurityAction.Demand, Role = "Vordefiniert\\Administratoren")] // German
public string HelloWorld()
{
    return "Hello";
}

これは良い解決策ではないと思いますが、この言語を独立させる方法はありますか?文字列の代わりにアカウントSIDを使用する方法はありますか?

4

5 に答える 5

3

翻訳を処理する独自の権限属性をロールすることができます。

 [Serializable, AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = false), ComVisible(true)] 
 public sealed class AdministratorPrincipalPermissionAttribute : CodeAccessSecurityAttribute 
 {  
    public AdministratorPrincipalPermissionAttribute(SecurityAction action) : base(action)
    { }

    public override IPermission CreatePermission()
    {
       var identifier = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
       var role = identifier.Translate(typeof(NTAccount)).Value;
       return new PrincipalPermission(null, role);
    }
 }

これには、追加の展開作業(gac、caspolなど)が必要になることに注意してください。

于 2009-05-09T13:29:14.917 に答える
2

もう一度試してください:http://msdn.microsoft.com/en-us/library/system.security.principal.windowsbuiltinrole.aspx ....を見て、サンプルに移動してください。そこで、BuiltIn列挙型メンバーを使用して、(APIを介して)正しいスペルのグループ名を取得できます...その場合、言語に依存しないはずです。

HTH、トーマス

于 2009-05-08T11:26:44.177 に答える
1

命令型バージョンを使用して、言語に依存しない形式(SIDなど)をローカライズされた形式に動的に変換できます(SecurityIdentifier.Translateを使用する場合があります)。

よく知られているSIDはKB243330にリストされています。

于 2009-05-08T18:40:47.293 に答える
0

うーん、コードで直接グループ名を使用することはありません(ハードコードされています)。それを「HelloWorldAdmin」のような役割に抽象化し、app.configで役割を構成してみてください。これはユーザーグループにマップする必要があります。これにより、ユーザー/管理者はグループを選択してロールにマップできます(たとえば、アプリケーション管理者がAD管理者でない場合)。http://msdn.microsoft.com/en-us/library/ms998314.aspxをご覧ください。HTH。

于 2009-05-04T14:49:50.197 に答える
0

ドイツ語のシステムでは、「BUILTIN \ Administrators」が機能しないことを絶対に確信していますか?それでも想像していたでしょうが、これらの基本的なグループ名は有効なはずです。はい、管理ツールでは「Vordefiniert \ ADministratoren」と表示されますが、PrincipalPermission属性が言語に依存する場合は驚きます。

マーク

于 2009-05-04T16:44:47.863 に答える