繁体   English   中英

Django 应用程序与 Azure AD 帐户身份提供商部署到 Azure Web 应用程序服务失败

[英]Django app with Azure AD account identity provider deployment to Azure Web app service fails

背景

我正在尝试按照Microsoft 教程将 Django web 应用程序部署为 Azure AD 作为帐户身份提供者到 Azure Web 应用程序服务。

我的应用程序已在 Azure AD 门户网站上注册。 它在localhost上的开发中运行良好。

问题

但是,当我将它部署到 Azure Web 应用程序服务时,它失败了,因为它请求以http开头的重定向 URI,而 Azure AD 要求任何非本地主机服务器必须具有以https开头的重定向 URI。 具体来说,它请求重定向 URI 为http://myapp.com/auth/redirect 但是,我只能在 Azure AD 中注册 URI https://myapp.com/auth/redirect

此问题已在相关的Stackoverflow 问题中得到解决

给出的解决方案是“使用./manage.py runserver_plus --cert /tmp/cert localhost:8000运行服务器”。

这在localhost上运行良好,但我无法将其部署到 Azure web 应用程序服务。

我存储在.github/workflows/deploy_on_<myapp>.yml中的部署文件的部署作业定义如下:

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: python-app
          path: .
          
      - name: 'Deploy to Azure Web App'
        uses: azure/webapps-deploy@v2
        id: deploy-to-webapp
        with:
          app-name: 'fno-calculator'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_<secret> }}

问题

  • 我应该如何使用自定义命令部署我的 Django web 应用程序./manage.py runserver_plus --cert /tmp/cert localhost:8000到 Azure web 应用程序服务?

  • 还有另一种方法可以使用 Azure AD 部署我的 Django web 应用程序,该应用程序请求使用https而不是http的重定向 URI 吗?

我试过的

修改部署文件运行:

      - name: 'Deploy to Azure Web App'
        run: ./manage.py runserver_plus --cert /tmp/cert <servername>:<port_id>

预期结果

预期部署成功并且应用程序处于活动状态。

实际结果

部署失败,出现错误Cannot assign requested address

似乎不需要自定义启动命令。

只需按照此答案中发布的说明进行操作即可。

对于生产设置,仅添加 SECURE_SSL_REDIRECT 即可解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM