小编典典

使用Azure Active Directory进行身份验证-如何以编程方式接受用户凭据

python

有什么方法可以使用我自己的用户名和密码页面通过Web应用程序或Web API登录到Azure Active Directory(具有AD凭据)吗?

根据我的调查,似乎没有通过编程的方式发送用户名和密码来使用Azure
AD对用户进行身份验证(如果您在Azure之外托管了一个应用程序)不知道他们是否认为这是某种安全漏洞(我不认为这强制执行https吗?)

似乎您只能通过执行代码授权来对用户进行身份验证(这意味着弹出我们的应用程序以登录到外部网站)。

最终,我想创建一个可以根据需要直接针对Azure AD进行身份验证的python flask API。我过去(使用其他身份验证系统)使用Oauth
grant_type = password来发送用户名和密码来完成此操作,但是我认为Azure
AD不支持此功能(如果我输入错了,请改正我吗?)但这似乎是它为服务身份验证提供的服务,在http://msdn.microsoft.com/zh-
CN/library/azure/dn645543.aspx之后,它不是即时消息。

如果无法在Azure外部托管登录页面,是否甚至可以在Azure内部托管登录页面,如此处示例所示:http :
//msdn.microsoft.com/zh-cn/library/azure /
bc8af4ff-66e7-4d5b-b3d4-c33d2c55d270#BKMK_Browser
没有带有密码字段的自定义登录页面..(似乎只有打开的id登录)


阅读 217

收藏
2020-12-20

共1个答案

小编典典

资源所有者密码凭据格兰特grant_type=password)流
通过Azure的Active Directory的支持。但是,在使用它之前,请考虑是否确实需要它。如OAuth 2.0 RFC中所述:

资源所有者的密码凭据(即用户名和密码)可以直接用作获得访问令牌的授权授予。仅当资源所有者和客户端之间存在高度信任时(例如,客户端是设备操作系统或高度特权的应用程序的一部分),
并且其他授权授予类型不可 用时,才应使用凭据 (例如授权码)

如果您确定其他支持的流程对于您的情况绝对不可用,那么还请确保遵循RFC中的第二点建议:

即使此授予类型要求客户端直接访问资源所有者凭证,资源所有者凭证也用于单个请求,并交换访问令牌。 通过与长期访问令牌或刷新令牌交换凭据,
此授予类型可以 消除客户端存储资源所有者凭据以供将来使用的需求

(在两种情况下都增加了重点。)

GitHub上有一个使用此流程的.NET和ADAL示例,应该足够简单以在Python中实现:https//github.com/AzureADSamples/NativeClient-Headless-
DotNet

编辑:您可以在任何位置托管应用程序,而不必在Azure上。这适用于所有流程。

2020-12-20