【问题标题】:What is the best way to verify if a given username/password is a valid local administrator?验证给定用户名/密码是否是有效的本地管理员的最佳方法是什么?
【发布时间】:2016-06-11 04:03:20
【问题描述】:

我有一个 UWP 应用程序,该应用程序将由计算机上的非管理员用户使用。我将在我们的应用程序中创建一个管理页面,该页面仅控制我们应用程序的一些设置。我想抛出一个用户名/密码对话框来控制对这个管理页面的访问。我只希望本地计算机上的管理员有权访问此管理页面,因此我想验证通过我的登录提示提供的用户名/密码是否是机器上的本地管理员。我不需要在任何地方“登录”这个用户,我只需要将对我的管理页面的访问权限设置为只有管理员在盒子上的权限。

有人能指出我正确的方向吗?如果可能,我宁愿使用 C#。我看过的很多示例似乎都是为了让用户登录,我只需要验证用户名/密码是有效的管理员凭据

【问题讨论】:

标签: admin uwp credentials verify


【解决方案1】:

UWP 应用是沙盒化的,因此没有提供有关用户权限级别或它们所属的系统组的信息。我可以推荐的最接近的方法是存储第一个登录用户的用户名,然后检查当前经过身份验证的用户名和域是否与存储的值匹配(这样您也将避免输入用户名/密码并向普通用户显示管理页面/登录名)。

IReadOnlyList<User> localAuthenticatedUsers = await User.FindAllAsync(UserType.LocalUser, UserAuthenticationStatus.LocallyAuthenticated);
User user = users.FirstOrDefault();
if (user != null)
{
    String[] userProperties = new String[]
    {
        KnownUserProperties.AccountName,
        KnownUserProperties.DomainName
    };

    IPropertySet values = await user.GetPropertiesAsync(desiredProperties);
    if (values[KnownUserProperties.AccountName] == storedAccountName && values[KnownUserProperties.DomainName] == storedDomainName) {
        ...
    }
}

但是,这种方法不允许在同一台机器上验证多个管理员。作为一种变通方法,您可以在管理页面/设置中的某处维护已批准用户的列表。

【讨论】:

  • 感谢您的回复。有趣的是,即使我正在开发 UWP 应用程序——我们的应用程序永远不会提交给商店,而是直接出售给客户。因此我们不需要遵守任何商店认证规则。我们牢记这一点 - 您知道实现我访问管理员凭据的目标的方法吗?
  • 如果您可以编写一个桌面服务来为您检查登录/通过,那么您的 UWP 应用就可以与此类服务进行通信。
猜你喜欢
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
相关资源
最近更新 更多