Azure移动应用MSA身份验证困难

Azure移动应用MSA身份验证困难,azure,authentication,azure-mobile-services,microsoft-account,Azure,Authentication,Azure Mobile Services,Microsoft Account,因此,我正在进行一个项目,将以前作为Azure移动服务托管的应用程序重新部署为Azure移动应用程序。该应用程序有一个前端(作为Azure中的Web应用程序托管)和后端API(这是移动应用程序),直接从前端的javascript调用。升级一直进行得很顺利,直到我开始处理Microsoft帐户身份验证部分。按照 …事情进展顺利。我的应用程序已在Microsoft帐户开发人员中心注册,我指定了一个重定向URI,格式为https://{{My_backend\u mobile\u app\u na

因此,我正在进行一个项目,将以前作为Azure移动服务托管的应用程序重新部署为Azure移动应用程序。该应用程序有一个前端(作为Azure中的Web应用程序托管)和后端API(这是移动应用程序),直接从前端的javascript调用。升级一直进行得很顺利,直到我开始处理Microsoft帐户身份验证部分。按照

  • …事情进展顺利。我的应用程序已在Microsoft帐户开发人员中心注册,我指定了一个重定向URI,格式为https://{{My_backend\u mobile\u app\u name}}.azurewebsites.net/.auth/login/microsoftaccount/callback,我使用Microsoft帐户开发人员中心的ClientId/Secret在Azure中的移动应用程序的相应刀片中配置了Microsoft身份验证/授权。当我测试它时,一切都进行得很顺利:我可以转到应用程序的前端,单击“登录”按钮,一个新窗口打开,显示Microsoft的登录。Live站点会提示我使用Microsoft帐户登录,我成功地这样做了,并被重定向到Microsoft帐户开发人员中心中指定的重定向URL,它在查询字符串中附加了代码和状态值

    但是,当我被重定向时显示的页面有一个“您没有查看此目录或页面的权限”。如果我复制URL,打开一个新选项卡,粘贴它,然后按enter键,我将进入“You have successfully signed in”(您已成功登录)页面。但这两种方式都不会让我回到应用程序的前端,在那里它会让我登录并继续进入该站点,因为在为登录打开的新窗口中,一切仍在发生。如果我关闭该窗口,身份验证过程会将其视为“取消”登录,并要求我再次登录(这只是重复上述过程)。如果我让窗口保持打开状态,然后带着我的前端站点返回窗口,它仍在等待登录过程的响应

    这就引出了我的主要问题:如何让Microsoft帐户身份验证过程将登录响应返回到我的前端站点而不是登录窗口


    另外,我已经将前端和后端的SDK从移动服务更新为移动应用。为此,我必须在我的后端应用程序中添加一个OWIN中间件(按照上面链接#1中的说明,在“更新服务器项目”标题下)。我目前的假设是,这个OWIN中间件没有正确配置身份验证,并且阻碍了回调的正常工作;因此,我正在处理
    app.UseAppServiceAuthentication(新的AppServiceAuthenticationOptions())

    根据您的描述,我假设您正在使用Azure移动应用程序的JavaScript客户端库。我在当地检查了这个问题,发现我可能会遇到与您提到的相同的问题,如下所示:

    然后我尝试将其部署到azure web app(),我发现它可以按如下方式工作:

    在网上搜索之后,我发现了一个类似的问题,并参考了这篇关于修复Ripple问题的文章。我登录azure portal并选择我的移动应用程序,然后单击“所有设置>CORS”,为我的本地web应用程序添加URL,如下所示:

    然后,单击“设置>身份验证/授权”,添加允许的外部重定向URL,如下所示:

    基于上述设置,它可以在我的本地端按预期工作,如下所示:


    我之前已经包含了CORS,但正是“允许的外部重定向URL”让我挂断了电话。谢谢你的帮助@BruceChen!