用于AuthenticationToken的Azure应用服务POST访问令牌对除Facebook以外的所有内容都失败

时间:2016-06-05 23:47:44

标签: azure azure-web-sites azure-web-app-service

根据文件(documentation):

  

您的应用程序可以通过将用户导航到您网站的/.auth/login/端点来触发相同的重定向,其中包括aad,facebook,google,microsoftaccount和twitter之一。此选项非常适合具有登录按钮和许多移动应用程序的网站。

     

或者,客户端可以使用提供程序SDK获取令牌并将其交换为会话令牌。只需使用密钥“access_token”(或Microsoft Account的“authenticationToken”)下的JSON正文中的提供者令牌将HTTP POST提交到同一端点。如果平台上提供了SDK,那么这是移动应用程序的首选解决方案,它也适用于许多Web和API应用程序。

我发现 ONLY 适用于facebook令牌。通过点击正常的/.auth/login/{provider}端点,我可以通过google,facebook,twitter和microsoft帐户进行身份验证。但是,如果您尝试从.auth / me端点或从HTTP标头(例如X-MS-TOKEN-GOOGLE-ACCESS-TOKEN等)发现的结果标记POST,则POST端点仅适用于Facebook。 / p>

我发现了以下内容:

  • Google - 您将获得HTTP / 1.1 400' authorization_code'字段是必需的。如果您按照文档。但是在更改" access_token" name to" authorization_code"导致500内部服务器错误
  • Twitter - 文档中未公开需要" access_token_secret"有效负载中的值除了" access_token"值。但是包含这个只会导致未经授权的401结果 - 这似乎是一个错误,因为facebook有效负载工作,所以控制器不应该已经要求auth
  • Microsoft帐户 - 与Twitter相同的未经授权的401错误。

1 个答案:

答案 0 :(得分:0)

遗憾的是,缺少客户端登录的文档。请查看以下帖子,了解使用客户端定向流程时Google登录的工作原理:

Azure App Service Authentication with Google oAuth 2.0 Bearer Token

特别是,您需要在JSON有效内容中发送 id_token authorization_code 值。这些值必须作为用户登录的一部分从Google获取。