已给我一个任务,以获取用户名并检查它是否存在于Azure托管的Active Directory中。发生这种情况的上下文是.NET Web服务,它充当客户端/服务器系统中的服务器。
不幸的是,我在这方面几乎没有专业知识。
我所拥有的是一些来自客户端应用程序的代码,这些代码使用从json文件读取的一些字符串值创建了一个名为PublicClientApplication的类。我能够将json文件放入.NET应用程序中,进行读取,然后成功创建PublicClientApplication。
有一个名为GetAccountAsync(string accountId)的函数。我尝试了它,但是即使我确定传递的字符串是正确的帐户名(或至少与用户键入的登录名相同),也没有返回任何结果。 / p>
GetAccountAsync的文档说:“标识符通常是AccountId的Identifier属性的值。通常,您可以使用HomeAccountId属性从IAccount获取帐户ID”。我猜这与帐户名不同,但是我不知道从哪里获得。我有一个jwt令牌,可以在其中获取帐户名,但是它似乎不包含任何ID。
此外,我还尝试调用GetAccountsAsync(),该方法应该返回所有帐户,但我有一个空列表。
我该怎么做才能使这项工作成功?
坦率
答案 0 :(得分:0)
基本上,要检查用户的存在,您将需要调用Microsoft Graph API。这样做有两种方法:1)代表用户使用范围/授权权限,2)使用应用程序权限作为应用程序。
选项1要求您首先对用户进行身份验证,这样就无法在您的情况下起作用。
您无法从公共客户端应用程序执行选项2,因为它需要使用机密。您可以使用不需要身份验证的后端中的端点来执行此操作。这样做的问题在于,它将允许恶意方枚举帐户。
就我个人而言,我不会做这样的检查。如果用户的帐户被锁定等,则无论如何都会在登录页面上显示错误(或您的应用将在其回调URL中收到错误)