我目前正在开发一个Silverlight 3应用程序,需要某种形式的用户身份验证的,因为从WCF服务拉着数据是特定的用户。 目标受众是经常上网 - 所以没有对AD进行身份验证。
下面是一些我有一个关于这种情况的问题:
- 是否有一个框架或其他机制,支持我吗?
- 你会推荐Silverlight应用程序内或通过类似形式的权威性以外的机制认证? 哪个更安全?
- 怎么样外的浏览器支持?
我目前正在开发一个Silverlight 3应用程序,需要某种形式的用户身份验证的,因为从WCF服务拉着数据是特定的用户。 目标受众是经常上网 - 所以没有对AD进行身份验证。
下面是一些我有一个关于这种情况的问题:
我用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);
}
}
希望帮助。
我会考虑使用中存在的ASP.NET验证类。 然后,您可以使用.NET RIA服务(甚至根本,WCF)与认证服务进行通信。
本文当作底漆。