2011-09-13 9 views
1

現在、私の会社のWFC RIAベースのSilverlightビジネスアプリケーション(イントラネット専用)を開発中です。ユーザーを認証しようとすると、いくつかの問題が発生しました。状況は次のとおりです。ローカルWindowsグループによるWCF RIA承認

このアプリはWindowsドメインで実行されているため、すでにうまく機能しているWindows認証を使用しています。特定のドメインサービス操作へのアクセスは、特定のグループのメンバーに制限されます(「管理者」としましょう)。このグループは、アプリケーションがホストされているサーバー上でローカルで使用でき、既にSQL Serverインスタンスへのアクセスを制限するために使用されています。このグループをドメインに追加して、それをグローバルに利用できるようにすることはできません。

ドメインサービスメソッドへのアクセスをRequiresRole[]属性で制限することができます。ただし、ユーザーのローカルグループメンバーシップがWebContext.Current.Userで利用可能なユーザーオブジェクトに読み込まれないため、認証に失敗するという問題があります。

これを行うための回避策がありますか?

ありがとうございます!

答えて

0

私は私の問題を解決しました。

私が行ったことは、サーバーマシン上のSQL ServerインスタンスにAspnetDbデータベースをコピーすることでした。このデータベースには、ユーザー、ロールなどに関するすべての情報が格納されており、承認のためにASP.NETロールマネージャーによって使用されます。このデータベースは通常、Webプロジェクトのプロジェクトフォルダ(App_Dataディレクトリ内)にあります。新しい設定を行うには、Web.config 内の接続文字列を変更する必要があります(詳細はhttp://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx)。

私は手動でデータベースに新しいユーザーを追加しました。そこに入力するユーザー名は、Windowsユーザー名(DOMAIN \ USER_NAMEなど)と一致する必要があります。次に、新しい役割をデータベースに追加して、すべてのユーザーに特定の役割を与えることができます。

ASP.NETロールマネージャは、アプリケーションの起動時にロール/ユーザーを自動的に読み込み、RequiresRole[]属性を使用してドメインサービスメソッドへのアクセスを制限できます。 http://blogs.msdn.com/b/kylemc/archive/2010/05/04/authorization-sample-201.aspx

1

制限するサービスメソッドで "PrincipalPermission"属性を設定しようとしましたか?

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")] 
public string GetResult() 
{ 
    return "result"; 
} 

敬具、 アリエン

+0

の許可属性自体は問題ではありませんでした。また

は、動的/ /非表示を表示/ロールメンバーシップに基づいて無効にユーザーコントロールを有効にするには、ここを参照してくださいする方法があります。問題は、ロールマネージャー内でロールをロードすることでした。以下の私の答えを参照してください。 – th4z