我正在尝试使用官方nuget库(https://github.com/microsoftgraph/msgraph-sdk-dotnet)来使用GraphAPI。但是,身份验证过程并不简单,也没有很好的记录。
我是机器对机器方案中的CSP合作伙伴,因此没有带有重定向网址的UI应用程序,用户手动输入其凭据以同意访问权限。但它似乎是我发现的样本中有详细记录或可用的独特场景......即使是官方的CSP文档也不清楚(https://developer.microsoft.com/en-us/graph/docs/concepts/auth_cloudsolutionprovider)。
我之前在生产(和TIP环境)中使用了许多其他API作为MSP,CrestAPI和AzureGraph等CSP,因此应用程序的所有配置和注册都不是问题。
是否可以在机器对机器方案中将MSAL用作CSP?是否有可用于我的用例的文档或示例?
更新
我认为我走的是好路。
首先,我必须在apps.dev.microsoft.com上注册我的应用程序。我的应用程序之前已在portal.azure.com上注册。看起来AzureAD和Graph对应用程序必须注册的位置有不同的要求。
其次,我在这里使用示例:https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2。
第三,当我提供CSP TenantId时,我可以调用Graph API。但是,当我尝试使用我管理的租户之一的TenantId调用Graph API时,我得到了:
{ "error": {
"code": "Authorization_IdentityNotFound",
"message": "The identity of the calling application could not be established.",
"innerError": {
"request-id": "7cab3137-b3e7-4622-9123-e47f2c018c56",
"date": "2017-09-04T14:48:34"
} } }
(我的用例中无法获得同意页面,因此我尝试使用以下所有消费者预先同意我的应用:https://developer.microsoft.com/en-us/graph/docs/concepts/auth_cloudsolutionprovider)
答案 0 :(得分:0)
您可以使用MSAL执行Graph SDK所需的身份验证。使用带有MSAL的.NET Graph SDK有一些code snippets,但最好的选择是Connect Sample在工作应用中显示这一点。
有关如何使用MSAL以及库的功能的完整指导示例,请查看MSAL .NET Desktop Sample。