通过 restful api 进行 Azure AD 身份验证

Posted

技术标签:

【中文标题】通过 restful api 进行 Azure AD 身份验证【英文标题】:Azure AD Authentication through restful api 【发布时间】:2021-06-19 17:21:07 【问题描述】:

我现在正在通过这两个示例使用 Azure AD 身份验证,并且一切正常:

Sample1 Sample2

但是有什么方法可以使用如下所示的 RESTful API 对 Azure AD 进行身份验证?

POST https://loginmicrosoft/XXXXXX
Body 

    "username":"YOURACCOUNT",
    "password":"YOURPASSWORD"

我想使用这种方式的原因是因为我们有自己的登录页面并希望与 Azure AD 集成。

【问题讨论】:

【参考方案1】:

是的,你可以。它在 OAuth 2.0 中使用资源所有者密码凭证授权来调用。但是,从 OAuth 2.1 开始,它不再是有效的流程,Microsoft 建议您不要使用它。在此处查看他们的文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc

OAuth 2.1 整合了后续规范中发布的更改以简化核心文档。

与 OAuth 2.0 的主要区别如下所示。

使用授权代码流的所有 OAuth 客户端都需要 PKCE 必须使用精确的字符串匹配来比较重定向 URI 本规范省略了隐式授权 (response_type=token) 本规范省略了资源所有者密码凭据授予 不记名令牌使用省略了在 URI 的查询字符串中使用不记名令牌 公共客户端的刷新令牌必须受发件人限制或一次性使用

如果您有自己的登录页面,为什么不在 Azure AD 上进行重定向或托管您的登录页面?

【讨论】:

感谢您的回答! “如果您有自己的登录页面,为什么不在 Azure AD 上进行重定向或托管您的登录页面?”,因为我们的登录页面也是在 OAuth 2.0 流程中设计的,所以我们只是想知道如何将我们的登录方法与 Azure 集成AD 但不重定向到 Azure AD 登录页面。 顺便说一句,由于我们的帐户在一个组织(公司)下,我们也可以使用 ROPC 流程吗?

以上是关于通过 restful api 进行 Azure AD 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Azure blob 批量删除无法使用 rest API 删除多个文件

REST Api 使用访问密钥到 Azure Blob 存储

Azure Application Insights REST API使用教程

使用 REST API 上传到 Azure Blob 存储时,Zip 档案损坏

通过 APIM 使用 Azure 功能的 REST URL

通过 Obj-c 查询 REST API 时出现 Azure DocumentDB 间歇性 401 错误