WCFサービスバックエンドを持つ大規模なASP.NET 4サイトを作成しています。サイトでログインと承認のためにサービスを使用したいと思います。ASP.NETアクセス許可をWCFサービスに結び付ける方法
基本的に、ユーザーがログインページにアクセスしたときに、メンバーシッププロバイダを使用する代わりに、認証メカニズムとしてWCFサービスを使用する必要があります。
WCFサービスは既に認証と承認(偽装あり)を使用しているため、アクセス許可を持たないサービスメソッドを実行しようとするとエラーが発生します。
質問はどうやってこれをASP.NETサイトと結びつけるのですか?
Webサービスインタフェース:
[ServiceContract]
public interface IService
{
[OperationContract]
bool Foo();
[OperationContract]
void Bar();
}
Webサービス:クライアントで
public class BackEndService : IService
{
[PrincipalPermission(SecurityAction.Demand, Role="FooRole")]
public bool Foo()
{
return false;
}
[PrincipalPermission(SecurityAction.Demand, Role="Bar")]
public void Bar()
{
//...
}
}
:
public class LoginPage : Page
{
public void LoginButton_Clicked(object sender, EventArgs e)
{
string username = TxtUsername.Value;
string password = TxtPassword.Value;
BackEndService client = new BackEndService();
client.CleintCredentials.Username = username;
client.ClientCredentials.Password = password;
client.Foo(); //if the credentials supplied do not have permissions there will be error
client.Bar();
}
}
をここで
は、私が使用していますいくつかのサンプルコードです私が達成しようとしていることPrincipalPermission属性でフラグが立てられたUI要素の機能のいくつかを持って、ユーザーがアクセス権を持っていないことを発見するためにサービスに出かける必要がないようにすることです。
さらに、ユーザーのアクセス許可に基づいてUI要素の一部を読み込み/読み込みしたいと考えています。
ユーザーが表示できるUIモジュールを返すために、サービスに何らかのロジックを書き込む必要がありますか?それは、UI要素のコードの背後でPrincipalPermissionAttributeを使用する場合のように、サービスを介してアクセス許可をMembershipプロバイダのように扱うことが可能ですか?
おかげで、
<bleepzter/>
私はそれを恐れていました。私はメンバーシップなしでUIを隠して表示するための自分のロジックをロールバックすると思います。 – bleepzter