2009-07-12 19 views
7

現在、WCFサービスから取得したデータはユーザー固有のものであるため、何らかのユーザー認証が必要なSilverlight 3アプリケーションを開発中です。ターゲットオーディエンスは通常のインターネットなので、認証するADはありません。Silverlightユーザー認証

  • 私をサポートするフレームワークや他のメカニズムがあります:

    ここで私はその状況に関するしているいくつかの質問がありますか?

  • Silverlightアプリ内で認証することをお勧めしますか、フォーム認証のような外部のメカニズムを使用することをお勧めしますか?どちらがより安全ですか?
  • ブラウザからのサポートはどうですか?

答えて

2

私は、ASP.NETの認証を使用していました。 MembershipProviderを使用するだけで(または独自に実装する) http://www.silverlightshow.net/items/Accessing-the-ASP.NET-Authentication-Profile-and-Role-Service-in-Silverlight.aspxにアクセスして、認証サービスの公開方法を確認してください。

その後、あなたのWCFサービスでは、あなたが(ASPでホストされている)次の操作を行います

public class MyWCFService : IMyWCFService 
{ 
     // retrieve your UserId from the MembershipProvider 
     private int GetUserId() 
     { 
      MembershipUser user = Membership.GetUser(); 
      int userId = (int)user.ProviderUserKey; 
      return userId; 
     } 

     // check if user is authenticated 
     private bool IsUserAuthenticated() 
     { 
      return HttpContext.Current.User.Identity.IsAuthenticated; 
     } 

     public void Subscribe() 
     { 
      if (!IsUserAuthenticated()) 
      { 
       throw new SecurityException("You must be authenticated to be able to use this service."); 
      } 

      int userId = GetUserId(); 
      DoStuff(userId); 
     } 
} 

お役に立てば幸いです。

2

私は、ASP.NETに存在する認証クラスの使用を検討します。 .NET RIA Services(または単にWCF)を使用して、認証サービスと通信することができます。

Consider this article as a primer.

+0

このソリューションの経験はありますか? –

+0

はい。私はSL3と.NET RIA Servicesを使用しました。これは私が取り組んでいる概念証明アプリケーションですが、リモートでユーザーを作成してログオンすることができます。 – billb