Silverlight - 扩展AuthenticationService以提供自定义身份验证

时间:2010-07-07 09:23:31

标签: silverlight authentication azman domainservices

我正在尝试添加到Silverlight 4业务模板中提供的身份验证系统,因为我的模型并不完全适合模板中提供的模型。我有一个现有的Web服务,它执行我的身份验证并为每个角色提供角色和允许的操作。这是AzMan / Authentication Manager提供的模型。

但是,我不是仅仅获得一个角色,而是在身份验证后向用户提供可用角色列表,并允许用户选择其中一个角色,然后获取该选定角色的操作/操作列表。

我遇到的问题是我无法弄清楚如何向身份验证服务添加新方法以允许我获取当前用户的操作,以及当前所选角色以完成登录过程,例如

    public SessionInfo GetOperations(string username, string selectedRole)
    {
        SessionInfo sessionInfo;

        using (AzManServiceClient azClient = new AzManServiceClient("AnonymousAuthentication"))
        {
            sessionInfo = azClient.LoginUserByUsername("msldap://CN=LiveApps,CN=Program Data,DC=HLSUK,DC=local", "AIRS", selectedRole, null, username);
        }

        return sessionInfo;
    }

无法使用WebContextBase.Current.Authentication从LoginForm.xaml.cs访问上述方法...只有Login等方法可见,这更令人困惑,因为我无法在authenticationbase中看到这些方法。我完全糊涂了。如何向身份验证服务添加新方法,或者应该创建新的域服务,还是应该访问azman服务以直接从silverlight客户端获取操作。

1 个答案:

答案 0 :(得分:1)

您是否尝试覆盖AuthenticationBase中的方法?

然后,您可以使用您想要的任何逻辑扩展您的身份验证服务。

 <EnableClientAccess()>
        Public Class AuthenticationRiaService
            Inherits AuthenticationBase(Of UserAccount)

            Protected Overrides Function ValidateUser(ByVal userName As String, ByVal password As String) As Boolean
            End Function
    End Class

同时设置

WebContext.Current.Authentication到您在身份验证System.ServiceModel.DomainServices.Client.ApplicationServices中找到的身份验证服务

抱歉愚蠢的VB代码。 :d