在Windows 8应用程序中获取用户帐户Active Directory组

时间:2013-02-26 20:12:00

标签: javascript html5 windows-8 active-directory winjs

我整天都在努力解决这个问题。

我正在使用JavaScript和HTML5开发Windows 8应用程序。我需要根据分配了用户帐户的活动目录组限制应用程序的某些功能。

问题是:如何检查用户帐户是否属于Active Directory组?

我已尝试使用Windows.System.UserProfile.UserInformation和Windows.Security.Credentials.UI.CredentialPicker,但它们都没有返回测试用户帐户是属于某个组的方法,还是返回用户所在的组的方法帐户已分配。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我找到了一个执行此操作的解决方案,这是我实施的解决方案,并且可行。您可以创建一个Web服务来验证针对Active Directory的凭据,您可以在其中传递域,用户名和密码,然后使用WinJS.xhr从应用程序中调用它。要请求凭据,您可以使用CredentialPicker控件,该控件返回用户输入的域,用户名和密码。

以下是代码:

网络服务代码:

ValidateUserResult vur = new ValidateUserResult();

    try
    {
        using (PrincipalContext context =
            new PrincipalContext(ContextType.Domain, domain))
        {
            vur.UserCredentialsAreValid = context
                .ValidateCredentials(username, password);

            if (vur.UserCredentialsAreValid)
            {
                vur.ProcessMessageText = "Ok";
                vur.ProcessMessageCode = 0;
            }
            else
            {
                vur.ProcessMessageText =
                    "Credenciales invalidas";
                vur.ProcessMessageCode = -1;
            }
        }
    }
    catch (Exception ex)
    {
        vur.UserCredentialsAreValid = false;
        vur.ProcessMessageText = ex.Message;
        vur.ProcessMessageCode = ex.HResult;
    }

    return vur;

Windows 8 App:

WinJS.xhr({
    type: "get"
    , url: {Web Service Url}
        + "/json/{Web Service Method Name}?domain="
        + domain + "&username=" + username
        + "&password=" + password
}).then(
    function (result) {
        if (result.status === 200) {

            // Place code here.

        }
    },
    function (error) {

        // If an error occurs, manage here

    });