混淆了Xamarin Forms auth到AAD

时间:2018-02-24 12:11:39

标签: azure xamarin.forms azure-mobile-services

我在Azure中创建了一个用于我的XF应用程序的移动应用程序,这已经在我的AAD中创建了一个应用程序,我现在正在阅读以下内容,尝试将我的XF应用程序授权给我创建的Azure应用程序

XF and AAD Auth

和这个

Auth Azure API

这告诉我创建一个类型为native的新应用程序让我有点困惑这是否意味着我需要在Azure中使用2个应用程序?一个用于后端,一个用于Mobile身份验证?在Azure的移动应用程序部分中使用配置选项时,找到一个能够正确描述这一点的直接文档似乎非常困难。

任何指针都会非常有用

1 个答案:

答案 0 :(得分:3)

Azure AD中需要两个应用程序。

  • 原生应用(Xamarin app)
  • Web / API(您的后端API)

然后,您的原生应用应该需要获得调用API的权限。所以将其添加到所需的权限。

您还可以将本机应用程序添加为API的已知客户端。 这可以通过在Azure AD中找到API的应用程序,单击Manifest,然后在那里添加本机应用程序的应用程序ID /客户端ID 来完成,以便knownClientApplications属性看起来像这样:

"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​​应用程序属性中的Application Id / Client Id或Application ID URI。

通话中的客户端ID当然应该是您原生应用的应用ID /客户端ID。

您可以查看自述文件的自述文件,了解如何注册本机应用程序。