有什么方法可以使用我自己的用户名和密码页面通过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登录)
在资源所有者密码凭据格兰特(grant_type=password)流 是 通过Azure的Active Directory的支持。但是,在使用它之前,请考虑是否确实需要它。如OAuth 2.0 RFC中所述:
grant_type=password
资源所有者的密码凭据(即用户名和密码)可以直接用作获得访问令牌的授权授予。仅当资源所有者和客户端之间存在高度信任时(例如,客户端是设备操作系统或高度特权的应用程序的一部分), 并且其他授权授予类型不可 用时,才应使用凭据 (例如授权码) 。
如果您确定其他支持的流程对于您的情况绝对不可用,那么还请确保遵循RFC中的第二点建议:
即使此授予类型要求客户端直接访问资源所有者凭证,资源所有者凭证也用于单个请求,并交换访问令牌。 通过与长期访问令牌或刷新令牌交换凭据, 此授予类型可以 消除客户端存储资源所有者凭据以供将来使用的需求 。
(在两种情况下都增加了重点。)
GitHub上有一个使用此流程的.NET和ADAL示例,应该足够简单以在Python中实现:https://github.com/AzureADSamples/NativeClient-Headless- DotNet
编辑:您可以在任何位置托管应用程序,而不必在Azure上。这适用于所有流程。