Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Python Web API进行Azure AD身份验证_Python_Azure_Active Directory_Azure Active Directory_Azure Authentication - Fatal编程技术网

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

通过Python Web API进行Azure AD身份验证,python,azure,active-directory,azure-active-directory,azure-authentication,Python,Azure,Active Directory,Azure Active Directory,Azure Authentication,我正在构建一个PythonWebAPI,我想在其中使用Azure AD作为身份验证后端。在某些场景中,客户端需要通过API进行身份验证,以授权给某些端点。客户端本身无法直接向AD进行身份验证,因此需要使用原始凭据(用户名、密码)通过API进行身份验证。API随后将对用户进行身份验证,并接收AD令牌并将其提供给用户 因此,简而言之,我正在寻找一种方法,以编程方式使用用户名/密码对用户进行身份验证,并使用Python接收令牌。您所描述的是OAuth 2流 注意:使用此流程通常是一个非常糟糕的主意,应

我正在构建一个PythonWebAPI,我想在其中使用Azure AD作为身份验证后端。在某些场景中,客户端需要通过API进行身份验证,以授权给某些端点。客户端本身无法直接向AD进行身份验证,因此需要使用原始凭据(用户名、密码)通过API进行身份验证。API随后将对用户进行身份验证,并接收AD令牌并将其提供给用户


因此,简而言之,我正在寻找一种方法,以编程方式使用用户名/密码对用户进行身份验证,并使用Python接收令牌。

您所描述的是OAuth 2流

注意:使用此流程通常是一个非常糟糕的主意,应该考虑其他流程

您在这里所做的是将包含明文用户凭据的POST请求直接发送到身份验证端点。这样就绕过了所有可能增加的安全性

而且,当

  • 已为用户启用MFA
  • 用户是联合用户或MS帐户
  • 此流无法处理过期密码
  • 如果可能,考虑其他一些授权流程,例如

    • 授权代码流
    • 隐性赠款流动
    • 客户端凭据流
    • 设备身份验证流

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

    您可以在此处找到与应用程序类型和拓扑相关的不同身份验证流。如果选择实现,本文将链接到认证流的协议概述

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

    根据您的场景,您有几个选择。如果您的客户端应用程序可以直接通过Azure AD进行身份验证,您可以查看。如果您的应用程序需要用户进行身份验证,并且可以让用户以交互方式进行身份验证,则可以查看此项。最后,如果您必须在应用程序中使用用户的凭据以编程方式进行身份验证(无需用户交互),则可以参考资源所有者密码流,但不鼓励这样做,如另一个答案中所述