您需要 Azure AD 中的两个应用程序。
- 本机应用(Xamarin 应用)
- Web/API(您的后端 API)
然后,您的原生应用应该需要调用 API 的权限。因此,将其添加到所需的权限中。
您还可以将本机应用程序添加为 API 的已知客户端。
这可以通过在 Azure AD 中找到 API 的应用程序,单击 Manifest,然后在其中添加应用程序 ID/客户端 ID 本机应用程序来完成,这样knownClientApplications 属性就会如下所示: p>
"knownClientApplications":[
"your-native-app-client-id"
]
这样做的意义在于,现在当用户登录时,他们可以同时同意这两个应用程序。
然后,您的原生应用应使用 ADAL 为您的 API 获取访问令牌。
当然,您也可以从您的原生应用中调用其他 API,例如 MS Graph API。
您实际上可以在此处找到示例应用程序:https://github.com/Azure-Samples/active-directory-dotnet-native-multitarget。
重要的一行是here:
authResult = await authContext.AcquireTokenAsync(graphResourceUri, clientId, returnUri, parent);
资源 URI 很重要。它向 AAD 指定要调用的 API。对于 Azure AD Graph API,它是 https://graph.windows.net。对于 MS Graph API,它是https://graph.microsoft.com。对于后端 API,您可以使用 API 应用程序属性中的应用程序 ID/客户端 ID 或应用程序 ID URI。
这里调用的Client Id当然应该是你原生应用的Application Id/Client Id。
您可以查看自述文件中有关如何注册本机应用程序的示例。