我整天都在努力解决这个问题。
我正在使用JavaScript和HTML5开发Windows 8应用程序。我需要根据分配了用户帐户的活动目录组限制应用程序的某些功能。
问题是:如何检查用户帐户是否属于Active Directory组?
我已尝试使用Windows.System.UserProfile.UserInformation和Windows.Security.Credentials.UI.CredentialPicker,但它们都没有返回测试用户帐户是属于某个组的方法,还是返回用户所在的组的方法帐户已分配。
提前感谢您的帮助。
答案 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
});