【问题标题】:How to secure my Flask app using a certificate and MSAL?如何使用证书和 MSAL 保护我的 Flask 应用程序?
【发布时间】:2021-09-23 21:33:34
【问题描述】:

我为员工自助服务门户创建了一个 python-Flask 网站。我已经在我的公司 Azure AD 租户中注册了它。我将把它部署到单个节点(它是一个低流量站点),我想用证书保护它,因为它会提取我们的 AD 凭据和单点登录会话信息。

我在这里下载了示例代码:https://github.com/Azure-Samples/ms-identity-python-webapp

经过一些工作后,我设法以此为指导重新编写了我的网站,现在我可以在笔记本电脑上使用 SSO 进行身份验证了!

为了尝试将其部署到服务器,我遵循了 DigitalOcean 的指南:https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04

现在的问题是:如何将它部署到服务器?我需要在 Azure 的身份验证选项卡中注册新的 url:完成。我正在使用 https:// 和 https://

现在的问题是:如何让 Azure 在服务器上识别我的应用程序?如果我尝试登录,我只会收到一条错误消息:“AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:”。

编辑:我发现了一些东西。在我查询 Azure 的 URL 中,发送的返回 URI 是:https://login.microsoftonline.com//oauth2/v2.0/authorize?client_id=&response_type=code&redirect_uri=http%3A%2F%2F%2FgetAtoken&scope=User .ReadBasic.All+offline_access+openid+profile&state=SpOcEwhzdGBXxMsv&code_challenge=

它将 URL 发送为 http,而不是 https!

【问题讨论】:

    标签: python python-3.x flask certificate msal


    【解决方案1】:

    要部署到服务器,您需要将证书身份添加到客户端并授予客户端访问应用程序中 Web 服务调用的权限。阅读有关证书here 的更多信息。要让 Azure 在服务器上识别您的应用程序,您需要首先在 Azure AD 中register您的应用程序。

    在尝试登录已与 Azure Active Directory (Azure AD) 集成的基于 SAML 的单点登录 (SSO) 配置的应用程序时,也会出现错误 AADSTS50011。尝试登录已设置为使用 Azure AD 使用基于 SAML 的 SSO 进行身份管理的应用程序时收到错误 AADSTS50011。了解更多here

    【讨论】:

    • 在 app_config.py 的 REDIRECT_URI 中,我有我的应用程序的完整 URL: https:// 。使用该应用程序甚至不会启动。如果我使用 /getAToken 它会,但这会引发我在登录时看到的错误。
    • 您好,感谢您的回复。你能分享你实现这个功能的代码吗?
    • 我已经退回到使用主仓库中的代码:github.com/Azure-Samples/ms-identity-python-webapp。我对代码所做的唯一更改是将我的应用程序 ID 和客户端密码添加到 app_config.py 文件中。在 azure.microsoft.com 中,我向 App Registration -> Myapp -> Authentication 选项卡添加了三个 URL:https://、https:///getAToken 和 https:///登录。
    • 在使用 MSAL 配置应用程序或注册应用程序时,您可能会遗漏一些东西。
    • 是的,不开玩笑。我想知道在 NGINX 后面运行的应用程序是否有问题。在 python 中配置的基本 url 是 0.0.0.0。但是整个事情都在 NGINX 后面运行所以我认为使用服务器的 URI 没有问题。
    【解决方案2】:

    我发现了我的问题。在我需要添加的 nginx.conf 文件中:

    proxy_set_header X-Forwarded-Proto $scheme;
    

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多