针对远程Active Directory验证用户名

时间:2020-05-21 21:39:08

标签: .net azure-active-directory

已给我一个任务,以获取用户名并检查它是否存在于Azure托管的Active Directory中。发生这种情况的上下文是.NET Web服务,它充当客户端/服务器系统中的服务器。

不幸的是,我在这方面几乎没有专业知识。

我所拥有的是一些来自客户端应用程序的代码,这些代码使用从json文件读取的一些字符串值创建了一个名为PublicClientApplication的类。我能够将json文件放入.NET应用程序中,进行读取,然后成功创建PublicClientApplication。

有一个名为GetAccountAsync(string accountId)的函数。我尝试了它,但是即使我确定传递的字符串是正确的帐户名(或至少与用户键入的登录名相同),也没有返回任何结果。 / p>

GetAccountAsync的文档说:“标识符通常是AccountId的Identifier属性的值。通常,您可以使用HomeAccountId属性从IAccount获取帐户ID”。我猜这与帐户名不同,但是我不知道从哪里获得。我有一个jwt令牌,可以在其中获取帐户名,但是它似乎不包含任何ID。

此外,我还尝试调用GetAccountsAsync(),该方法应该返回所有帐户,但我有一个空列表。

我该怎么做才能使这项工作成功?

坦率

1 个答案:

答案 0 :(得分:0)

基本上,要检查用户的存在,您将需要调用Microsoft Graph API。这样做有两种方法:1)代表用户使用范围/授权权限,2)使用应用程序权限作为应用程序。

选项1要求您首先对用户进行身份验证,这样就无法在您的情况下起作用。

您无法从公共客户端应用程序执行选项2,因为它需要使用机密。您可以使用不需要身份验证的后端中的端点来执行此操作。这样做的问题在于,它将允许恶意方枚举帐户。

就我个人而言,我不会做这样的检查。如果用户的帐户被锁定等,则无论如何都会在登录页面上显示错误(或您的应用将在其回调URL中收到错误)

相关问题