【问题标题】:Azure AD Auth for Mobile Apps?适用于移动应用的 Azure AD 身份验证?
【发布时间】:2016-04-23 04:38:06
【问题描述】:

我创建了一个新的移动应用程序,以便在我的 Xamarin.iOS 应用程序中使用。我的应用没有任何注册用户,我只需要在我的 ios 应用中安全地访问移动应用服务 api。

经过 10 个小时的尝试,我仍然想不出办法让他工作。

我创建了一个新的移动应用程序,在设置(Azure 门户)中打开了身份验证/授权并创建了一个新的 Azure Active Directory 应用程序。

我已经用 [Authorize] 标签保护了我的 [MobileAppController]。

为了测试我已经请求了一个令牌

方法:POST
URLhttps://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/token
grant_type:client_credentials
client_id : {一个来自应用的 AD 部分}
client_secret : {一个来自应用的 AD 部分}

我收到了一个令牌,但使用它来访问(邮递员应用程序)

https://mytestmobileapp.azurewebsites.net/api/values 带有标头
授权 : Bearer {token}

给我一​​个

  "message": "Authorization has been denied for this request."

任何帮助将不胜感激。

谢谢你...

【问题讨论】:

标签: azure azure-active-directory azure-app-service-plans azure-mobile-services azure-app-service-envrmnt


【解决方案1】:

好吧,经过数小时的可怕挫折,我终于找到了答案。感谢cmets@https://github.com/Azure/azure-mobile-apps-ios-client/issues/14

我已经设置了流式传输日志和详细的错误消息来弄清楚发生了什么,我发现这是错误。

2016-01-18T20:06:31 PID[7448] 警告 JWT 验证失败:IDX10214:观众验证失败。观众:'https://quicktestmobileauthapp123.azurewebsites.net'。不匹配:validationParameters.ValidAudience: '8649d624-47ce-447f-9a5e-xxxxxxxxxxxx' 或 validationParameters.ValidAudiences: 'http://quicktestmobileauthapp123.azurewebsites.net'。

然后我意识到在请求令牌时我必须传递资源。

我的新令牌请求

Method: POST
URL : https://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/token
grant_type : client_credentials
client_id : {one from AD section for the app}
client_secret : {one from AD section for the app}
resource : {clientId from the AD section}

然后我从上述方法收到的令牌工作正常,没有任何问题。 Azure 流式日志非常棒。

更新

我创建了一个新问题,并通过逐步解释给出了答案。 How to add simple authentication to azure mobile/web apps with Azure Active Directory?

【讨论】:

    【解决方案2】:

    我已在我的博文中回答,但我也将其放在这里供任何人查看。

    为什么要直接调用端点? SDK 客户端应该处理所有这些(如他们的教程所示:https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-xamarin-ios-get-started-users/

    我认为通过直接调用 AD 来重新实现轮子不是一个好主意。服务器有一个回调机制可以从 AD 获取该令牌,我认为这是这里缺少的。

    【讨论】:

    • 我不想使用 SDK,因为我正在尝试通过使用 Fussilade、Refit 等来实现弹性网络服务。(arteksoftware.com/resilient-network-services-with-xamarin)。作为其中的一部分,我使用 httpClient 而不是 MobileServiceClient 来执行我的所有网络调用。这就是我直接使用端点的原因。
    【解决方案3】:

    您是否查看过 GitHub 上用于 ObjectiveC 的 Azure ActiveDirectory 库的示例? https://github.com/AzureAD/azure-activedirectory-library-for-objc

    这里有一些很好的例子和资源可以帮助你:)

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 2017-05-05
      相关资源
      最近更新 更多