首页 文章

通过Python Web API进行Azure AD身份验证

提问于
浏览
0

我正在构建一个Python Web API,我想使用Azure AD作为身份验证后端 . 在某些情况下,客户端需要通过API进行身份验证以授权某些 endpoints . 客户端本身无法直接向AD进行身份验证,因此需要使用原始凭据(用户名,密码)通过API进行身份验证 . 然后,API将对用户进行身份验证并接收AD令牌并将其提供给用户 .

所以简而言之,我正在寻找一种方法,使用用户名/密码以编程方式验证用户,并使用Python接收令牌 .

2 回答

  • 0

    您所描述的是OAuth 2 Resource Owner Password Credentials Grant流程 .

    Note: 使用这个通常是一个非常糟糕的主意,应该考虑其他一些流程 .

    你在这里做的是将包含明文的用户凭证的POST请求直接发送到认证 endpoints . 因此,绕过可能实施的所有可能增加的安全性 .

    此外,它不会起作用

    • 为用户启用了MFA

    • 用户是联盟或MS帐户

    • 此流无法处理过期的密码

    如果可能,请考虑其他一些授权流程,例如,

    • 授权代码流程

    • 隐式授权流程

    • 客户端凭据流

    • 设备认证流程

    请参阅this链接以帮助您选择要使用的流 .

  • 0

    您可以在Azure AD article中找到与应用程序类型和拓扑相关的不同身份验证流程 . 如果您选择实施,本文将链接到身份验证流程的协议概述 .

    还有用于Azure AD的ADAL Python auth库,您可以使用它来执行这些流程 .

    根据您的方案,您有几个选择 . 如果您的客户端应用程序可以直接使用Azure AD进行身份验证,则可以查看client credentials flow sample . 如果您的应用程序需要用户进行身份验证并且可以让用户以交互方式进行身份验证,则可以查看此auth code flow sample . 最后,如果您必须使用用户的凭据在应用程序中以编程方式进行身份验证(无需用户交互),则可以参考资源所有者密码流,但不会像其他答案中所述那样鼓励这样做 .

相关问题