Azure AD Auth for Mobile Apps?

时间:2016-01-18 04:40:46

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

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

经过10个小时的尝试,我仍然无法想办法让他上班。

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

我已使用[授权]标记保护我的[MobileAppController]。

测试我是否已请求令牌

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

我已收到令牌但使用它来访问(POSTMAN app)

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

正在给我一个

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

任何帮助都将不胜感激。

谢谢...

3 个答案:

答案 0 :(得分:1)

我在我的博客文章中回答,但我也把它放在这里供任何人看。

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

好吧,经过几个小时的可怕挫折,我找到了答案。感谢评论@ 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?