使用移动应用中的AAD自定义登录验证Azure应用服务

时间:2018-03-01 05:21:07

标签: azure azure-active-directory azure-mobile-services

我为移动应用创建了应用服务。然后我已将身份验证添加到应用服务。然后选择身份验证类型为"使用Azure AD"登录。它工作正常。

是否可以使用自定义登录页面而不是基于浏览器的登录屏幕?

我可以使用https://login.microsoftonline.com/ / oauth2 / token获取令牌。但是无法使用此承载令牌授权应用服务。

3 个答案:

答案 0 :(得分:1)

  

是否可以使用自定义登录页面而不是基于浏览器   登录界面?

此页面是AzureAD的身份验证终结点。虽然它可以通过公司品牌进行配置,但我认为它不能为Moblie APP自行定制。

  

我能够通过使用获得令牌   https://login.microsoftonline.com//oauth2/token。但是不能   使用此承载令牌授权应用服务。

Web应用程序的身份验证/授权是保护Web App隐藏在这些IDP背后的功能,而不仅仅是您可以使用REST API访问它的其他azure资源。我明白你想做什么。但不建议或不支持此操作。

答案 1 :(得分:1)

  

我可以使用https://login.microsoftonline.com//oauth2/token获取令牌。但是无法使用此承载令牌授权应用服务。

当juunas回答时,您的令牌可能与您在Azure门户上配置的AAD提供商不匹配。您可以按here检查配置的详细信息。此外,您可以使用https://jwt.io/解码access_token并验证相关属性(例如,aud应该是您在Azure门户上配置的clientId等。)

由于App Service Authentication / Authorization(EasyAuth)声明如下:

  

通过网络浏览器与您的应用程序交互的用户将设置一个cookie,以便他们在浏览您的应用程序时可以保持身份验证。对于其他客户端类型(例如移动设备),应在X-ZUMO-AUTH标头中显示的JSON Web令牌(JWT)将发布给客户端。移动应用客户端SDK将为您处理此问题。 或者,Azure Active Directory标识令牌或访问令牌可以作为承载令牌直接包含在Authorization标头中。

对于Azure Web App或Azure移动应用程序,您可以按如下方式访问端点:

https://{your-app-name}.azurewebsites.net/api/values
Header: Authorization:Bearer {the id_token or access_token of AAD}

或者

https://{your-app-name}.azurewebsites.net/api/values
Header: x-zumo-auth:{authenticationToken}

此外,如果您在移动应用中检索access_token,您还可以使用它来检索authenticationToken并使用authenticationToken与后端端点进行通信。

POST https://{your-app-name}.azurewebsites.net/.auth/login/{provider-name,for your scenario, it would be AAD}
Body: {"access_token":"<your-access-token>"}

对于您的移动客户端,您可以将客户端用于Azure移动应用,您可以关注here的详细信息。此外,您可以按照Authenticate users了解App Service身份验证的客户端流和服务器流身份验证。

答案 2 :(得分:0)

正如Wayne Yang所说,登录页面的自定义仅限于徽标和一些文本。

我不确定您是否可以使用API​​的“Easy Auth”。 您可能需要在应用中实际执行身份验证。

在这种情况下,您的API将验证传入的JSON Web令牌,以使其签名有效,并且受众和发行者是预期的。 大多数框架都提供JWT身份验证,因此它主要归结为正确配置。